Constant Contact
Constant Contact is an email marketing platform popular with small businesses and nonprofits. With Advanced Form Integration (AFI), every WordPress form submission can add the person to one or more Constant Contact lists, or update them if they are already a contact. For example, a newsletter sign-up or contact form can add new subscribers to your Website Leads list with their name, phone and address, and AFI Pro can also tag them and fill your custom fields.
Supported Features
- Subscribe To List: create a contact, or update an existing one, and add them to one or more lists.
- Safe updates: when the email already exists, AFI merges the new values into the existing contact. Fields you don’t map, existing list memberships, phone numbers, addresses, custom fields and notes are kept.
- Tags, custom fields and notes (AFI Pro): tag contacts (missing tags are created for you), fill any Constant Contact custom field, and add a note to the contact.
- Don’t update existing contacts (AFI Pro): optionally leave contacts that already exist untouched.
What You’ll Need
- A Constant Contact account.
- A Constant Contact application (API key and secret) created in the Constant Contact Developer Portal. The steps are below.
- At least one contact list in Constant Contact.
- AFI free for contacts, lists and standard fields. AFI Pro for tags, custom fields, notes and the “don’t update” option.
Connecting Constant Contact to AFI
Constant Contact uses OAuth 2.0. You create an application in the Developer Portal, give AFI its API key and secret, then sign in to Constant Contact once to approve access. AFI stores the tokens and refreshes them automatically.
Step 1: Copy the Redirect URI from AFI
- In WordPress, go to AFI > Settings and open the Constant Contact tab.
- The Instructions box shows your site’s Redirect URI. It looks like
https://your-site.com/wp-json/advancedformintegration/constantcontact. Copy it exactly.

Step 2: Create an application in the Constant Contact Developer Portal
- Open the Constant Contact Developer Portal and sign in with your Constant Contact account.
- Create a new application and enter a name, for example Advanced Form Integration.
- Select Authorization Code Flow and Implicit Flow.
- Select Rotating Refresh Tokens and click Create.
- Edit the new application. Paste the Redirect URI from AFI into the Redirect URI box.
- Generate the API secret (client secret) and copy it; it is shown only once. Also copy the API Key.
- Click Save.
Step 3: Add the account in AFI and authorize
- Back on AFI > Settings > Constant Contact, click Add Account.
- Enter a Title (any name that helps you recognise the account), and paste the API Key and API Secret.
- Click Save & Authorize. A Constant Contact window opens; sign in and click Allow.
- The window closes and the account shows Connected in the list.

You can connect several Constant Contact accounts and pick a different one in each integration. If an account shows Connection broken — Reconnect, click it to sign in again; your integrations keep their settings.
How to Create the Integration
- Go to AFI > Add New.
- Rename the auto-filled Integration Title if you like.
- Under Trigger, select your form plugin and the specific form.
- Under Action, select Constant Contact in the Platform dropdown. Pro users can select Constant Contact [PRO].
- Choose the Task: Subscribe To List.

- Select your Constant Contact Account. AFI loads the account’s lists.
- Tick one or more lists under Constant Contact List.
- Choose the Permission Type and Create Source (see the table below).
- Map Email (required) and any other fields. Use the Insert Field… dropdown next to each box to insert a form field; you can also type static text or combine both.
- Click Save Integration and submit a test entry from the front end.

Settings and Field Mapping
| Setting / Field | Description |
|---|---|
| Constant Contact List | One or more lists the contact is added to. On updates, new lists are added and existing memberships are kept. |
| Permission Type | Express: the person explicitly agreed to receive email (for example ticked an opt-in box). Implied: you have an existing business relationship. Applies to new contacts only; Constant Contact doesn’t allow changing it on updates. |
| Create Source | Account: you (the account owner) added the contact. Contact: the person signed up themselves. Use Contact for public sign-up forms. |
| Email (required) | The contact’s email address. Submissions without an email are skipped. |
| First Name, Last Name, Job Title, Company Name | Standard contact fields. |
| Work Phone, Home Phone, Cell Phone | Phone numbers by type. On updates, a number of the same type is replaced and other types are kept. |
| Birthday Month, Birthday Day | Numbers, for example 7 and 21. Constant Contact needs both to save a birthday. |
| Anniversary | A date such as 2020-06-15 or 06/15/2020. |
| Address Type, Address Line 1, City, State, ZIP, Country | Street address. Address Type is home, work or other. |
| Tags (AFI Pro) | Comma-separated tag names, for example Website Lead, {{field}}. Tags that don’t exist yet are created automatically. |
| Custom fields (AFI Pro) | Every custom field in your account, listed by name. |
| Note (AFI Pro) | Adds a note to the contact, for example the form’s message. |
Pro: Tags, Custom Fields and Notes
Select Constant Contact [PRO] as the platform. After you pick an account, AFI loads all of your Constant Contact custom fields and adds them below the standard fields, followed by Tags and Note.
![Constant Contact [PRO] fields: Tags with a static tag and a form field, two custom fields and Note](https://advancedformintegration.com/wp-content/uploads/2026/10/afi-constantcontact-pro-tags-custom-fields.png)
- Tags: separate several tags with commas. Mix static tags and form answers, for example
Website Lead, {{Subject}}. Missing tags are created in Constant Contact on the first submission. - Date custom fields: AFI converts common date formats (
2026-07-21,07/21/2026,21.07.2026,July 21, 2026) to theYYYY-MM-DDformat Constant Contact requires. Slash dates are read as US month/day first. A value that isn’t a date is skipped so the rest of the contact still saves.
Pro also adds the Don’t update if contact already exists option. Tick it when existing contacts must never be changed by a form, for example a public form where anyone could type someone else’s email.
![Constant Contact [PRO] settings with the Don't update if contact already exists checkbox](https://advancedformintegration.com/wp-content/uploads/2026/10/afi-constantcontact-pro-options.png)
How Updates Work
Before creating a contact, AFI looks up the email. If the contact exists, AFI reads it and merges your mapped values over it, so a form that only asks for a name and email doesn’t wipe the phone number, address, custom fields or lists the contact already has. Only fields that have a value in the submission are changed; empty answers never erase stored data. If two submissions for the same email arrive at once, the duplicate-email response from Constant Contact is caught and turned into an update as well.
Troubleshooting
The account shows “Connection broken — Reconnect”
The refresh token was revoked or expired, for example after the application’s secret was regenerated, access was removed in Constant Contact, or the site was offline for a long time. Click Reconnect (or edit the account and click Save & Authorize) and sign in again.
“Invalid redirect URI” in the Constant Contact window
The Redirect URI saved in the Developer Portal doesn’t match AFI’s exactly. Copy it again from AFI > Settings > Constant Contact and check http vs https, www and trailing slashes.
Authorization fails right away
Check that the application uses Authorization Code Flow with Rotating Refresh Tokens, and that the API key and secret belong to the same application. If you lost the secret, generate a new one and update the account in AFI.
The list dropdown is empty
Create a list in Constant Contact (Contacts > Lists), then re-select the account in the integration so AFI loads the lists again.
A custom field or date doesn’t save
Open AFI > Log and view the request. Date fields need a recognisable date; text that can’t be read as a date is skipped. Make sure the custom field exists in Constant Contact and re-select the account so AFI reloads the field list.
Contacts are not added
Open AFI > Log and check the entry for your submission; Constant Contact’s error message is shown in the response. No entry at all means the trigger didn’t fire, or Email was empty, so AFI skipped the request. Also check that the contact isn’t unsubscribed in Constant Contact, since unsubscribed contacts can’t be re-added to lists by a form.