> ## Documentation Index
> Fetch the complete documentation index at: https://docs.stackone.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Constant Contact OAuth 2.0 connector profile – StackOne setup guide

> Set up the OAuth 2.0 connector profile for Constant Contact in StackOne. One-time admin setup required before your users can link Constant Contact accounts via Hub.

<Warning>You need an active Constant Contact account. The Constant Contact developer portal uses the same sign-in credentials as your Constant Contact account.</Warning>

<Panel>
  <div className="not-prose guides-scope-selector" data-guides-scope-selector data-guide-actions-json="[{&#x22;id&#x22;:&#x22;constantcontact_get_account_summary&#x22;,&#x22;label&#x22;:&#x22;Get Account Summary&#x22;,&#x22;scopes&#x22;:[&#x22;account_read&#x22;]},{&#x22;id&#x22;:&#x22;constantcontact_update_account_summary&#x22;,&#x22;label&#x22;:&#x22;Update Account Summary&#x22;,&#x22;scopes&#x22;:[&#x22;account_update&#x22;]},{&#x22;id&#x22;:&#x22;constantcontact_get_account_physical_address&#x22;,&#x22;label&#x22;:&#x22;Get Account Physical Address&#x22;,&#x22;scopes&#x22;:[&#x22;account_read&#x22;]},{&#x22;id&#x22;:&#x22;constantcontact_list_account_emails&#x22;,&#x22;label&#x22;:&#x22;List Account Emails&#x22;,&#x22;scopes&#x22;:[&#x22;account_read&#x22;]},{&#x22;id&#x22;:&#x22;constantcontact_create_account_physical_address&#x22;,&#x22;label&#x22;:&#x22;Create Account Physical Address&#x22;,&#x22;scopes&#x22;:[&#x22;account_update&#x22;]},{&#x22;id&#x22;:&#x22;constantcontact_update_account_physical_address&#x22;,&#x22;label&#x22;:&#x22;Update Account Physical Address&#x22;,&#x22;scopes&#x22;:[&#x22;account_update&#x22;]},{&#x22;id&#x22;:&#x22;constantcontact_create_account_email&#x22;,&#x22;label&#x22;:&#x22;Create Account Email&#x22;,&#x22;scopes&#x22;:[&#x22;account_update&#x22;]},{&#x22;id&#x22;:&#x22;constantcontact_get_user_privileges&#x22;,&#x22;label&#x22;:&#x22;Get User Privileges&#x22;,&#x22;scopes&#x22;:[&#x22;account_read&#x22;]},{&#x22;id&#x22;:&#x22;constantcontact_list_contacts&#x22;,&#x22;label&#x22;:&#x22;List Contacts&#x22;,&#x22;scopes&#x22;:[&#x22;contact_data&#x22;]},{&#x22;id&#x22;:&#x22;constantcontact_get_contact&#x22;,&#x22;label&#x22;:&#x22;Get Contact&#x22;,&#x22;scopes&#x22;:[&#x22;contact_data&#x22;]},{&#x22;id&#x22;:&#x22;constantcontact_create_contact&#x22;,&#x22;label&#x22;:&#x22;Create Contact&#x22;,&#x22;scopes&#x22;:[&#x22;contact_data&#x22;]},{&#x22;id&#x22;:&#x22;constantcontact_update_contact&#x22;,&#x22;label&#x22;:&#x22;Update Contact&#x22;,&#x22;scopes&#x22;:[&#x22;contact_data&#x22;]},{&#x22;id&#x22;:&#x22;constantcontact_delete_contact&#x22;,&#x22;label&#x22;:&#x22;Delete Contact&#x22;,&#x22;scopes&#x22;:[&#x22;contact_data&#x22;]},{&#x22;id&#x22;:&#x22;constantcontact_create_or_update_contact&#x22;,&#x22;label&#x22;:&#x22;Create Or Update Contact&#x22;,&#x22;scopes&#x22;:[&#x22;contact_data&#x22;]},{&#x22;id&#x22;:&#x22;constantcontact_resubscribe_contact&#x22;,&#x22;label&#x22;:&#x22;Resubscribe Contact&#x22;,&#x22;scopes&#x22;:[&#x22;contact_data&#x22;]},{&#x22;id&#x22;:&#x22;constantcontact_list_contact_lists&#x22;,&#x22;label&#x22;:&#x22;List Contact Lists&#x22;,&#x22;scopes&#x22;:[&#x22;contact_data&#x22;]},{&#x22;id&#x22;:&#x22;constantcontact_get_contact_list&#x22;,&#x22;label&#x22;:&#x22;Get Contact List&#x22;,&#x22;scopes&#x22;:[&#x22;contact_data&#x22;]},{&#x22;id&#x22;:&#x22;constantcontact_create_contact_list&#x22;,&#x22;label&#x22;:&#x22;Create Contact List&#x22;,&#x22;scopes&#x22;:[&#x22;contact_data&#x22;]},{&#x22;id&#x22;:&#x22;constantcontact_update_contact_list&#x22;,&#x22;label&#x22;:&#x22;Update Contact List&#x22;,&#x22;scopes&#x22;:[&#x22;contact_data&#x22;]},{&#x22;id&#x22;:&#x22;constantcontact_delete_contact_list&#x22;,&#x22;label&#x22;:&#x22;Delete Contact List&#x22;,&#x22;scopes&#x22;:[&#x22;contact_data&#x22;]},{&#x22;id&#x22;:&#x22;constantcontact_list_custom_fields&#x22;,&#x22;label&#x22;:&#x22;List Custom Fields&#x22;,&#x22;scopes&#x22;:[&#x22;contact_data&#x22;]},{&#x22;id&#x22;:&#x22;constantcontact_get_custom_field&#x22;,&#x22;label&#x22;:&#x22;Get Custom Field&#x22;,&#x22;scopes&#x22;:[&#x22;contact_data&#x22;]},{&#x22;id&#x22;:&#x22;constantcontact_create_custom_field&#x22;,&#x22;label&#x22;:&#x22;Create Custom Field&#x22;,&#x22;scopes&#x22;:[&#x22;contact_data&#x22;]},{&#x22;id&#x22;:&#x22;constantcontact_update_custom_field&#x22;,&#x22;label&#x22;:&#x22;Update Custom Field&#x22;,&#x22;scopes&#x22;:[&#x22;contact_data&#x22;]},{&#x22;id&#x22;:&#x22;constantcontact_delete_custom_field&#x22;,&#x22;label&#x22;:&#x22;Delete Custom Field&#x22;,&#x22;scopes&#x22;:[&#x22;contact_data&#x22;]},{&#x22;id&#x22;:&#x22;constantcontact_list_events&#x22;,&#x22;label&#x22;:&#x22;List Events&#x22;,&#x22;scopes&#x22;:[&#x22;campaign_data&#x22;]},{&#x22;id&#x22;:&#x22;constantcontact_create_event&#x22;,&#x22;label&#x22;:&#x22;Create Event&#x22;,&#x22;scopes&#x22;:[&#x22;campaign_data&#x22;]},{&#x22;id&#x22;:&#x22;constantcontact_get_event&#x22;,&#x22;label&#x22;:&#x22;Get Event&#x22;,&#x22;scopes&#x22;:[&#x22;campaign_data&#x22;]},{&#x22;id&#x22;:&#x22;constantcontact_update_event&#x22;,&#x22;label&#x22;:&#x22;Update Event&#x22;,&#x22;scopes&#x22;:[&#x22;campaign_data&#x22;]},{&#x22;id&#x22;:&#x22;constantcontact_copy_event&#x22;,&#x22;label&#x22;:&#x22;Copy Event&#x22;,&#x22;scopes&#x22;:[&#x22;campaign_data&#x22;]},{&#x22;id&#x22;:&#x22;constantcontact_list_segments&#x22;,&#x22;label&#x22;:&#x22;List Segments&#x22;,&#x22;scopes&#x22;:[&#x22;contact_data&#x22;]},{&#x22;id&#x22;:&#x22;constantcontact_get_segment&#x22;,&#x22;label&#x22;:&#x22;Get Segment&#x22;,&#x22;scopes&#x22;:[&#x22;contact_data&#x22;]},{&#x22;id&#x22;:&#x22;constantcontact_create_segment&#x22;,&#x22;label&#x22;:&#x22;Create Segment&#x22;,&#x22;scopes&#x22;:[&#x22;contact_data&#x22;]},{&#x22;id&#x22;:&#x22;constantcontact_update_segment&#x22;,&#x22;label&#x22;:&#x22;Update Segment&#x22;,&#x22;scopes&#x22;:[&#x22;contact_data&#x22;]},{&#x22;id&#x22;:&#x22;constantcontact_rename_segment&#x22;,&#x22;label&#x22;:&#x22;Rename Segment&#x22;,&#x22;scopes&#x22;:[&#x22;contact_data&#x22;]},{&#x22;id&#x22;:&#x22;constantcontact_delete_segment&#x22;,&#x22;label&#x22;:&#x22;Delete Segment&#x22;,&#x22;scopes&#x22;:[&#x22;contact_data&#x22;]},{&#x22;id&#x22;:&#x22;constantcontact_list_email_campaigns&#x22;,&#x22;label&#x22;:&#x22;List Email Campaigns&#x22;,&#x22;scopes&#x22;:[&#x22;campaign_data&#x22;]},{&#x22;id&#x22;:&#x22;constantcontact_get_email_campaign&#x22;,&#x22;label&#x22;:&#x22;Get Email Campaign&#x22;,&#x22;scopes&#x22;:[&#x22;campaign_data&#x22;]},{&#x22;id&#x22;:&#x22;constantcontact_create_email_campaign&#x22;,&#x22;label&#x22;:&#x22;Create Email Campaign&#x22;,&#x22;scopes&#x22;:[&#x22;campaign_data&#x22;]},{&#x22;id&#x22;:&#x22;constantcontact_delete_email_campaign&#x22;,&#x22;label&#x22;:&#x22;Delete Email Campaign&#x22;,&#x22;scopes&#x22;:[&#x22;campaign_data&#x22;]},{&#x22;id&#x22;:&#x22;constantcontact_update_email_campaign_name&#x22;,&#x22;label&#x22;:&#x22;Update Email Campaign Name&#x22;,&#x22;scopes&#x22;:[&#x22;campaign_data&#x22;]},{&#x22;id&#x22;:&#x22;constantcontact_get_campaign_activity&#x22;,&#x22;label&#x22;:&#x22;Get Campaign Activity&#x22;,&#x22;scopes&#x22;:[&#x22;campaign_data&#x22;]},{&#x22;id&#x22;:&#x22;constantcontact_update_campaign_activity&#x22;,&#x22;label&#x22;:&#x22;Update Campaign Activity&#x22;,&#x22;scopes&#x22;:[&#x22;campaign_data&#x22;]},{&#x22;id&#x22;:&#x22;constantcontact_schedule_campaign_activity&#x22;,&#x22;label&#x22;:&#x22;Schedule Campaign Activity&#x22;,&#x22;scopes&#x22;:[&#x22;campaign_data&#x22;]},{&#x22;id&#x22;:&#x22;constantcontact_get_campaign_activity_schedule&#x22;,&#x22;label&#x22;:&#x22;Get Campaign Activity Schedule&#x22;,&#x22;scopes&#x22;:[&#x22;campaign_data&#x22;]},{&#x22;id&#x22;:&#x22;constantcontact_unschedule_campaign_activity&#x22;,&#x22;label&#x22;:&#x22;Unschedule Campaign Activity&#x22;,&#x22;scopes&#x22;:[&#x22;campaign_data&#x22;]},{&#x22;id&#x22;:&#x22;constantcontact_test_send_email_campaign&#x22;,&#x22;label&#x22;:&#x22;Test Send Email Campaign&#x22;,&#x22;scopes&#x22;:[&#x22;campaign_data&#x22;]},{&#x22;id&#x22;:&#x22;constantcontact_get_email_campaign_preview&#x22;,&#x22;label&#x22;:&#x22;Get Email Campaign Preview&#x22;,&#x22;scopes&#x22;:[&#x22;campaign_data&#x22;]},{&#x22;id&#x22;:&#x22;constantcontact_get_send_history&#x22;,&#x22;label&#x22;:&#x22;Get Send History&#x22;,&#x22;scopes&#x22;:[&#x22;campaign_data&#x22;]},{&#x22;id&#x22;:&#x22;constantcontact_list_bulk_activities&#x22;,&#x22;label&#x22;:&#x22;List Bulk Activities&#x22;,&#x22;scopes&#x22;:[&#x22;contact_data&#x22;]},{&#x22;id&#x22;:&#x22;constantcontact_get_bulk_activity&#x22;,&#x22;label&#x22;:&#x22;Get Bulk Activity&#x22;,&#x22;scopes&#x22;:[&#x22;contact_data&#x22;]},{&#x22;id&#x22;:&#x22;constantcontact_bulk_import_contacts_json&#x22;,&#x22;label&#x22;:&#x22;Bulk Import Contacts (JSON)&#x22;,&#x22;scopes&#x22;:[&#x22;contact_data&#x22;]},{&#x22;id&#x22;:&#x22;constantcontact_bulk_export_contacts&#x22;,&#x22;label&#x22;:&#x22;Bulk Export Contacts&#x22;,&#x22;scopes&#x22;:[&#x22;contact_data&#x22;]},{&#x22;id&#x22;:&#x22;constantcontact_bulk_delete_contacts&#x22;,&#x22;label&#x22;:&#x22;Bulk Delete Contacts&#x22;,&#x22;scopes&#x22;:[&#x22;contact_data&#x22;]},{&#x22;id&#x22;:&#x22;constantcontact_bulk_add_list_memberships&#x22;,&#x22;label&#x22;:&#x22;Bulk Add Contacts To Lists&#x22;,&#x22;scopes&#x22;:[&#x22;contact_data&#x22;]},{&#x22;id&#x22;:&#x22;constantcontact_bulk_remove_list_memberships&#x22;,&#x22;label&#x22;:&#x22;Bulk Remove Contacts From Lists&#x22;,&#x22;scopes&#x22;:[&#x22;contact_data&#x22;]},{&#x22;id&#x22;:&#x22;constantcontact_bulk_add_contact_tags&#x22;,&#x22;label&#x22;:&#x22;Bulk Add Tags To Contacts&#x22;,&#x22;scopes&#x22;:[&#x22;contact_data&#x22;]},{&#x22;id&#x22;:&#x22;constantcontact_bulk_remove_contact_tags&#x22;,&#x22;label&#x22;:&#x22;Bulk Remove Tags From Contacts&#x22;,&#x22;scopes&#x22;:[&#x22;contact_data&#x22;]},{&#x22;id&#x22;:&#x22;constantcontact_list_email_campaign_summaries&#x22;,&#x22;label&#x22;:&#x22;List Email Campaign Summary Reports&#x22;,&#x22;scopes&#x22;:[&#x22;campaign_data&#x22;]},{&#x22;id&#x22;:&#x22;constantcontact_get_email_campaign_stats&#x22;,&#x22;label&#x22;:&#x22;Get Email Campaign Stats&#x22;,&#x22;scopes&#x22;:[&#x22;campaign_data&#x22;]},{&#x22;id&#x22;:&#x22;constantcontact_get_email_campaign_activity_stats&#x22;,&#x22;label&#x22;:&#x22;Get Email Campaign Activity Stats&#x22;,&#x22;scopes&#x22;:[&#x22;campaign_data&#x22;]},{&#x22;id&#x22;:&#x22;constantcontact_get_email_links_report&#x22;,&#x22;label&#x22;:&#x22;Get Email Links Report&#x22;,&#x22;scopes&#x22;:[&#x22;campaign_data&#x22;]},{&#x22;id&#x22;:&#x22;constantcontact_get_email_sends_report&#x22;,&#x22;label&#x22;:&#x22;Get Email Sends Report&#x22;,&#x22;scopes&#x22;:[&#x22;campaign_data&#x22;]},{&#x22;id&#x22;:&#x22;constantcontact_get_email_opens_report&#x22;,&#x22;label&#x22;:&#x22;Get Email Opens Report&#x22;,&#x22;scopes&#x22;:[&#x22;campaign_data&#x22;]},{&#x22;id&#x22;:&#x22;constantcontact_get_email_unique_opens_report&#x22;,&#x22;label&#x22;:&#x22;Get Email Unique Opens Report&#x22;,&#x22;scopes&#x22;:[&#x22;campaign_data&#x22;]},{&#x22;id&#x22;:&#x22;constantcontact_get_email_did_not_opens_report&#x22;,&#x22;label&#x22;:&#x22;Get Email Did Not Opens Report&#x22;,&#x22;scopes&#x22;:[&#x22;campaign_data&#x22;]},{&#x22;id&#x22;:&#x22;constantcontact_get_email_clicks_report&#x22;,&#x22;label&#x22;:&#x22;Get Email Clicks Report&#x22;,&#x22;scopes&#x22;:[&#x22;campaign_data&#x22;]},{&#x22;id&#x22;:&#x22;constantcontact_get_email_forwards_report&#x22;,&#x22;label&#x22;:&#x22;Get Email Forwards Report&#x22;,&#x22;scopes&#x22;:[&#x22;campaign_data&#x22;]},{&#x22;id&#x22;:&#x22;constantcontact_get_email_optouts_report&#x22;,&#x22;label&#x22;:&#x22;Get Email Opt-outs Report&#x22;,&#x22;scopes&#x22;:[&#x22;campaign_data&#x22;]},{&#x22;id&#x22;:&#x22;constantcontact_get_email_bounces_report&#x22;,&#x22;label&#x22;:&#x22;Get Email Bounces Report&#x22;,&#x22;scopes&#x22;:[&#x22;campaign_data&#x22;]},{&#x22;id&#x22;:&#x22;constantcontact_list_contact_activities_report&#x22;,&#x22;label&#x22;:&#x22;List Contact Activity Reports&#x22;,&#x22;scopes&#x22;:[&#x22;contact_data&#x22;]},{&#x22;id&#x22;:&#x22;constantcontact_get_contact_activity_summary&#x22;,&#x22;label&#x22;:&#x22;Get Contact Activity Summary&#x22;,&#x22;scopes&#x22;:[&#x22;contact_data&#x22;]},{&#x22;id&#x22;:&#x22;constantcontact_get_contact_open_click_rates&#x22;,&#x22;label&#x22;:&#x22;Get Contact Open And Click Rates&#x22;,&#x22;scopes&#x22;:[&#x22;contact_data&#x22;]},{&#x22;id&#x22;:&#x22;constantcontact_list_tags&#x22;,&#x22;label&#x22;:&#x22;List Tags&#x22;,&#x22;scopes&#x22;:[&#x22;contact_data&#x22;]},{&#x22;id&#x22;:&#x22;constantcontact_get_tag&#x22;,&#x22;label&#x22;:&#x22;Get Tag&#x22;,&#x22;scopes&#x22;:[&#x22;contact_data&#x22;]},{&#x22;id&#x22;:&#x22;constantcontact_create_tag&#x22;,&#x22;label&#x22;:&#x22;Create Tag&#x22;,&#x22;scopes&#x22;:[&#x22;contact_data&#x22;]},{&#x22;id&#x22;:&#x22;constantcontact_update_tag&#x22;,&#x22;label&#x22;:&#x22;Update Tag&#x22;,&#x22;scopes&#x22;:[&#x22;contact_data&#x22;]},{&#x22;id&#x22;:&#x22;constantcontact_delete_tag&#x22;,&#x22;label&#x22;:&#x22;Delete Tag&#x22;,&#x22;scopes&#x22;:[&#x22;contact_data&#x22;]}]">
    <div className="guides-scope-selector__title">Select Actions to adjust the guide</div>
    <div className="guides-scope-selector__muted guides-scope-selector__subtitle">Some actions may require additional configuration in the provider to be accessible. Choose the actions you need and the guide will be updated.</div>

    <div className="guides-scope-selector__toolbar">
      <input type="text" placeholder="Search actions..." className="guides-scope-selector__input guides-scope-selector__search" data-guide-action-search />

      <button type="button" className="guides-scope-selector__quick-btn" data-guide-select-all>Select all</button>
      <button type="button" className="guides-scope-selector__quick-btn" data-guide-clear>Clear</button>
    </div>

    <div className="guides-scope-selector__list">
      <div className="guides-scope-selector__list-header">
        <div className="guides-scope-selector__list-header-spacer" />

        <div className="guides-scope-selector__list-header-action">Action</div>
        <div className="guides-scope-selector__list-header-scopes">Scope(s)</div>
      </div>

      <div className="guides-scope-selector__muted guides-scope-selector__status" data-guide-loading>Loading actions...</div>
      <div className="guides-scope-selector__muted guides-scope-selector__status" data-guide-no-results hidden>No actions match your search.</div>
    </div>

    <div className="guides-scope-selector__url-section">
      <div className="guides-scope-selector__muted guides-scope-selector__label">Dynamic Guide URL</div>

      <div className="guides-scope-selector__url-row">
        <input type="text" readOnly className="guides-scope-selector__input guides-scope-selector__url-input" data-guide-url />

        <button type="button" className="guides-scope-selector__copy-btn guides-scope-selector__copy-btn--end" data-guide-copy-url>Copy URL</button>
      </div>

      <div className="guides-scope-selector__scopes-section">
        <div className="guides-scope-selector__muted guides-scope-selector__label">Scopes Selected</div>

        <div className="guides-scope-selector__scopes-row">
          <pre className="guides-scope-selector__input guides-scope-selector__scopes-output" role="textbox" aria-readonly="true" tabIndex={0} data-guide-scopes-output />

          <div className="guides-scope-selector__muted guides-scope-selector__side-controls">
            <div className="guides-scope-selector__side-label">Separator</div>

            <select className="guides-scope-selector__input guides-scope-selector__delimiter" data-guide-scope-delimiter>
              <option value="space">Space</option>
              <option value="comma">Comma</option>
              <option value="semicolon">Semicolon</option>
              <option value="pipe">Pipe</option>
              <option value="newline">Newline</option>
            </select>

            <button type="button" className="guides-scope-selector__copy-btn" data-guide-copy-scopes>Copy scopes</button>
          </div>
        </div>
      </div>
    </div>
  </div>
