Enabling the Constant Contact Integration



Our integration with Constant Contact allows lists of Contacts from Practifi to be created and sent to Constant Contact. These Contacts can then be used in campaigns launched and managed by Constant Contact. Updates to Contact details made within Practifi are synched back to Constant Contact. Users can also see the engagement their Contacts have had during campaigns directly from within Practifi in a new Event record.

Please note: This is not to be confused with the Campaign object in Practifi, which is used in conjunction with our Practifi Promote add-on service.

This article outlines the steps necessary to enable the Constant Contact integration within your Practifi organization.

**Note: This content is intended for system administrators and is technical in nature. Please discuss your integration installation plans with your Practifi Customer Support Team for their assistance.*

Integration Summary

With this integration, Practifi is set as the source of truth about Contacts and holds the most information about Contacts. The list is sent from within Practifi to Constant Contact, where Constant Contact then launches and tracks campaigns and sends the emails. Constant Contact will still hold the distribution list of contact emails, while Practifi will add the Contact record to these lists. Constant Contact will log the Contact's engagement activity, and Practifi will capture the engagement activity. Practifi will pass back opt-out requests from Contacts, and Constant Contact will respect Do Not Email/Opt-Out requests.

In this implementation:

  • No contact field information is copied from Constant Contact to Practifi.
    • No orphan Contacts are created in Practifi from Constant Contact.
    • The common Contacts between both systems are linked by their Constant Contact ID, stored in Practifi.
  • Only Email Address, First Name, Last Name, and Opt-in status are copied to Constant Contact when creating a new contact from Practifi.
  • An update to First Name, Last Name, and Opt-in status in Practifi does not update the corresponding Constant Contact fields.  
  • The current Constant Contact API does not support the following email campaigns:
    • Automated emails (Birthdays and Anniversaries Emails/Email Series/Welcome Emails/Resend Emails to Non-Openers). 

Before You Begin

You must have an account with Constant Contact, which will be used to authorize the connection between Practifi and the Constant Contact system. Moreover, to make the Constant Contact to Practifi data sync work smoothly for a large data volume, all client firms using this integration should consider reaching out to the Constant Contact team to upgrade their API key to be on the Partner Rate Plan as per the following Constant Contact recommendation:

Our standard API Key limits for our v2 API are 10,000 calls per day and 4 calls per second. Members of our partner program are given 250,000 calls per day and up to 20 calls per second. To associate your API Key to your partnership, please email webservices@constantcontact.com, CC your account manager, and include your Partner name as well as your API Key.

This integration does not have a Salesforce AppExchange app to install for this integration as all the code is in Practifi and is enabled by the steps below.


Enabling the Constant Contact integration with Practifi requires setting the following configurations:



API Key and Constant Contact URLs

Constant Contact

Create Auth Provider

Salesforce Settings

Create Named Credential

Salesforce Settings

Create Remote Sites

Salesforce Settings

Modify custom settings

Salesforce Settings

Schedule sync jobs

Salesforce Settings

Enable Practifi triggers

Salesforce Settings

Assign permission sets

Salesforce Settings

Add the Constant Contact table in the UI

Practifi Settings


API Key and Constant Contact URLs

The integration requires one user account to be designated as the account through which the integration with Practifi operates. This account is capable of logging in to the Constant Contact website (www.constantcontact.com) for the creation of campaigns, email layouts, adjustment of list memberships, and the launching of email campaigns.

From this Constant Contact account, the user needs to switch to the V3 API configuration section at https://v3.developer.constantcontact.com/ and log on with the primary user account.

  1. In Constant Contact, select the My Applications menu option.
  2. Select the New Application button.
  3. Supply the name of the application (in the example which follows, Practifi_Tempranillo).  Note that references to Constant Contact (e.g., CTCT) cannot be used. Select Save.mceclip3.png
  4. This will create the API Key (“Key”). This key will be used in the following step.mceclip0.png
  5. Click on Generate Secret, and copy this Secret (“Secret”) for the next step.
    Please note: The following panel is the only time the Secret will be visible. If this is closed before copying, a new Secret has to be created for the application. Be sure to copy the Secret before closing this window.


Create Auth Provider

  1. Navigate to Salesforce Setup by selecting the Settings cog in the upper right-hand corner within Practifi and select Setup from the drop-down menu.

  2. Use the Quick Find search bar to search for and select Auth. Providers.
  3. Select the New button on the Auth. Provider page.
  4. Complete the details on the new Auth Provider panel, as follows:
    • Provider Type - Open ID Connect
    • Name - We suggest using CTCT Prod
    • URL Suffix - Leave this as the default value.
    • Consumer Key - Enter the "Key" from above
    • Consumer Secret - Enter the "Secret" from above
    • Authorize Endpoint URL - https://authz.constantcontact.com/oauth2/default/v1/authorize
    • Token Endpoint URL - https://authz.constantcontact.com/oauth2/default/v1/token
    • Default Scope -  contact_data campaign_data
    • Send Access Token in Header - Checked
    • Include Consumer Secret in API Responses - Checked
    • Execute Registration As - Enter the user name of an account that can create OAuth Providers on the Practifi site.
  5. Select Save to finalize the creation. After selecting Save, additional details for the Auth Provider will be shown. 
  6. Copy the Callback URL string.mceclip2.png
  7. Head to Constant Contact and add this callback URL by using the Add another redirect URL link, or update the Redirect URL now that the Auth Provider has been set up.mceclip3.png
  8. Add additional details for the name and logo of the integration to appear elsewhere in Constant Contact.
  9.  Select Save to return to the list of Applications. The unique ID of the Practifi connection will be shown.

