PageSourceSearch

https://marketingautomation.services/

html marketingautomation.services collected 2026-10-02 03:55:00 UTC 17,649 bytes, 378 lines download raw bytes

1<!DOCTYPE html>
2<html>
3<head>
4                    <title>Constant Contact Login</title>
5        <meta charset="UTF-8" />
6    <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1, user-scalable=0"/>
7        <link rel="icon" type="image/png" href="https://marketingautomation.services/includes/img/favicon-ctct.png"/>
8
9    <link rel="stylesheet" href="/includes/css/bootstrap.css">
10
11            <link href="/includes/css/auth.css?ver=1.0" rel="stylesheet" type="text/css">
12
13                    <link href="/plugins/okta/css/okta-sign-in.min.css" rel="stylesheet" type="text/css">
14            <link href="/includes/css/okta.css" rel="stylesheet" type="text/css">
15    
16</head>
17
18<body class="modern-body">
19    <sharplegacy class="auth-page">
20        
21        
22<script type="text/javascript" src="/plugins/okta/js/okta-sign-in.min.js"></script>
22
23    <div id="okta_login" class="ctct-login"></div>
24    <div id="forgotPasswordForm" style="display: none;">
25        <form action="https://marketingautomation.services/auth/sendForgetEmail" autocomplete="off" id="legacyForgotForm" method="post" accept-charset="utf-8">
26        <input type="hidden" name="csrf" value="eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzUxMiJ9.eyJjaWQiOjAsImNzcmYiOjEsImlhdCI6MTc5MDkxMzMwMCwiZXhwIjoxNzkwOTEzNDgwfQ.xDQenpeBUOCKmei-tR-VCpre8U20DhrCDPhWpFQjC0PYylpwhuu1UaIqO1CoV2F74eA2EUK4aDjlYHbYAoBcCQ">
27        <input type="hidden" name="skipRedirect" value="1">
28        <h1 class="center">Forgot Your Password?</h1>
29
30        <ul class="login-form">
31            <li><label>Enter your account email below to receive a password reset link.</label>
32                <input type="text" id="legacyForgotEmail" name="email" value="" />
33            </li>
34        </ul>
35        <div class="clear"></div>
36
37        <button id="FormSubmitbtn" class="btn btn-success" type="submit">
38            <span>Send Email</span>
39        </button>
40
41        </form>
42    </div>
43
44    <div id="oktaPasswordForm">
45        <div class="auth-content okta-override" style="display: none">
46            <div class="auth-content-inner">
47                <div class="forgot-password">
48                    <form
49                        method="POST"
50                        action="/"
51                        id="forgot-password-form"
52                        class="o-form forgot-password-email-enabled o-form-edit-mode">
53                        <div data-se="o-form-content" class="o-form-content o-form-theme clearfix">
54                            <h2 data-se="o-form-head" class="okta-form-title">Forgot Your Password?</h2>
55                            <div class="o-form-error-container" data-se="o-form-error-container"></div>
56                            <div class="o-form-fieldset-container" data-se="o-form-fieldset-container">
57                                <div data-se="o-form-fieldset" class="o-form-fieldset o-form-label-top">
58                                    <div data-se="o-form-label" class="label-recovery-username">
59                                        <label for="account-recovery-username">Enter your account email below to receive a password reset link.</label>
60                                    </div>
61                                    <div data-se="o-form-input-container" class="o-form-input">
62                                        <span
63                                            data-se="o-form-input-username"
64                                            class="o-form-input-name-username o-form-control okta-form-input-field input-fix">
65                                            <input
66                                                type="text"
67                                                placeholder=""
68                                                name="username"
69                                                id="account-recovery-username"
70                                                value=""
71                                                aria-label=""
72                                                autocomplete="username">
73                                        </span>
74                                    </div>
75                                </div>
76                                <a class="button button-primary button-wide email-button-ctct" href="#">
77                                    Reset via Email
78                                </a>
79                            </div>
80                        </div>
81
82                        <div id="forgotPasswordFooter">
83                            <a href="#" class="display-block text-right link help js-back" data-se="back-link">Back to sign in</a>
84                        </div>
85                    </form>
86                    <div class="o-form-content o-form-theme clearfix" id="successMessage" style="display:none;">
87                        <div class="infobox infobox-info">
88                            <span class="info info-16" style="top: 50px !important"></span>
89                            <h2>Check your email</h2>
90                            <p id="forgotPasswordMessage"></p>
91                        </div>
92                        <div class="o-form-fieldset-container text-right display-block" style="margin-top: 5px">
93                            Remember?&nbsp;
94                            <a data-se="back-button" class="link js-back">
95                                Sign in
96                            </a>
97                        </div>
98                    </div>
99                    <div class="o-form-content o-form-theme clearfix" id="CTCTErrorMessage" style="display:none;">
100                        <div class="infobox infobox-info">
101                            <span class="info info-16" style="top: 50px !important"></span>
102                            <h2>You don't have an account</h2>
103                            <p id="CTCTErrorText">
104                                It looks like you have a Constant Contact account. <a href="https://login.constantcontact.com/">Sign in to Constant Contact</a>.<br />
105                                <br />
106                                Learn more about <a href="https://sharpspring.com/">SharpSpring</a>.
107                            </p>
108                        </div>
109                    </div>
110                    <div class="o-form-content o-form-theme clearfix" id="flashErrorMessage" style="display:none;">
111                        <div class="infobox infobox-error">
112                            <span class="icon error-16" id="flashIcon"></span>
113                            <p id="flashErrorText">
114                                An unexpected error has occurred. Try again later.                            </p>
115                        </div>
116                    </div>
117                </div>
118            </div>
119        </div>
120    </div>
121
122    
122<script type="text/javascript" src="/plugins/okta/js/okta-sign-in.min.js"></script>
122
123
124
125        <div id="login-footer">
126            <ul>
127                <li><a href="https://www.constantcontact.com/legal/terms" target="_blank">Terms of Service</a></li>
128                <li><a href="https://www.constantcontact.com/legal/privacy-notice" target="_blank">Privacy Policy</a></li>
129                <li>
130                    <a href="https://status.sharpspring.com" target="_blank">
131                        System Status                    </a>
132                </li>
133            </ul>
134
135            <p>Copyright &copy; 2012 - 2026 </p>
136        </div>
137    </sharplegacy>
138
139    <!-- JS CORE -->
140    
140<script type="text/javascript" src="/includes/js/dist/core.min.js?ver=5.75-35"></script>
140
141    
141<script type="text/javascript" src="/includes/js/core/jquery.validate.min.js?ver=5.75-35"></script>
141
142    
142<script type="text/javascript" src="/includes/js/core/jquery.maskedinput.js?ver=5.75-35"></script>
142
143    
143<script type="text/javascript" src="/includes/js/dist/plugin.min.js?ver=5.75-35"></script>
143
144    
144<script type="text/javascript" src="/includes/js/core/require.js?ver=5.75-35"></script>
144
145    
145<script type="text/javascript" src="/includes/js/app/underscore.js?ver=5.758d2504781a"></script>
145
146
147    <!-- LANGUAGE -->
148    
148<script type="text/javascript" src="/includes/js/app/lang/en_US.js?ver=5.758d2504781a"></script>
148
149        
149<script type="text/javascript" src="/includes/js/app/lang/locales.js?ver=5.758d2504781a"></script>
149
150
151    
151<script>
152    var forgotPasswordForm = document.getElementById('oktaPasswordForm');
153
154    var username = '';
155    var password = '';
156
157    const tStrings = {
158        greeting: 'Welcome Back!',
159        username: 'Username',
160        password: 'Password',
161        forgotPasswordMessage: 'If there is an account associated with this email address or username, we will send instructions to reset your password.',
162    };
163    const signIn = new OktaSignIn({
164        useClassicEngine: true,
165        baseUrl: 'https://identity.constantcontact.com',
166        logo: '/includes/img/CTCT_Logo_H_FC_RGB.png',
167        features: {
168            showPasswordToggleOnSignInPage: true
169        },
170        authParams: {
171            pkce: true,
172            issuer: 'https://identity.constantcontact.com/oauth2/default',
173        },
174        cookies: {
175            secure: true,
176        },
177        i18n: {
178            'en': {
179                'primaryauth.title': tStrings.greeting,
180                'primaryauth.username.placeholder': tStrings.username,
181                'primaryauth.password.placeholder': tStrings.password,
182                'errors.E0000004': 'Invalid username and/or password.',
183                'enroll.choices.title': 'Select an option below to continue setting up two-factor authentication.',
184                'enroll.choices.description.generic': ' ',
185            },
186        },
187        processCreds: function(creds, callback) {
188            $.ajax({
189                method: "POST",
190                url: "/auth/oktaAuthFlag/" + encodeURIComponent(creds.username),
191                success: function(legacy) {
192                    let response = JSON.parse(legacy);
193                    if (response.oktaID) {
194                        callback();
195                    } else {
196                        window.console.error('Legacy login no longer supported.');
197                    }
198                }
199            });
200        }
201    });
202    signIn.on('afterError', function (context, error) {
203        $.ajax({
204            method: "POST",
205            url: "/auth/oktaErrorLog",
206            data: { username: username, error: error, href: window.location.href },
207        });
208    });
209    signIn.renderEl({
210        el: '#okta_login'
211    }, function success(res) {
212        if (res.status === 'SUCCESS' && res.session && res.session.token) {
213            var params = new URLSearchParams({
214                client_id: '0oa1nweaob2xdDyXn0h8',
215                response_type: 'code',
216                scope: 'openid email',
217                redirect_uri: 'https://cst2.marketingautomation.services/auth/oktaPkceCallback',
218                state: '891bdc49afc5d4df11bb138fbc1a23fd',
219                code_challenge: 'WsG2B6Xluww1Q8bYAuxY5fyeP-scscdvKnuUvPg6Pbc',
220                code_challenge_method: 'S256',
221                sessionToken: res.session.token,
222            });
223            window.location.href = 'https://identity.constantcontact.com/oauth2/default/v1/authorize?' + params.toString();
224        }
225    }, function error(res) {});
226
227    signIn.on('afterRender', function(context) {
228        const parentDiv = document.querySelector('#okta_login');
229
230        const usernameField = parentDiv.querySelector('#okta-signin-username');
231        if (usernameField) {
232            usernameField.placeholder = tStrings.username;
233
234            usernameField.addEventListener('focusout', function(e) {
235                if (usernameField.value === '') {
236                    parentDiv.querySelector('.o-form-input-name-username').classList.add('error-input');
237                } else {
238                    parentDiv.querySelector('.o-form-input-name-username').classList.remove('error-input');
239                }
240            });
241        }
242
243        const passwordField = parentDiv.querySelector('#okta-signin-password');
244        if (passwordField) {
245            passwordField.placeholder = tStrings.password;
246
247            passwordField.addEventListener('focusout', function(e) {
248                if (passwordField.value === '') {
249                    parentDiv.querySelector('.o-form-input-name-password').classList.add('error-input');
250                } else {
251                    parentDiv.querySelector('.o-form-input-name-password').classList.remove('error-input');
252                }
253            });
254        }
255
256        const rememberGroup = parentDiv.querySelector('.o-form-input-name-remember');
257        if (rememberGroup) {
258            const rememberLabel = parentDiv.querySelector('label[for=input7]');
259            if (rememberLabel) {
260                rememberLabel.textContent = 'Remember ' + tStrings.username;
261            }
262
263            const signInButton = parentDiv.querySelector('form#form1');
264            if (signInButton) {
265                signInButton.append(rememberGroup);
266            }
267            const helpList = document.createElement('div');
268
269            helpList.classList.add('help-list');
270
271            const forgotPassword = document.createElement('a');
272            forgotPassword.href = '#';
273            forgotPassword.textContent = `Forgot ${tStrings.password}?`;
274            forgotPassword.className = 'js-forgot-password';
275
276            helpList.append(forgotPassword);
277            rememberGroup.append(helpList);
278
279            // Only hide the "Need help signing in?" on initial login screen
280            const oldFooter = parentDiv.querySelector('.auth-footer');
281            if (oldFooter) {
282                parentDiv.querySelector('.auth-footer').remove();
283            }
284        }
285
286        const verifyBanner = parentDiv.querySelector('.okta-form-title.o-form-head');
287        if (verifyBanner && verifyBanner.textContent.includes('SMS')) {
288            const pSubtitle = parentDiv.querySelector('.okta-form-subtitle.o-form-explain');
289
290            const ratesMsg = document.createElement('p');
291            ratesMsg.classList.add('okta-form-subtitle');
292            ratesMsg.innerText = '*Standard rates may apply';
293
294            pSubtitle.before(ratesMsg);
295        }
296
297        const beacon = parentDiv.querySelector('.beacon-container');
298        if (beacon.childElementCount > 0) {
299            parentDiv.querySelector('.auth-header').classList.add('include-beacon');
300        }
301
302        const smsRequest = parentDiv.querySelector('.sms-request-button');
303        if (smsRequest) {
304            smsRequest.classList.add('button-primary');
305            parentDiv.querySelector('input[value="Verify"]').classList.remove('button-primary');
306
307            const errorContainer = parentDiv.querySelector('.o-form-error-container');
308            const infoSMS = document.createElement('div');
309            const infoIcon = document.createElement('span');
310            infoSMS.classList.add('infobox-info', 'infobox');
311            infoSMS.innerText = 'Click the Send Code Button below to receive your SMS code.';
312            errorContainer.prepend(infoSMS);
313            infoIcon.classList.add('info', 'info-16');
314            infoSMS.appendChild(infoIcon);
315        }
316
317
318        const sendSMS = parentDiv.querySelector('a[data-se="sms-send-code"]');
319        if (sendSMS) {
320            sendSMS.addEventListener('click', function(e) {
321                e.preventDefault();
322                smsRequest.classList.remove('button-primary');
323                parentDiv.querySelector('input[value="Verify"]').classList.add('button-primary');
324            });
325        }
326
327        const smsFactor = parentDiv.querySelector('form.mfa-verify-passcode');
328        if (smsFactor && smsFactor.getAttribute('data-se') === 'factor-sms') {
329            parentDiv.querySelector('.auth-passcode').classList.add('fix-input');
330        }
331
332        $('.js-forgot-password').click(function (e) {
333            e.preventDefault();
334            e.stopImmediatePropagation();
335            $('#successMessage').hide();
336            $('#forgot-password-form').show();
337            $('#okta-sign-in').append(forgotPasswordForm);
338            $('#form1').hide();
339            $('.auth-content').hide();
340            $('.auth-content.okta-override').show();
341        });
342
343        $('.js-back').click(function() {
344            $('#form1').show();
345            $('.auth-content').show();
346            $('.auth-content.okta-override').hide();
347        });
348
349        $('#forgot-password-form').on('submit', function (e) {
350            e.preventDefault();
351            handleForgotEmail();
352        })
353
354        $('.email-button, .email-button-ctct').click(handleForgotEmail);
355
356        function handleForgotEmail() {
357            var email = $('#account-recovery-username').val()
358            $.ajax({
359                method: "POST",
360                url: "/auth/sendForgetEmail",
361                data: {skipRedirect: 1, email: email, csrf: 'eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzUxMiJ9.eyJjaWQiOjAsImNzcmYiOjEsImlhdCI6MTc5MDkxMzMwMCwiZXhwIjoxNzkwOTEzNDgwfQ.xDQenpeBUOCKmei-tR-VCpre8U20DhrCDPhWpFQjC0PYylpwhuu1UaIqO1CoV2F74eA2EUK4aDjlYHbYAoBcCQ' },
362                success: function (response) {
363                    response = JSON.parse(response);
364                    $('#forgot-password-form').hide();
365                    $('#forgotPasswordMessage').text(tStrings.forgotPasswordMessage);
366                    $('#successMessage').show();
367                }
368            });
369        }
370        let formLabelTop = parentDiv.querySelector('.o-form-label-top.margin-btm-30');
371        if (formLabelTop) {
372            formLabelTop.classList.remove('margin-btm-30');
373        }
374    });
375
376</script>
376
377</body>
378</html>

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.