</Panel>

<section data-guide-section data-guide-scopes="">
  <h2>Create an OAuth application</h2>

  <p>Register an application in the Constant Contact developer portal to obtain the two credentials StackOne needs. Constant Contact calls the OAuth 2.0 client ID an API Key — the portal labels it <strong>API Key (Client Id)</strong>, and StackOne stores it in the field labeled <strong>API Key (Client ID)</strong> in the Connector profile. The Client Secret is generated separately, on the same page.</p>

  <Steps>
    <Step title="Sign in to Constant Contact">
      <div data-guide-step data-guide-scopes="" data-guide-display-scopes-list="">
        <p>Sign in to your <a href="https://login.constantcontact.com/login/login.sdo" target="_blank" rel="noopener noreferrer">Constant Contact account</a>.</p>

        <ul>
          <li>Enter your <strong>Email address (Username)</strong> and <strong>Password</strong>, then click <strong>Log in</strong>.</li>
        </ul>

        <img src="https://mintcdn.com/stackone-60/0xOS74FZX0AKbQ5Z/connectors/constantcontact/images/oauth2-setup-sign-in.png?fit=max&auto=format&n=0xOS74FZX0AKbQ5Z&q=85&s=e1c309cf04d1a9faf5567b5ba741828d" alt="The Constant Contact log in page with the email, password, and Log in button highlighted" width="1440" height="900" data-path="connectors/constantcontact/images/oauth2-setup-sign-in.png" />
      </div>
    </Step>

    <Step title="Open My Applications">
      <div data-guide-step data-guide-scopes="" data-guide-display-scopes-list="">
        <p>Go to the <a href="https://developer.constantcontact.com" target="_blank" rel="noopener noreferrer">Constant Contact developer portal</a> and click <strong>My Applications</strong> in the top navigation bar, next to <strong>API Docs</strong>, <strong>API SDKs</strong>, and <strong>API Reference</strong>.</p>

        <img src="https://mintcdn.com/stackone-60/0xOS74FZX0AKbQ5Z/connectors/constantcontact/images/oauth2-setup-my-applications-nav.png?fit=max&auto=format&n=0xOS74FZX0AKbQ5Z&q=85&s=22b3214f269eb97b0d191c19a2a451e4" alt="The Constant Contact developer portal home page with My Applications highlighted in the top navigation bar" width="1440" height="900" data-path="connectors/constantcontact/images/oauth2-setup-my-applications-nav.png" />
      </div>
    </Step>

    <Step title="Create a new application">
      <div data-guide-step data-guide-scopes="" data-guide-display-scopes-list="">
        <p>On the <strong>My Applications</strong> page, click <strong>New Application</strong>.</p>

        <img src="https://mintcdn.com/stackone-60/0xOS74FZX0AKbQ5Z/connectors/constantcontact/images/oauth2-setup-new-application-button.png?fit=max&auto=format&n=0xOS74FZX0AKbQ5Z&q=85&s=70ada3b3228d580b2074bc9d264e7fdf" alt="The My Applications page with the New Application button highlighted" width="1440" height="900" data-path="connectors/constantcontact/images/oauth2-setup-new-application-button.png" />
      </div>
    </Step>

    <Step title="Complete the application details">
      <div data-guide-step data-guide-scopes="" data-guide-display-scopes-list="">
        <p>The <strong>New Application</strong> dialog collects the application name and its OAuth2 settings.</p>

        <ul>
          <li>Enter a name to identify your application: `StackOne Integration`</li>
          <li>You cannot use Constant Contact in the application name.</li>
          <li>Under <strong>Application OAuth2 Settings</strong>, select <strong>Authorization Code Flow and Implicit Flow</strong>.</li>
          <li>Select <strong>Rotating Refresh Tokens</strong> as the refresh token type.</li>
          <li>New applications are limited to your current account scope. This means the application will only work with your account and cannot be accessed by other accounts.</li>
          <li>Click <strong>Create</strong>.</li>
        </ul>

        <img src="https://mintcdn.com/stackone-60/0xOS74FZX0AKbQ5Z/connectors/constantcontact/images/oauth2-setup-new-application-dialog.png?fit=max&auto=format&n=0xOS74FZX0AKbQ5Z&q=85&s=01b0d513e9d24724836c643b6326344e" alt="The New Application dialog with the name field, OAuth2 flow, refresh token type, and Create button highlighted" width="1440" height="900" data-path="connectors/constantcontact/images/oauth2-setup-new-application-dialog.png" />
      </div>
    </Step>

    <Step title="Open your application">
      <div data-guide-step data-guide-scopes="" data-guide-display-scopes-list="">
        <p>On the <strong>My Applications</strong> page, click <strong>Edit</strong> on the application you just created to open its details.</p>

        <img src="https://mintcdn.com/stackone-60/0xOS74FZX0AKbQ5Z/connectors/constantcontact/images/oauth2-setup-edit-application.png?fit=max&auto=format&n=0xOS74FZX0AKbQ5Z&q=85&s=f7fe22bf4a27cf767ef9527962e659fb" alt="The My Applications list with the Edit button on the new application highlighted" width="1440" height="900" data-path="connectors/constantcontact/images/oauth2-setup-edit-application.png" />
      </div>
    </Step>
  </Steps>
