mod-build 4.0.78 → 4.0.79
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +4 -0
- package/package.json +1 -1
- package/src/resources/data/tcpa.json +4 -0
- package/src/resources/templates/modals/about/index.hbs +9 -0
- package/src/resources/templates/modals/about/index.html +9 -0
- package/src/resources/templates/modals/contact-us/index.hbs +348 -0
- package/src/resources/templates/modals/contact-us/index.html +348 -0
- package/src/resources/templates/modals/e-sign-consent/index.hbs +35 -0
- package/src/resources/templates/modals/e-sign-consent/index.html +35 -0
- package/src/resources/templates/modals/faq/index.hbs +9 -0
- package/src/resources/templates/modals/faq/index.html +9 -0
- package/src/resources/templates/modals/privacy/index.hbs +238 -0
- package/src/resources/templates/modals/privacy/index.html +238 -0
- package/src/resources/templates/modals/terms/index.hbs +166 -0
- package/src/resources/templates/modals/terms/index.html +166 -0
- package/tasks/grab-b2b-data.js +110 -0
- package/tasks/serve.js +2 -0
|
@@ -0,0 +1,348 @@
|
|
|
1
|
+
<div class="contact-us">
|
|
2
|
+
<div class="contact-us__container">
|
|
3
|
+
<form class="contact-us__form">
|
|
4
|
+
<div class="step step--active" aria-hidden="false" tabindex="-1" aria-labelledby="contact-step-one-header">
|
|
5
|
+
<span id="contact-step-one-header" class="visually-hidden">Step 1: Select the radio button option that suits your inquiry.</span>
|
|
6
|
+
<div class="step__header">
|
|
7
|
+
<p class="step__header-number">
|
|
8
|
+
Step 1
|
|
9
|
+
</p>
|
|
10
|
+
<p class="step__header-text">
|
|
11
|
+
Select an option that suits your inquiry
|
|
12
|
+
</p>
|
|
13
|
+
</div>
|
|
14
|
+
<div class="step__content">
|
|
15
|
+
<div class="step__content-item">
|
|
16
|
+
<picture>
|
|
17
|
+
<source srcset="https://modernize.com/quote/resources/assets/images/illustrations/misc/handshake.webp" type="image/webp">
|
|
18
|
+
<img class="step__image" src="https://modernize.com/quote/resources/assets/images/illustrations/misc/handshake.jpg" alt="">
|
|
19
|
+
</picture>
|
|
20
|
+
<div class="step__fieldset">
|
|
21
|
+
<fieldset>
|
|
22
|
+
<legend>Partnerships</legend>
|
|
23
|
+
<div class="field">
|
|
24
|
+
<input type="radio" name="topic" value="SF_partnerships" id="SF_partnerships">
|
|
25
|
+
<label for="SF_partnerships">Publisher/Media Partnership</label>
|
|
26
|
+
</div>
|
|
27
|
+
<div class="field">
|
|
28
|
+
<input type="radio" name="topic" value="SF_advertisers" id="SF_advertisers">
|
|
29
|
+
<label for="SF_advertisers">Advertisers</label>
|
|
30
|
+
</div>
|
|
31
|
+
</fieldset>
|
|
32
|
+
</div>
|
|
33
|
+
</div>
|
|
34
|
+
<div class="step__content-item">
|
|
35
|
+
<picture>
|
|
36
|
+
<source srcset="https://modernize.com/quote/resources/assets/images/illustrations/misc/presentation.webp" type="image/webp">
|
|
37
|
+
<img class="step__image" src="https://modernize.com/quote/resources/assets/images/illustrations/misc/presentation.jpg" alt="">
|
|
38
|
+
</picture>
|
|
39
|
+
<div class="step__fieldset">
|
|
40
|
+
<fieldset>
|
|
41
|
+
<legend>Website Content, Data, Technical Issues</legend>
|
|
42
|
+
<div class="field">
|
|
43
|
+
<input type="radio" name="topic" value="reprint-permissions" id="reprint-permissions">
|
|
44
|
+
<label for="reprint-permissions">Reprint Permissions</label>
|
|
45
|
+
</div>
|
|
46
|
+
<div class="field">
|
|
47
|
+
<input type="radio" name="topic" value="technical-site-issue" id="technical-site-issue">
|
|
48
|
+
<label for="technical-site-issue">Technical Issues with Website</label>
|
|
49
|
+
</div>
|
|
50
|
+
</fieldset>
|
|
51
|
+
</div>
|
|
52
|
+
</div>
|
|
53
|
+
<div class="step__content-item">
|
|
54
|
+
<picture>
|
|
55
|
+
<source srcset="https://modernize.com/quote/resources/assets/images/illustrations/misc/man-on-couch.webp" type="image/webp">
|
|
56
|
+
<img class="step__image" src="https://modernize.com/quote/resources/assets/images/illustrations/misc/man-on-couch.jpg" alt="">
|
|
57
|
+
</picture>
|
|
58
|
+
<div class="step__fieldset">
|
|
59
|
+
<fieldset>
|
|
60
|
+
<legend>Unsubscribe Requests</legend>
|
|
61
|
+
<div class="field">
|
|
62
|
+
<input type="radio" name="topic" value="email-opt-out" id="email-opt-out">
|
|
63
|
+
<label for="email-opt-out">Consumer Email Unsubscribe</label>
|
|
64
|
+
</div>
|
|
65
|
+
<div class="field">
|
|
66
|
+
<input type="radio" name="topic" value="phone-opt-out" id="phone-opt-out">
|
|
67
|
+
<label for="phone-opt-out">Consumer Phone Calls/Text Message Unsubscribe</label>
|
|
68
|
+
</div>
|
|
69
|
+
<div class="field">
|
|
70
|
+
<input type="radio" name="topic" value="general-inquiry" id="general-inquiry">
|
|
71
|
+
<label for="general-inquiry">Other Consumer Issues</label>
|
|
72
|
+
</div>
|
|
73
|
+
</fieldset>
|
|
74
|
+
</div>
|
|
75
|
+
<ul class="step__list">
|
|
76
|
+
<li>
|
|
77
|
+
<a href="https://privacy-central.securiti.ai/#/dsr/edc7a01c-b34c-43d4-8da8-127895e8bd71" target="_parent">California - Request to Know</a>
|
|
78
|
+
<a href="tel:8448727854">(844) 872-7854</a>
|
|
79
|
+
</li>
|
|
80
|
+
<li>
|
|
81
|
+
<a href="https://privacy-central.securiti.ai/#/dsr/edc7a01c-b34c-43d4-8da8-127895e8bd71" target="_parent">California - Request to Delete</a>
|
|
82
|
+
</li>
|
|
83
|
+
</ul>
|
|
84
|
+
</div>
|
|
85
|
+
</div>
|
|
86
|
+
</div>
|
|
87
|
+
<div class="step" aria-hidden="true" tabindex="-1" aria-labelledby="contact-step-two-header">
|
|
88
|
+
<span id="contact-step-two-header" class="visually-hidden">Step 2: Submit your contact info and we'll address your request ASAP. Press tab to begin entering your information.</span>
|
|
89
|
+
<div class="step__header">
|
|
90
|
+
<p class="step__header-number">
|
|
91
|
+
Step 2
|
|
92
|
+
</p>
|
|
93
|
+
<p class="step__header-text">
|
|
94
|
+
Submit your contact info and we'll address your request ASAP
|
|
95
|
+
</p>
|
|
96
|
+
</div>
|
|
97
|
+
<div class="step__content">
|
|
98
|
+
<div class="step__error"></div>
|
|
99
|
+
<div class="form-group parent-error">
|
|
100
|
+
<label for="contact-name">Name</label>
|
|
101
|
+
<input class="form-control" type="text" name="name" id="contact-name">
|
|
102
|
+
<span class="step__error-message" id="error-contact-name">Please enter your name.</span>
|
|
103
|
+
</div>
|
|
104
|
+
<div class="form-group parent-error">
|
|
105
|
+
<label for="contact-phone">Phone</label>
|
|
106
|
+
<input class="form-control" type="tel" name="phone" id="contact-phone">
|
|
107
|
+
<span class="step__error-message" id="error-contact-phone">Please enter a valid phone number.</span>
|
|
108
|
+
</div>
|
|
109
|
+
<div class="form-group parent-error">
|
|
110
|
+
<label for="contact-email">Email</label>
|
|
111
|
+
<input class="form-control" type="email" name="email" id="contact-email">
|
|
112
|
+
<span class="step__error-message" id="error-contact-email">Please enter a valid email address.</span>
|
|
113
|
+
</div>
|
|
114
|
+
<div class="form-group parent-error">
|
|
115
|
+
<label for="contact-message">Message</label>
|
|
116
|
+
<textarea class="form-control" name="message" id="contact-message"></textarea>
|
|
117
|
+
<span class="step__error-message" id="error-contact-message">Please enter your message.</span>
|
|
118
|
+
</div>
|
|
119
|
+
<div>
|
|
120
|
+
<input type="hidden" name="domain" value="{{domain}}">
|
|
121
|
+
<input type="hidden" name="date">
|
|
122
|
+
<input type="hidden" name="time">
|
|
123
|
+
<input type="hidden" name="vertical" value="HomeServices">
|
|
124
|
+
<input type="hidden" name="g-recaptcha-response" value="">
|
|
125
|
+
</div>
|
|
126
|
+
</div>
|
|
127
|
+
<div class="captcha-container captcha-body">
|
|
128
|
+
<div class="g-recaptcha" data-callback="captcha_submit" data-sitekey="6LcsGEkUAAAAAHekw-AS_6Vcu_WeYk7LiPJB1mrR"></div>
|
|
129
|
+
</div>
|
|
130
|
+
<div class="form-controls">
|
|
131
|
+
<button class="btn btn-secondary btn-back" type="button" aria-label="Back"></button>
|
|
132
|
+
<button class="btn btn-submit" type="submit">
|
|
133
|
+
<span class="btn__text">Submit</span>
|
|
134
|
+
<span class="btn__spinner"></span>
|
|
135
|
+
</button>
|
|
136
|
+
</div>
|
|
137
|
+
</div>
|
|
138
|
+
</form>
|
|
139
|
+
<div class="contact-us__thankyou" aria-hidden="true" tabindex="-1" aria-labelledby="contact-success-header">
|
|
140
|
+
<span id="contact-success-header" class="visually-hidden"> Thank you. We'll address your request as soon as possible.</span>
|
|
141
|
+
<picture>
|
|
142
|
+
<source srcset="https://modernize.com/quote/resources/assets/images/illustrations/misc/laptop.webp" type="image/webp">
|
|
143
|
+
<img class="contact-us__thankyou-img" src="https://modernize.com/quote/resources/assets/images/illustrations/misc/laptop.jpg" alt="">
|
|
144
|
+
</picture>
|
|
145
|
+
<p class="contact-us__thankyou-title">Thank You!</p>
|
|
146
|
+
<p class="contact-us__thankyou-subtitle">We'll address your request as soon as possible.</p>
|
|
147
|
+
</div>
|
|
148
|
+
</div>
|
|
149
|
+
</div>
|
|
150
|
+
<script src="https://www.google.com/recaptcha/api.js"></script>
|
|
151
|
+
<script>
|
|
152
|
+
window.captcha_submit = function(response) {
|
|
153
|
+
document.querySelector('input[name="g-recaptcha-response"]').value = response;
|
|
154
|
+
}
|
|
155
|
+
</script>
|
|
156
|
+
|
|
157
|
+
<script>
|
|
158
|
+
var contactUs = {
|
|
159
|
+
$modal: document.getElementById('info-modal'),
|
|
160
|
+
$form: document.querySelector('.contact-us__form'),
|
|
161
|
+
$thankyou: document.querySelector('.contact-us__thankyou'),
|
|
162
|
+
url: 'https://contact.formfetch.com/v2_submit',
|
|
163
|
+
getFormData: function() {
|
|
164
|
+
const date = new Date();
|
|
165
|
+
const data = {};
|
|
166
|
+
const inputs = this.$form.elements;
|
|
167
|
+
if (inputs) {
|
|
168
|
+
for (let i = 0; i < inputs.length; i++) {
|
|
169
|
+
const input = inputs[i];
|
|
170
|
+
if (input.name) {
|
|
171
|
+
data[input.name] = input.value;
|
|
172
|
+
}
|
|
173
|
+
}
|
|
174
|
+
}
|
|
175
|
+
|
|
176
|
+
data.time = date.toLocaleTimeString();
|
|
177
|
+
data.date = date.toLocaleDateString();
|
|
178
|
+
return data;
|
|
179
|
+
},
|
|
180
|
+
validateData: function(data) {
|
|
181
|
+
const _this = this;
|
|
182
|
+
var isFormValid = true;
|
|
183
|
+
const emailPattern = /^([\w\+-]+(?:\.[\w\+-]+)*)(@((?:[\w-]+\.)*\w[\w-]{0,66})\.([a-z]{2,6}(?:\.[a-z]{2})?)$)/i;
|
|
184
|
+
|
|
185
|
+
Object.keys(data).forEach(function(key) {
|
|
186
|
+
var isValid = true;
|
|
187
|
+
const value = data[key];
|
|
188
|
+
switch (key) {
|
|
189
|
+
case 'email':
|
|
190
|
+
isValid = emailPattern.test(value);
|
|
191
|
+
break;
|
|
192
|
+
default:
|
|
193
|
+
isValid = value !== '';
|
|
194
|
+
break;
|
|
195
|
+
}
|
|
196
|
+
|
|
197
|
+
if (!isValid) {
|
|
198
|
+
_this.markFieldAsInvalid(key);
|
|
199
|
+
_this.focusOnFirstError();
|
|
200
|
+
isFormValid = false;
|
|
201
|
+
}
|
|
202
|
+
});
|
|
203
|
+
|
|
204
|
+
return isFormValid;
|
|
205
|
+
},
|
|
206
|
+
focusOnFirstError: function() {
|
|
207
|
+
const $error = this.$form.querySelectorAll('.has-error');
|
|
208
|
+
|
|
209
|
+
if ($error.length > 0) {
|
|
210
|
+
const firstError = $error[0];
|
|
211
|
+
const $field = firstError.querySelector('input[type="text"], input[type="tel"], input[type="email"], textarea');
|
|
212
|
+
if ($field) {
|
|
213
|
+
$field.focus();
|
|
214
|
+
}
|
|
215
|
+
}
|
|
216
|
+
},
|
|
217
|
+
markFieldAsInvalid: function(fieldName) {
|
|
218
|
+
const $invalidField = this.$form.querySelector('#contact-' + fieldName);
|
|
219
|
+
if ($invalidField) {
|
|
220
|
+
$invalidField.parentElement.classList.add('has-error');
|
|
221
|
+
}
|
|
222
|
+
|
|
223
|
+
const $field = this.$form.querySelector('input[name="' + fieldName + '"]');
|
|
224
|
+
if ($field) {
|
|
225
|
+
$field.setAttribute('aria-invalid', 'true');
|
|
226
|
+
$field.setAttribute('aria-describedby', 'error-contact' + fieldName);
|
|
227
|
+
}
|
|
228
|
+
},
|
|
229
|
+
submit: function() {
|
|
230
|
+
this.$form.classList.add('form--loading');
|
|
231
|
+
|
|
232
|
+
const _this = this;
|
|
233
|
+
const data = this.getFormData();
|
|
234
|
+
const isFormValid = this.validateData(data);
|
|
235
|
+
const formData = Object.keys(data).map(function(key) {
|
|
236
|
+
return encodeURIComponent(key) + '=' + encodeURIComponent(data[key]).replace(/%20/g, '+');
|
|
237
|
+
}).join('&');
|
|
238
|
+
|
|
239
|
+
if (isFormValid) {
|
|
240
|
+
// Submit Form
|
|
241
|
+
var request = new XMLHttpRequest();
|
|
242
|
+
request.onreadystatechange = function() {
|
|
243
|
+
if (request.readyState === 4) {
|
|
244
|
+
if (request.status === 200) {
|
|
245
|
+
var response = JSON.parse(request.responseText);
|
|
246
|
+
if (response.success) {
|
|
247
|
+
_this.$form.style.display = 'none';
|
|
248
|
+
_this.$thankyou.style.display = 'block';
|
|
249
|
+
} else {
|
|
250
|
+
_this.$form.classList.remove('form--loading');
|
|
251
|
+
document.querySelector('.step__error').innerHTML = response.message;
|
|
252
|
+
}
|
|
253
|
+
} else {
|
|
254
|
+
console.error('Request failed with status:', request.status);
|
|
255
|
+
}
|
|
256
|
+
}
|
|
257
|
+
};
|
|
258
|
+
|
|
259
|
+
request.open('POST', _this.url, true);
|
|
260
|
+
request.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded; charset=UTF-8');
|
|
261
|
+
request.send(formData);
|
|
262
|
+
} else {
|
|
263
|
+
_this.$form.classList.remove('form--loading');
|
|
264
|
+
}
|
|
265
|
+
},
|
|
266
|
+
changeStep: function(direction) {
|
|
267
|
+
const $activeStep = this.$form.querySelector('.step--active');
|
|
268
|
+
const $nextStep = $activeStep.nextElementSibling;
|
|
269
|
+
const $prevStep = $activeStep.previousElementSibling;
|
|
270
|
+
|
|
271
|
+
$activeStep.classList.remove('step--active');
|
|
272
|
+
$activeStep.setAttribute('aria-hidden', 'true');
|
|
273
|
+
if (direction === 'next') {
|
|
274
|
+
$nextStep.classList.add('step--active');
|
|
275
|
+
$nextStep.setAttribute('aria-hidden', 'false');
|
|
276
|
+
$nextStep.focus();
|
|
277
|
+
} else {
|
|
278
|
+
$prevStep.classList.add('step--active');
|
|
279
|
+
$prevStep.setAttribute('aria-hidden', 'false');
|
|
280
|
+
$prevStep.focus();
|
|
281
|
+
}
|
|
282
|
+
},
|
|
283
|
+
watch: function() {
|
|
284
|
+
const _this = this;
|
|
285
|
+
var radioChangedWithMouse = false;
|
|
286
|
+
|
|
287
|
+
// Watch form submission
|
|
288
|
+
_this.$form.addEventListener('submit', function(e) {
|
|
289
|
+
e.preventDefault();
|
|
290
|
+
if (!_this.$form.classList.contains('form--loading')) {
|
|
291
|
+
_this.submit();
|
|
292
|
+
}
|
|
293
|
+
});
|
|
294
|
+
|
|
295
|
+
// Watch radio click with mouse only
|
|
296
|
+
const $radioLabelsAndInputs = _this.$form.querySelectorAll('fieldset label, input[type="radio"]');
|
|
297
|
+
$radioLabelsAndInputs.forEach(function(input) {
|
|
298
|
+
input.addEventListener('mouseup', function() {
|
|
299
|
+
radioChangedWithMouse = true;
|
|
300
|
+
});
|
|
301
|
+
})
|
|
302
|
+
|
|
303
|
+
const $radioInputs = _this.$form.querySelectorAll('input[type="radio"]');
|
|
304
|
+
$radioInputs.forEach(function(input) {
|
|
305
|
+
input.addEventListener('click', function(e) {
|
|
306
|
+
if (radioChangedWithMouse) {
|
|
307
|
+
_this.changeStep('next');
|
|
308
|
+
radioChangedWithMouse = false;
|
|
309
|
+
}
|
|
310
|
+
});
|
|
311
|
+
input.addEventListener('keypress', function(e) {
|
|
312
|
+
if(e.which == 13){
|
|
313
|
+
e.preventDefault();
|
|
314
|
+
_this.changeStep('next');
|
|
315
|
+
|
|
316
|
+
// Making sure radio button is actually selected on Enter
|
|
317
|
+
var focused = e.target;
|
|
318
|
+
if (!focused.checked) {
|
|
319
|
+
focused.checked = true;
|
|
320
|
+
}
|
|
321
|
+
}
|
|
322
|
+
})
|
|
323
|
+
});
|
|
324
|
+
|
|
325
|
+
// Watch back button
|
|
326
|
+
const $backBtn = _this.$form.querySelector('.btn-back');
|
|
327
|
+
if ($backBtn) {
|
|
328
|
+
$backBtn.addEventListener('click', function() {
|
|
329
|
+
_this.changeStep('prev');
|
|
330
|
+
});
|
|
331
|
+
}
|
|
332
|
+
|
|
333
|
+
// Remove error state when input/textarea changes
|
|
334
|
+
const $formInputs = _this.$form.querySelectorAll('input, textarea');
|
|
335
|
+
$formInputs.forEach(function(input) {
|
|
336
|
+
input.addEventListener('change', function() {
|
|
337
|
+
input.parentElement.classList.remove('has-error');
|
|
338
|
+
input.setAttribute('aria-invalid', 'false');
|
|
339
|
+
input.removeAttribute('aria-describedby');
|
|
340
|
+
});
|
|
341
|
+
});
|
|
342
|
+
},
|
|
343
|
+
init: function() {
|
|
344
|
+
this.watch();
|
|
345
|
+
}
|
|
346
|
+
};
|
|
347
|
+
contactUs.init();
|
|
348
|
+
</script>
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
<p><em>Last Updated: January 13, 2025</em></p>
|
|
2
|
+
<p><strong>PLEASE PRINT AND RETAIN A COPY OF THIS CONSENT AGREEMENT FOR YOUR RECORDS.</strong></p>
|
|
3
|
+
<p>You are submitting a request to engage with us for Services, which may include engagement with one or more of our partners. In so doing, you will be receiving certain Communications electronically. You are entitled, if you prefer, to receive information and provide necessary signatures via paper records, as described in more detail below.</p>
|
|
4
|
+
<p><strong>By providing your consent, you are agreeing to the use of electronic records and signatures in connection with your relationship with us and one or more of our partners. You are also agreeing and confirming that:</strong></p>
|
|
5
|
+
<ul class="unordered-list">
|
|
6
|
+
<li class="no-margin"><strong>You have reviewed this Consent Agreement,</strong></li>
|
|
7
|
+
<li class="no-margin"><strong>You have the hardware and software described below,</strong></li>
|
|
8
|
+
<li class="no-margin"><strong>You can receive and review electronic records, and</strong></li>
|
|
9
|
+
<li class="no-margin"><strong>You have an active email account and have provided the correct address to us.</strong></li>
|
|
10
|
+
</ul>
|
|
11
|
+
<p>In this consent, the words “we,” “us,” and “our” means QuinStreet, Inc. and each of our subsidiaries and brands, including but not limited to QuinStreet PL, Inc., AmOne, Modernize, Insure.com and 360 Finance. The words “you” and “your” means the person(s) giving consent.</p>
|
|
12
|
+
<p>“Communications” means each disclosure, notice, record, document or other information we provide to you, or that you sign or submit or agree to at our request, in connection with your relationship with us and any Service we provide.</p>
|
|
13
|
+
<p>“Service” or “Services” mean each and every product or service we offer, provide to you, or that you apply for, own, use, administer or access, either now or in the future.</p>
|
|
14
|
+
<ol class="ordered-list">
|
|
15
|
+
<li><strong>CONSUMER CONSENT.</strong> By providing your consent, you affirmatively consent and agree to receive electronically all Communications we provide to you, including any disclosures required by law. These Communications may be delivered to you via email or online at our partners’ websites. You further affirmatively consent that your electronic signature on agreements and documents has the same effect as if you signed them in ink.</li>
|
|
16
|
+
</ol>
|
|
17
|
+
<p>We may always, in our sole discretion unless law requires otherwise, provide you with any Communications in writing or send it to you via the U.S. mail or other means of delivery, even if you have chosen to receive it electronically. We may require any information you provide to us, or any document you sign, to be delivered to us in writing. You should print or download a copy of any electronic Communication we provide to you for your own records, including this Consent Agreement.</p>
|
|
18
|
+
<ol class="ordered-list" start="2">
|
|
19
|
+
<li><strong>SCOPE OF CONSENT.</strong> Your consent to receive Communications and to do business electronically applies to Communications related to all Services we may make accessible or available, or offer to you, whether through a website, software application, email, messaging services (including SMS/text messages), or otherwise. Your consent includes, but is not limited to, any request to be matched with our partners and any services provided by those partners. Your consent also applies to all online interactions between you and our partners, including those conducted via mobile devices.</li>
|
|
20
|
+
<li><strong>WHAT YOU NEED – HARDWARE AND SOFTWARE REQUIREMENTS.</strong> In order to access and retain the Communications electronically, you will need the following:
|
|
21
|
+
<ul class="unordered-list">
|
|
22
|
+
<li class="no-margin">Internet access through a current, compatible browser that includes at least 128-bit encryption</li>
|
|
23
|
+
<li class="no-margin">Access to an email account</li>
|
|
24
|
+
<li class="no-margin">Adobe Acrobat Reader</li>
|
|
25
|
+
<li class="no-margin">A printer or the ability to print the Communications</li>
|
|
26
|
+
<li class="no-margin">Long term storage device (such as your computer's disk drive) to retain a copy of the Communications</li>
|
|
27
|
+
<li class="no-margin">If you use a spam filter that blocks or re-routes emails from senders not listed in your email address book, you must add relevant QuinStreet email accounts to your email address book.</li>
|
|
28
|
+
</ul>
|
|
29
|
+
</li>
|
|
30
|
+
<li><strong>ACCESSIBILITY.</strong> If you are having problems viewing or accessing any Communications, please contact us via email to <a href="mailto:esignpaperrecords@quinstreet.com">esignpaperrecords@quinstreet.com</a> or by sending such request to QuinStreet, Inc., 950 Tower Lane, Floor 12, Foster City CA 94404, Attention: Legal-ESIGN.</li>
|
|
31
|
+
<li><strong>REQUESTING PAPER RECORDS.</strong> You may request a paper copy at of any Communication with us at no charge to you via email to <a href="mailto:esignpaperrecords@quinstreet.com">esignpaperrecords@quinstreet.com</a> or by sending such request to QuinStreet, Inc., 950 Tower Lane, Floor 12, Foster City CA 94404, Attention: Legal-ESIGN. Requests for paper copies of Communications with our partners should be made via the mechanisms found on their websites.</li>
|
|
32
|
+
<li><strong>WITHDRAWING YOUR CONSENT.</strong> You can withdraw your consent to any partner at any time by contacting the partner. You can withdraw your consent to QuinStreet by submitting an email to <a href="mailto:qs_compliance@quinstreet.com">qs_compliance@quinstreet.com</a> or by sending such request to QuinStreet, Inc., 950 Tower Lane, Floor 12, Foster City CA 94404, Attention: Legal-ESIGN. Your withdrawal of consent will become effective after we have had a reasonable opportunity to act upon it. By withdrawing your consent, your ability to use the Services may be adversely affected.</li>
|
|
33
|
+
<li><strong>CONTACT INFORMATION.</strong> We will not be able to communicate with you unless your contact information with us is current. You may update such information via the “Contact Us” link on our website. Our partners have similar features on their websites to enable you to keep your contact information current.</li>
|
|
34
|
+
<li><strong>LEGAL EFFECT.</strong> BY CLICKING “SUBMIT” OR A SIMILAR CALL-TO-ACTION BUTTON, YOU AGREE TO THESE TERMS. YOU ACKNOWLEDGE YOU HAVE READ THIS INFORMATION ABOUT ELECTRONIC SIGNATURES, RECORDS, DISCLOSURES, AND DOING BUSINESS ELECTRONICALLY. YOU CONSENT TO USING ELECTRONIC SIGNATURES, HAVING ALL DISCLOSURES PROVIDED OR MADE AVAILABLE TO YOU IN ELECTRONIC FORM AND TO DOING BUSINESS WITH US ELECTRONICALLY. YOU ACKNOWLEDGE THAT YOU MAY REQUEST A PAPER COPY OF THE ELECTRONIC RECORDS AND DISCLOSURES, WHICH WILL BE PROVIDED TO YOU AT NO CHARGE. IF YOU REFRAIN FROM PROCEEDING THEN YOU NEITHER WISH TO USE ELECTRONIC SIGNATURES NOR CONDUCT THIS TRANSACTION ELECTRONICALLY. YOU ALSO ACKNOWLEDGE THAT YOUR CONSENT TO ELECTRONIC DISCLOSURES IS REQUIRED TO RECEIVE SERVICES FROM OUR PARTNERS OVER THE INTERNET.</li>
|
|
35
|
+
</ol>
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
<p><em>Last Updated: January 13, 2025</em></p>
|
|
2
|
+
<p><strong>PLEASE PRINT AND RETAIN A COPY OF THIS CONSENT AGREEMENT FOR YOUR RECORDS.</strong></p>
|
|
3
|
+
<p>You are submitting a request to engage with us for Services, which may include engagement with one or more of our partners. In so doing, you will be receiving certain Communications electronically. You are entitled, if you prefer, to receive information and provide necessary signatures via paper records, as described in more detail below.</p>
|
|
4
|
+
<p><strong>By providing your consent, you are agreeing to the use of electronic records and signatures in connection with your relationship with us and one or more of our partners. You are also agreeing and confirming that:</strong></p>
|
|
5
|
+
<ul class="unordered-list">
|
|
6
|
+
<li class="no-margin"><strong>You have reviewed this Consent Agreement,</strong></li>
|
|
7
|
+
<li class="no-margin"><strong>You have the hardware and software described below,</strong></li>
|
|
8
|
+
<li class="no-margin"><strong>You can receive and review electronic records, and</strong></li>
|
|
9
|
+
<li class="no-margin"><strong>You have an active email account and have provided the correct address to us.</strong></li>
|
|
10
|
+
</ul>
|
|
11
|
+
<p>In this consent, the words “we,” “us,” and “our” means QuinStreet, Inc. and each of our subsidiaries and brands, including but not limited to QuinStreet PL, Inc., AmOne, Modernize, Insure.com and 360 Finance. The words “you” and “your” means the person(s) giving consent.</p>
|
|
12
|
+
<p>“Communications” means each disclosure, notice, record, document or other information we provide to you, or that you sign or submit or agree to at our request, in connection with your relationship with us and any Service we provide.</p>
|
|
13
|
+
<p>“Service” or “Services” mean each and every product or service we offer, provide to you, or that you apply for, own, use, administer or access, either now or in the future.</p>
|
|
14
|
+
<ol class="ordered-list">
|
|
15
|
+
<li><strong>CONSUMER CONSENT.</strong> By providing your consent, you affirmatively consent and agree to receive electronically all Communications we provide to you, including any disclosures required by law. These Communications may be delivered to you via email or online at our partners’ websites. You further affirmatively consent that your electronic signature on agreements and documents has the same effect as if you signed them in ink.</li>
|
|
16
|
+
</ol>
|
|
17
|
+
<p>We may always, in our sole discretion unless law requires otherwise, provide you with any Communications in writing or send it to you via the U.S. mail or other means of delivery, even if you have chosen to receive it electronically. We may require any information you provide to us, or any document you sign, to be delivered to us in writing. You should print or download a copy of any electronic Communication we provide to you for your own records, including this Consent Agreement.</p>
|
|
18
|
+
<ol class="ordered-list" start="2">
|
|
19
|
+
<li><strong>SCOPE OF CONSENT.</strong> Your consent to receive Communications and to do business electronically applies to Communications related to all Services we may make accessible or available, or offer to you, whether through a website, software application, email, messaging services (including SMS/text messages), or otherwise. Your consent includes, but is not limited to, any request to be matched with our partners and any services provided by those partners. Your consent also applies to all online interactions between you and our partners, including those conducted via mobile devices.</li>
|
|
20
|
+
<li><strong>WHAT YOU NEED – HARDWARE AND SOFTWARE REQUIREMENTS.</strong> In order to access and retain the Communications electronically, you will need the following:
|
|
21
|
+
<ul class="unordered-list">
|
|
22
|
+
<li class="no-margin">Internet access through a current, compatible browser that includes at least 128-bit encryption</li>
|
|
23
|
+
<li class="no-margin">Access to an email account</li>
|
|
24
|
+
<li class="no-margin">Adobe Acrobat Reader</li>
|
|
25
|
+
<li class="no-margin">A printer or the ability to print the Communications</li>
|
|
26
|
+
<li class="no-margin">Long term storage device (such as your computer's disk drive) to retain a copy of the Communications</li>
|
|
27
|
+
<li class="no-margin">If you use a spam filter that blocks or re-routes emails from senders not listed in your email address book, you must add relevant QuinStreet email accounts to your email address book.</li>
|
|
28
|
+
</ul>
|
|
29
|
+
</li>
|
|
30
|
+
<li><strong>ACCESSIBILITY.</strong> If you are having problems viewing or accessing any Communications, please contact us via email to <a href="mailto:esignpaperrecords@quinstreet.com">esignpaperrecords@quinstreet.com</a> or by sending such request to QuinStreet, Inc., 950 Tower Lane, Floor 12, Foster City CA 94404, Attention: Legal-ESIGN.</li>
|
|
31
|
+
<li><strong>REQUESTING PAPER RECORDS.</strong> You may request a paper copy at of any Communication with us at no charge to you via email to <a href="mailto:esignpaperrecords@quinstreet.com">esignpaperrecords@quinstreet.com</a> or by sending such request to QuinStreet, Inc., 950 Tower Lane, Floor 12, Foster City CA 94404, Attention: Legal-ESIGN. Requests for paper copies of Communications with our partners should be made via the mechanisms found on their websites.</li>
|
|
32
|
+
<li><strong>WITHDRAWING YOUR CONSENT.</strong> You can withdraw your consent to any partner at any time by contacting the partner. You can withdraw your consent to QuinStreet by submitting an email to <a href="mailto:qs_compliance@quinstreet.com">qs_compliance@quinstreet.com</a> or by sending such request to QuinStreet, Inc., 950 Tower Lane, Floor 12, Foster City CA 94404, Attention: Legal-ESIGN. Your withdrawal of consent will become effective after we have had a reasonable opportunity to act upon it. By withdrawing your consent, your ability to use the Services may be adversely affected.</li>
|
|
33
|
+
<li><strong>CONTACT INFORMATION.</strong> We will not be able to communicate with you unless your contact information with us is current. You may update such information via the “Contact Us” link on our website. Our partners have similar features on their websites to enable you to keep your contact information current.</li>
|
|
34
|
+
<li><strong>LEGAL EFFECT.</strong> BY CLICKING “SUBMIT” OR A SIMILAR CALL-TO-ACTION BUTTON, YOU AGREE TO THESE TERMS. YOU ACKNOWLEDGE YOU HAVE READ THIS INFORMATION ABOUT ELECTRONIC SIGNATURES, RECORDS, DISCLOSURES, AND DOING BUSINESS ELECTRONICALLY. YOU CONSENT TO USING ELECTRONIC SIGNATURES, HAVING ALL DISCLOSURES PROVIDED OR MADE AVAILABLE TO YOU IN ELECTRONIC FORM AND TO DOING BUSINESS WITH US ELECTRONICALLY. YOU ACKNOWLEDGE THAT YOU MAY REQUEST A PAPER COPY OF THE ELECTRONIC RECORDS AND DISCLOSURES, WHICH WILL BE PROVIDED TO YOU AT NO CHARGE. IF YOU REFRAIN FROM PROCEEDING THEN YOU NEITHER WISH TO USE ELECTRONIC SIGNATURES NOR CONDUCT THIS TRANSACTION ELECTRONICALLY. YOU ALSO ACKNOWLEDGE THAT YOUR CONSENT TO ELECTRONIC DISCLOSURES IS REQUIRED TO RECEIVE SERVICES FROM OUR PARTNERS OVER THE INTERNET.</li>
|
|
35
|
+
</ol>
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
<p>Below are answers to some of the more frequently asked questions we receive. If you do not see your question listed, please send us an email.</p>
|
|
2
|
+
<h2>How does this service work?</h2>
|
|
3
|
+
<p>We maintain a large network of home improvement professionals across the US. Once you have submitted your information to our system, we will instantly match you with local contractors in your area. Those contractors will provide free price quotes via the information you have provided. This process will save you time and money because you can compare rates from multiple companies without having to contact numerous contractors and provide your information several times.</p>
|
|
4
|
+
<h2>Do you perform the contracting work?</h2>
|
|
5
|
+
<p>No, we are not a general contractor. We are a free referral service for consumers needing home improvement services. We do not actually perform the work, but instead provide a free referral service.</p>
|
|
6
|
+
<h2>I have already submitted my information, when will I get my quote?</h2>
|
|
7
|
+
<p>The contractors who receive your request will usually begin building your quotes immediately and will often provide detailed pricing information within minutes. However, some quotes are more complicated and may require a little more time to process. Regardless, you should always receive your free quotes within 48 hours at the latest.</p>
|
|
8
|
+
<h2>How do I get a quote?</h2>
|
|
9
|
+
<p>To get a free, no-obligation quote, just go to our homepage, enter your zip code and submit the form.</p>
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
<p>Below are answers to some of the more frequently asked questions we receive. If you do not see your question listed, please send us an email.</p>
|
|
2
|
+
<h2>How does this service work?</h2>
|
|
3
|
+
<p>We maintain a large network of home improvement professionals across the US. Once you have submitted your information to our system, we will instantly match you with local contractors in your area. Those contractors will provide free price quotes via the information you have provided. This process will save you time and money because you can compare rates from multiple companies without having to contact numerous contractors and provide your information several times.</p>
|
|
4
|
+
<h2>Do you perform the contracting work?</h2>
|
|
5
|
+
<p>No, we are not a general contractor. We are a free referral service for consumers needing home improvement services. We do not actually perform the work, but instead provide a free referral service.</p>
|
|
6
|
+
<h2>I have already submitted my information, when will I get my quote?</h2>
|
|
7
|
+
<p>The contractors who receive your request will usually begin building your quotes immediately and will often provide detailed pricing information within minutes. However, some quotes are more complicated and may require a little more time to process. Regardless, you should always receive your free quotes within 48 hours at the latest.</p>
|
|
8
|
+
<h2>How do I get a quote?</h2>
|
|
9
|
+
<p>To get a free, no-obligation quote, just go to our homepage, enter your zip code and submit the form.</p>
|