Create Named Credential

  1. In Salesforce Setup, use the Quick Find search bar to search for and select Named Credentials.
  2. Click on the New Named Credential button.
  3. Supply the following:

    • Label - We suggest using CTCT
    • Name - We suggest using CTCT 
    • URL - https://api.cc.email
    • Identity Type - Named Principal
    • Authentication Protocol - OAuth 2.0
    • Authentication Provider - Name-part of Named Credential (set up above)
    • Scope - contact_data campaign_data offline_access
    • Start Authentication Flow on Save - Checked
  4. As the user is likely to be logged on to Constant Contact at this time (setting up the Application) the authentication will take place immediately. Otherwise, a Constant Contact user will be asked to log on to Constant Contact first to establish the authentication.
  5. Select Allow to grant Practifi access to Constant Contact.
  6. Once the connection is authenticated, the Named Credential will reflect this by displaying Authenticated in the Authentication Status field.


Create Remote Sites

Two Remote Sites need to be created:

  • API Site
  • Token Site
  1. In Salesforce Setup, use the Quick Find search bar to search for and select Remote Site.
  2. Select the New Remote Site button.
  3. Supply the following for the API Remote Site:

    • Remote Site Name - We suggest using CTCT_api
    • Remote Site URL -  https://api.cc.email
  4. Navigate back to the All Remote SItes list and reselect the New Remote Site button.
  5. Supply the following for the Token Remote Site:
    • Remote Site Name - We suggest using CTCT_Auth
    • Remote Site URL - https://idfed.constantcontact.commceclip20.pngmceclip21.png


Modify Custom Settings

  1. In Practifi, select the settings cog in the upper right-hand corner and select Setup from the drop-down menu to navigate to Salesforce Setup. 
  2. In Salesforce Setup, use the Quick Find search bar to search for and select Custom Settings.
  3. Locate CTCT Integration Settings on the Custom Settings list.
  4. Click Manage next to CTCT Integration Settings.
  5. Supply the following:
    • API Version - v3
    • Named_Credentials - Name of Named Credential set up above
    • Checkboxes - Check all the options availablemceclip23.png

Schedule Sync Jobs

Scheduling of data synchronization jobs is needed for three types of data:

  • Constant Contact Lists - The groupings of Contacts that are then included in Constant Contact campaigns.
  • Constant Contact Contacts - Checking to see where there is a match by email address of a Constant Contact Contact and one in Practifi.
  • Constant Contact Activities - Downloading the engagement Activities of Contacts into the Interactions tab in Practifi.

To schedule these sync jobs:

  1. In Salesforce, go to the user’s dropdown and select Developer Console.mceclip24.png
  2. Under Debug, select Open Execute Anonymous Window.mceclip25.png
  3. Paste the following fragments of code into the window and execute. Do each one separately.
    • Constant Contact Lists - This copies the list of Email Lists from Constant Contact to Practifi 
      • // Create Sync List Jobs at 00:30

        practifi.CTCTIntegrationInvocable ctct = new practifi.CTCTIntegrationInvocable('synccontactlists');
         String sch = '00 30 00 * * ?';
         String jobID = System.schedule('CTCT sync contact list', sch, ctct);
    • Constant Contact Contacts - Links Contacts in Constant Contact with Practifi Contacts that share the same email address by copying over the Constant Contact ID into Practifi.
      • // Create Sync Contact Jobs at 01:00

        practifi.CTCTIntegrationInvocable ctct = new practifi.CTCTIntegrationInvocable('synccontacts');
         String sch = '00 00 01 * * ?';
         String jobID = System.schedule('CTCT sync contact', sch, ctct);
    • Constant Contact Activities - Copies the email engagement activity of each Contact logged in Constant Contact into Practifi.
      • // Create Sync Activities Jobs at 02:00

        practifi.CTCTIntegrationInvocable ctct = new practifi.CTCTIntegrationInvocable('syncactivities');
         String sch = '00 00 02 * * ?';
         String jobID = System.schedule('CTCT sync activity', sch, ctct);
  4. This will add the job and their date and time schedule to the list of Scheduled Jobs in Salesforce.mceclip5.png



Enable Practifi Triggers

Activate the Constant Contact trigger setting that syncs changes and new Contact information between Practifi with Constant Contact.

  1. In Salesforce Setup, use the Quick Find search bar to search for and select Custom Settings.
  2. Select Manage next to Practifi Trigger Settings.
  3. Select Edit. Scroll to the end of the list of settings and check the trigger for CTCT Contact List Membership; once this is checked, select Save.mceclip29.png

Assign Permission Sets