</section>

<section data-guide-section data-guide-scopes="">
  <h2>Configure the redirect URI</h2>

  <p>The redirect URI is where Constant Contact sends users after they authorize the application. It must match StackOne's callback URL exactly, or authorization fails.</p>

  <Steps>
    <Step title="Edit the redirect URI">
      <div data-guide-step data-guide-scopes="" data-guide-display-scopes-list="">
        <p>In the <strong>Redirect URI</strong> section, click the pencil icon next to the redirect URI field. A new application starts with a `localhost` placeholder, which you replace in the next step.</p>

        <img src="https://mintcdn.com/stackone-60/0xOS74FZX0AKbQ5Z/connectors/constantcontact/images/oauth2-setup-redirect-uri-field.png?fit=max&auto=format&n=0xOS74FZX0AKbQ5Z&q=85&s=a82388dbf5f8e20fe67e7132d083bb2a" alt="The application details page with the Redirect URI field and its pencil icon highlighted" width="1440" height="900" data-path="connectors/constantcontact/images/oauth2-setup-redirect-uri-field.png" />
      </div>
    </Step>

    <Step title="Confirm the redirect URI">
      <div data-guide-step data-guide-scopes="" data-guide-display-scopes-list="">
        <p>The <strong>Edit this redirect URI</strong> dialog opens. Replace the value with StackOne's callback URL, then click <strong>Confirm</strong>.</p>

        <ul>
          <li>Enter exactly: `https://api.stackone.com/connect/oauth2/constantcontact/callback`</li>
        </ul>

        <img src="https://mintcdn.com/stackone-60/0xOS74FZX0AKbQ5Z/connectors/constantcontact/images/oauth2-setup-redirect-uri-dialog.png?fit=max&auto=format&n=0xOS74FZX0AKbQ5Z&q=85&s=f8a8ae996a2c44f5ed051cb163679550" alt="The Edit this redirect URI dialog with the callback URL entered and the Confirm button highlighted" width="1440" height="900" data-path="connectors/constantcontact/images/oauth2-setup-redirect-uri-dialog.png" />
      </div>
    </Step>

    <Step title="Save the application">
      <div data-guide-step data-guide-scopes="" data-guide-display-scopes-list="">
        <p>Confirming the dialog only stages the change — the page shows <strong>You have unsaved changes</strong> until you click <strong>Save</strong>.</p>

        <ul>
          <li>Click <strong>Save</strong> to apply the new redirect URI.</li>
        </ul>

        <img src="https://mintcdn.com/stackone-60/0xOS74FZX0AKbQ5Z/connectors/constantcontact/images/oauth2-setup-save-application.png?fit=max&auto=format&n=0xOS74FZX0AKbQ5Z&q=85&s=cc7863c68bf129aadf9b5e2b659c1d2e" alt="The application details page showing the unsaved changes banner with the Save button highlighted" width="1440" height="900" data-path="connectors/constantcontact/images/oauth2-setup-save-application.png" />
      </div>
    </Step>
  </Steps>
</section>

<section data-guide-section data-guide-scopes="">
  <h2>Copy your API Key and Client Secret</h2>

  <p>The application details page holds both values StackOne needs. The API Key is visible at any time; the Client Secret is generated on demand and displayed only once.</p>

  <Steps>
    <Step title="Copy the API Key">
      <div data-guide-step data-guide-scopes="" data-guide-display-scopes-list="">
        <p>In the <strong>App Details</strong> section, copy the value under <strong>API Key (Client Id)</strong> using the copy icon beside it.</p>

        <ul>
          <li>Paste it into the <strong>API Key (Client ID)</strong> field in the StackOne Connector profile.</li>
        </ul>

        <img src="https://mintcdn.com/stackone-60/0xOS74FZX0AKbQ5Z/connectors/constantcontact/images/oauth2-setup-api-key.png?fit=max&auto=format&n=0xOS74FZX0AKbQ5Z&q=85&s=d8c1578dd35b9366a53cd09d472f1270" alt="The App Details section with the API Key value and its copy icon highlighted" width="1440" height="900" data-path="connectors/constantcontact/images/oauth2-setup-api-key.png" />
      </div>
    </Step>

    <Step title="Generate a Client Secret">
      <div data-guide-step data-guide-scopes="" data-guide-display-scopes-list="">
        <p>Click <strong>Generate Client Secret</strong> beside the API Key.</p>

        <img src="https://mintcdn.com/stackone-60/0xOS74FZX0AKbQ5Z/connectors/constantcontact/images/oauth2-setup-generate-client-secret.png?fit=max&auto=format&n=0xOS74FZX0AKbQ5Z&q=85&s=b7ba93f86fff4ef61bd8d5f1274af581" alt="The App Details section with the Generate Client Secret button highlighted" width="1440" height="900" data-path="connectors/constantcontact/images/oauth2-setup-generate-client-secret.png" />
      </div>
    </Step>

    <Step title="Confirm generating the secret">
      <div data-guide-step data-guide-scopes="" data-guide-display-scopes-list="">
        <p>The <strong>App Secret</strong> dialog explains that the secret is used in the basic authentication method for access and refresh token calls. Click <strong>Generate Client Secret</strong> to confirm.</p>

        <ul>
          <li>Generating a new secret will make your current secret invalid.</li>
        </ul>

        <img src="https://mintcdn.com/stackone-60/0xOS74FZX0AKbQ5Z/connectors/constantcontact/images/oauth2-setup-app-secret-confirm.png?fit=max&auto=format&n=0xOS74FZX0AKbQ5Z&q=85&s=9b2549d258f690a286dc4f7920b4fae9" alt="The App Secret confirmation dialog with the Generate Client Secret button highlighted" width="1440" height="900" data-path="connectors/constantcontact/images/oauth2-setup-app-secret-confirm.png" />
      </div>
    </Step>

    <Step title="Copy the Client Secret">
      <div data-guide-step data-guide-scopes="" data-guide-display-scopes-list="">
        <p>The dialog shows the generated secret with the prompt <strong>Copy this Application secret and store it.</strong> Use the copy icon to copy it, then click <strong>Close</strong>.</p>

        <ul>
          <li>For application security, this is the only time you will see this secret.</li>
          <li>Store it securely and paste it into the <strong>Client Secret</strong> field in the StackOne Connector profile.</li>
        </ul>

        <img src="https://mintcdn.com/stackone-60/0xOS74FZX0AKbQ5Z/connectors/constantcontact/images/oauth2-setup-client-secret.png?fit=max&auto=format&n=0xOS74FZX0AKbQ5Z&q=85&s=25e91df3d3aff9870e8a0bed958d47cd" alt="The App Secret dialog showing the generated secret redacted, with the copy icon highlighted" width="1440" height="900" data-path="connectors/constantcontact/images/oauth2-setup-client-secret.png" />
      </div>
    </Step>
  </Steps>