Assign the Practifi - Integration - Constant Contact permission set to the users who need access to the Constant Contact Integration.

  1. In Salesforce Setup, use the Quick Find search bar to search for and select Permission Sets.
  2. Select the Practifi - Integration - Constant Contact permission set. This row will already be present.mceclip8.png

  3. Select the Manage Assignments button and then click Add Assignment.mceclip9.png
  4. Select the users that should have access to the integration from the list of users and select Assign.

Add the Constant Contact Table to the Practifi Page

You need to add the Constant Contact table on the following pages:

  • Practifi - Client Record Page
  • Practifi - Contact Record Page
  1. Go to Salesforce Setup and select Object Manager 
  2. In Object Manager, search for Entity and select Entity from the results.
  3. Select the Lightning Record Pages tab and click Practifi - Client Record Page.
  4. Click Clone and then rename the cloned page.
  5. Drag and drop the Tabs component below the existing Activities component. Add two tabs, Timeline and Constant Contact.
  6. Under the Timeline tab, drag and drop the Activities component.
  7. Drag and drop the Practifi - Datatable (Record Page) component under the Constant Contact tab. In the Config Name section, enter Individual - Constant Contact - Interactions.
  8. Add the filter based on the Record Field as per the screenshot below. Filter Type equals Record Field, Field set to Type, Operator set to Equal and Value set to Individual.
  9. Drag and drop another Practifi - Datatable (Record Page) component under the Constant Contact tab. In the Config Name section, enter Household-Organization - Constant Contact - Interactions.
  10. Add the filters based on the Record Field as per the screenshots below. For the first filer, Filter Type equals Record Field, Field set to Type, Operator set to Equal and Value set to Household. For the second filter, Filter Type equals Record Field, Field set to Type, Operator set to Equal and Value set to Organization.
  11. Click Save.
  12. Activate the new page based on App, Record Type, and Profile. Click Activate and select App, Record Type, and Profile. Click Add Assignments.
  13. Select all the Practifi Apps Advisor, Client Service, Compliance, Data Management, Management, Marketing, Settings, and Team Member. Click Next.
  14. Select all the Client Record Types Household Client, Individual Client, and Organization Client. Click Next.
  15. Now select all the Practifi profiles (Advisor, Client Service, Management, Marketing, Settings, and Team Member) and System Administrator profiles. Review Assignments and click Save.
  16. Navigate to Salesforce Setup, select Object Manager and search for and select Contact. 
  17. Select the Lightning Record Pages tab and click Practifi - Contact Record Page.
  18. Select Clone and then rename the cloned page.
  19. Add a new tab for Constant Contact.
  20. Drag and drop the Practifi - Datatable (Record Page) component and add the Config Name Contact - Constant Contact - Interactions.
  21. Click Save.
  22. Activate the new page as Org default. Select Activation.
  23. Select Org Default and click Assign as Org Default.
  24. Select Desktop and phone and then select Next.
  25. Review the assignments and select Save.

Activation Notes

Initial Synching

Run the Synch Contact job before the first use of the integration. This will link Contacts in Constant Contact with those for which there is a match in Practifi for the same contact, as matched by Email address. The ConstantContactID is internally added to the Practifi Contact.

Manually Initiating Synchronization

  1. In the Salesforce backend, go to the user’s dropdown and select Developer Console.
  2. Under Debug, select Open Execute Anonymous Window.
  3. Copy and paste the below queries in the Anonymous Window to sync data from the Constant Contact immediately into Practifi. Once these three are entered with a line space between each query, select Execute.
    • To Sync Constant Contact Lists:
      •  practifi.CTCTIntegrationInvocable.execute(new List<String> {'synccontactlists'});
    • To Sync Constant Contact Contacts:
      •  practifi.CTCTIntegrationInvocable.execute(new List<String> {'synccontacts'});
    • To Sync Constant Contact Activities:
      •  practifi.CTCTIntegrationInvocable.execute(new List<String> {'syncactivities'})


This step initiates the respective scheduled jobs listed above. This will be useful if updates are made within Constant Contact (like new List names are created, or ongoing campaign activity needs to be brought into Practifi immediately). Check under Salesforce > Apex Jobs to ensure the job is completed cleanly.


Field Mapping

Contact Mapping

The following are the fields that are mapped from Practifi to a Constant Contact contact record.

Practifi UI field


Constant Contact UI field


Preferred Email

🠞 Daily

Email Address

Contact from Practifi, not already in Constant Contact, and added to a List

First Name

🠞 Daily

First Name

Contact from Practifi, not already in Constant Contact, and added to a List

Last Name

🠞 Daily

Last Name

Contact from Practifi, not already in Constant Contact, and added to a List

Do Not Email





Subscribed/Unsubscribed setting

Set with Contact’s Do Not Email setting if Contact from Practifi is not already in Constant Contact and added to a List

Set if Contact’s Do Not Email is changed in Practifi (either opt-in or opt-out) for the Contact

Engagement Activity Mapping

Marketing campaign engagement activities recorded in Constant Contact are available within Practifi as an Event. The activity type is displayed in Practifi with the following descriptions.


0 out of 0 found this helpful



Article is closed for comments.