</section>

<section data-guide-section data-guide-scopes="">
  <h2>Select the scopes to grant</h2>

  <p>Constant Contact checks a separate scope for each area of its API, and StackOne requests these scopes when you authorize the connection. Enter them as a space-separated list in the <strong>Scopes</strong> field in the StackOne Connector profile, or leave that field empty to request all of them. See the <a href="https://developer.constantcontact.com/api_guide/scopes.html" target="_blank" rel="noopener noreferrer">Constant Contact scopes documentation</a> for the full reference.</p>

  <Steps>
    <Step title="Choose the scopes this connection needs">
      <div data-guide-step data-guide-scopes="contact_data,campaign_data,account_read,account_update,offline_access" data-guide-display-scopes-list="contact_data,campaign_data,account_read,account_update,offline_access">
        <div className="connector-guide-actions-badge" data-guide-actions-badge data-guide-actions-badge-scopes="contact_data,campaign_data,account_read,account_update,offline_access">
          <span>Enables actions: </span><span data-guide-actions-badge-labels>Bulk Add Contacts To Lists, Bulk Add Tags To Contacts, Bulk Delete Contacts, Bulk Export Contacts, Bulk Import Contacts (JSON), Bulk Remove Contacts From Lists, Bulk Remove Tags From Contacts, Copy Event, Create Account Email, Create Account Physical Address, Create Contact, Create Contact List, Create Custom Field, Create Email Campaign, Create Event, Create Or Update Contact, Create Segment, Create Tag, Delete Contact, Delete Contact List, Delete Custom Field, Delete Email Campaign, Delete Segment, Delete Tag, Get Account Physical Address, Get Account Summary, Get Bulk Activity, Get Campaign Activity, Get Campaign Activity Schedule, Get Contact, Get Contact Activity Summary, Get Contact List, Get Contact Open And Click Rates, Get Custom Field, Get Email Bounces Report, Get Email Campaign, Get Email Campaign Activity Stats, Get Email Campaign Preview, Get Email Campaign Stats, Get Email Clicks Report, Get Email Did Not Opens Report, Get Email Forwards Report, Get Email Links Report, Get Email Opens Report, Get Email Opt-outs Report, Get Email Sends Report, Get Email Unique Opens Report, Get Event, Get Segment, Get Send History, Get Tag, Get User Privileges, List Account Emails, List Bulk Activities, List Contact Activity Reports, List Contact Lists, List Contacts, List Custom Fields, List Email Campaign Summary Reports, List Email Campaigns, List Events, List Segments, List Tags, Rename Segment, Resubscribe Contact, Schedule Campaign Activity, Test Send Email Campaign, Unschedule Campaign Activity, Update Account Physical Address, Update Account Summary, Update Campaign Activity, Update Contact, Update Contact List, Update Custom Field, Update Email Campaign Name, Update Event, Update Segment, Update Tag</span>
        </div>

        <p>Select the scopes below. Keep `offline_access` — without it Constant Contact returns no refresh token, and the connection stops working once the access token expires. Calling an endpoint without its scope returns a 403 error, so grant every scope the actions you plan to use require.</p>

        <div className="connector-guide-display-scopes" data-guide-display-scopes>
          <div className="connector-guide-scopes-container">
            <ul className="not-prose connector-guide-scopes-list">
              <li data-guide-display-scope="contact_data">
                <button type="button" className="connector-guide-scope-copy" aria-label="Copy contact_data" title="Copy scope" data-copy="contact_data">
                  <span className="connector-guide-scope-copy__label">contact\_data</span>
                  <span className="connector-guide-scope-copy__icon" aria-hidden="true">⧉</span>
                </button>
              </li>

              <li data-guide-display-scope="campaign_data">
                <button type="button" className="connector-guide-scope-copy" aria-label="Copy campaign_data" title="Copy scope" data-copy="campaign_data">
                  <span className="connector-guide-scope-copy__label">campaign\_data</span>
                  <span className="connector-guide-scope-copy__icon" aria-hidden="true">⧉</span>
                </button>
              </li>

              <li data-guide-display-scope="account_read">
                <button type="button" className="connector-guide-scope-copy" aria-label="Copy account_read" title="Copy scope" data-copy="account_read">
                  <span className="connector-guide-scope-copy__label">account\_read</span>
                  <span className="connector-guide-scope-copy__icon" aria-hidden="true">⧉</span>
                </button>
              </li>

              <li data-guide-display-scope="account_update">
                <button type="button" className="connector-guide-scope-copy" aria-label="Copy account_update" title="Copy scope" data-copy="account_update">
                  <span className="connector-guide-scope-copy__label">account\_update</span>
                  <span className="connector-guide-scope-copy__icon" aria-hidden="true">⧉</span>
                </button>
              </li>

              <li data-guide-display-scope="offline_access">
                <button type="button" className="connector-guide-scope-copy" aria-label="Copy offline_access" title="Copy scope" data-copy="offline_access">
                  <span className="connector-guide-scope-copy__label">offline\_access</span>
                  <span className="connector-guide-scope-copy__icon" aria-hidden="true">⧉</span>
                </button>
              </li>
            </ul>
          </div>
        </div>
      </div>
    </Step>
  </Steps>
</section>

## Creating the StackOne Connector Profile

To create the Connector Profile in StackOne for <strong>Constant Contact</strong>:

<Steps>
  <Step title="Navigate to Connector Profiles">
    Login to StackOne and navigate to [Connector Profiles](https://app.stackone.com/connector_profiles)
  </Step>

  <Step title="Create New Connector Profile">
    <ul>
      <li>Click <strong>+ Connector Profile</strong></li>
      <li>Search for and select <strong>Constant Contact</strong></li>
      <li>Select <strong>Type</strong> as <strong>OAuth 2.0</strong></li>

      <li>
        Fill out the fields using details retrieved from your provider:

        <ul className="connector-guide-field-list">
          <li><strong>API Key (Client ID)</strong></li>
          <li><strong>Client Secret</strong></li>
          <li><strong>Scopes</strong> (Optional)</li>
        </ul>
      </li>

      <li>(Optional) Select <strong>Actions</strong> to be enabled for this Connector Profile</li>
      <li>Click <strong>Create profile</strong></li>
    </ul>
  </Step>
</Steps>

Congratulations! The new Connector Profile will now show up in your project ready to be used. You can now continue to <a href="/connect/managing-connectors/linking-accounts">Link Accounts</a> for <strong>Constant Contact</strong>.


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.