Connector guide12-minute read50 MCP tools7 languages

Constant Contact to MCP: Contacts, Lists, Tags, Email Campaigns and Campaign Reports in any AI Agent

Work with a Constant Contact account from any AI agent: contacts with their email consent, lists, tags, custom fields and segments, bulk list and tag changes, email campaigns built from your HTML with preview and test send, and the reports of campaigns, links and single contacts. V3 API with OAuth sign-in; scheduling a send and deletes install switched off.

HCBy HelpCode teamUpdated 12 min read Open-source on GitHub

No credit card · 7-day trial · Self-host alternative available

Constant Contact

Constant Contact

Constant Contact email marketing: contacts with consent status, lists, tags, custom fields and segments, bulk list and tag changes, email campaigns built from HTML with preview, test and scheduled send, and campaign, link and contact reports. V3 API with OAuth.

tools

50

Region

INTL

Category

Email

Authentication

OAuth 2.0

Required env vars

CONSTANT_CONTACT_CLIENT_IDCONSTANT_CONTACT_CLIENT_SECRET
Install in one click on Cloud

7-day free trial · No credit card

  • 7-day free trial
    No credit card required
  • GDPR & SOC 2 ready
    EU data residency, audit logs
  • Open-source on GitHub
    Open source · AGPL-3.0
  • Works with ChatGPT, Claude, Gemini
    Any MCP-compatible client

Skip the install. Get this working in under 2 minutes.

Start a free trial on cloud.anythingmcp.com, add the Constant Contact in one click, then point your AI client (Claude, ChatGPT, Copilot or Cursor) at the generated MCP endpoint. No Docker, no git clone, zero engineering experience required.

Start free trial

Summary

Work with a Constant Contact account from any AI agent: contacts with their email consent, lists, tags, custom fields and segments, bulk list and tag changes, email campaigns built from your HTML with preview and test send, and the reports of campaigns, links and single contacts. V3 API with OAuth sign-in; scheduling a send and deletes install switched off.

Try asking

Example prompts for Constant Contact

Click any prompt to copy it. Paste into Claude, ChatGPT, Cursor, Gemini, Copilot or OpenClaw to run it against this connector.

Constant Contact · live via MCP
Share
Opus 4.7

Claude is AI and can make mistakes. Please double-check responses.

💡 No install? Use cloud.anythingmcp.com directly. Sign in, click Connectors → Constant Contact, paste your credentials, mint an MCP API key and you're done. No Docker, no git clone, no local server.

Constant Contact

Work with a Constant Contact account from any AI agent: contacts with their email consent, lists, tags, custom fields and segments, bulk list and tag changes, email campaigns built from your HTML with preview and test send, and the reports of campaigns, links and single contacts. V3 API with OAuth sign-in; scheduling a send and deletes install switched off.

Setup

Setting up takes about 10 minutes. You register your own application in the Constant Contact developer portal and sign in with the account you want to connect.

  1. Open the V3 developer portal at https://app.constantcontact.com/pages/dma/portal and sign in with the Constant Contact login of that account. New applications are private: until Constant Contact approves an application, only the user who created it can authorize it.
  2. Click New Application and give it a name (it appears on the consent screen). Choose Authorization Code Flow and Implicit Flow and a refresh token type: Rotating Refresh Tokens (recommended) or Long Lived Refresh Tokens. Create it.
  3. Open the application with Edit and add the redirect URI <your AnythingMCP URL>/api/mcp-oauth/callback, on AnythingMCP Cloud https://cloud.anythingmcp.com/api/mcp-oauth/callback, character for character.
  4. Click Generate Client Secret. The secret is shown only once. Save the application.
  5. Paste the application's API Key (it is the OAuth client ID) into CONSTANT_CONTACT_CLIENT_ID and the secret into CONSTANT_CONTACT_CLIENT_SECRET. Leave CONSTANT_CONTACT_REFRESH_TOKEN empty and install.
  6. On the connector page click Authorize with Provider and sign in to Constant Contact. The connector asks for the scopes account_read contact_data campaign_data offline_access (offline_access is what returns a refresh token).
  7. Run constant_contact_get_account_summary: it shows the organization and confirms the sign-in.

An access token lasts 24 hours and is renewed automatically with the refresh token. With rotating refresh tokens every renewal returns a new refresh token and the previous one stops working, so do not use the stored token anywhere else; with long-lived ones the same token keeps working. Either kind expires after 180 days without use: then authorize again. What the AI may do also depends on the privileges of the Constant Contact user who signed in (constant_contact_get_user_privileges).

What it reads: the account summary, the account's sender addresses with their confirm status, and the privileges of the signed-in user. Contacts filtered by email, status, lists, tags, segment or created, updated and opt-out dates, with their email permission, opt-in and opt-out details and, on request, lists, tags, custom fields, phones, addresses and notes; contact counts per consent state. Lists with member counts, tags with contact counts, custom fields and segments with their criteria. Background activities and their progress. Email campaigns with their activities, the subject, sender, audience and HTML of an email, an HTML preview, the schedule and the send history. Reports: results of recent campaigns (sends, opens, clicks, forwards, unsubscribes, bounces, spam reports), stats per campaign and per activity, clicks per link, the contacts behind each number, and the email history and open and click rates of one contact.

What it writes: adds or updates contacts (constant_contact_create_or_update_contact works by email, changes only the fields you send and is the safe default; constant_contact_update_contact replaces the whole contact, so the AI reads it first), creates and renames lists, tags and custom fields, adds and removes contacts on lists and tags in bulk, creates draft email campaigns from your HTML, sets their audience, renames them, sends test emails and cancels a scheduled send. Bulk changes run in the background and return an activity_id that the AI follows with constant_contact_get_activity until the state is completed.

Building an email: constant_contact_create_email_campaign makes a draft from your own HTML (custom code email, format_type 5). The HTML must contain [[trackingImage]] for opens to be tracked, and the sender and reply-to must be confirmed addresses from constant_contact_list_account_emails. Then constant_contact_update_email_campaign_activity sets contact_list_ids or segment_ids; it replaces the activity, so the AI reads it first and sends every field again. Check the result with constant_contact_get_email_preview and constant_contact_send_test_email (up to 5 addresses per test, 50 test recipients a day per account).

Switched off at install: constant_contact_schedule_email_campaign_activity (sends to every contact on the lists and cannot be taken back once sending starts), constant_contact_delete_contact and constant_contact_delete_contact_list. A workspace admin turns them on when the team needs them. With scheduling on, the AI shows you subject, sender, audience and time and schedules only after your yes.

Consent: add contacts only when they agreed to receive email from the business, and never set permission_to_send to explicit for people who did not opt in. Unsubscribed contacts cannot be subscribed again through the API without their own action. A contact can be on at most 50 lists.

Data formats: ids of contacts, lists, tags, custom fields, campaigns and campaign activities are UUIDs; segment ids are integers. A campaign has several activities: reports, previews, tests and schedules take the campaign_activity_id of the primary_email activity, not the campaign_id. Times are ISO 8601 in UTC (2026-10-30T14:05:00.000Z). Campaign current_status is Draft, Scheduled, Executing, Done, Error or Removed; permission_to_send is explicit, implicit, not_set, pending_confirmation, temp_hold or unsubscribed. Report counts are unique contacts unless the report says otherwise, and rates are percentages.

Paging: lists carry _links.next.href while more pages exist. Contacts, lists, tags, custom fields, activities and campaigns use the cursor= value of that link as cursor; reports and segments use the next= value as next. The AI keeps the other filters the same between pages.

Limits: 10,000 requests a day per application (reset at 00:00 UTC) and 4 requests a second; beyond either the API answers 429 (quota_exceeded or throttled).

Common errors: 401 means an expired or revoked token: click Authorize with Provider again, and check that the API key and secret belong to the same application. At sign-in, a redirect error means the redirect URI does not match exactly. 403 is a missing scope or user privilege (constant_contact_get_user_privileges shows which). 404 is an unknown id. 409 is a duplicate email, list, tag or campaign name. 400 explains invalid input in error_key and error_message. A 202 from constant_contact_list_contacts with a segment means the result is still being built: ask again.

The connector does not cover events, SMS campaigns, social posts or partner endpoints, and does not build emails with the drag-and-drop editor.

Prerequisites: CONSTANT_CONTACT_CLIENT_ID, CONSTANT_CONTACT_CLIENT_SECRET (filled in by Authorize with Provider: CONSTANT_CONTACT_REFRESH_TOKEN)

Install the connector locally

curl -fsSL https://raw.githubusercontent.com/HelpCode-ai/anythingmcp/main/docker-compose.quickstart.yml -o docker-compose.yml
printf 'JWT_SECRET=%s\nENCRYPTION_KEY=%s\n' "$(openssl rand -hex 32)" "$(openssl rand -hex 32)" > .env
docker compose up -d

Open http://localhost:3000/connectors/store, pick Constant Contact and paste in the env vars listed under Prerequisites.

Available tools

ToolWhat it does
constant_contact_get_account_summaryAccount details of the connected Constant Contact account: organization name, contact email and phone, website, time zone, country, state…
constant_contact_list_account_emailsEmail addresses of the account with their confirm status (CONFIRMED or UNCONFIRMED) and roles
constant_contact_get_user_privilegesPrivileges of the Constant Contact user who authorized the connector (for example contacts:write, campaign:send, ui:campaign:metrics)
constant_contact_list_contactsSearch contacts, newest changes not guaranteed first
constant_contact_get_contactOne contact by id with its email permission, opt-in and opt-out details and, with include, its lists, tags, custom fields, phone numbers…
constant_contact_get_contact_countsTotal number of contacts in the account and how many are in each email consent state (explicit, implicit, pending confirmation…
constant_contact_create_contactCreate a new contact
constant_contact_create_or_update_contactAdd a contact by email address or update the existing one, and add it to one or more lists
constant_contact_update_contactReplace a contact's data
constant_contact_delete_contactDelete a contact
constant_contact_list_contact_listsContact lists of the account with list_id, name, description, favorite flag and, with include_membership_count, the number of members
constant_contact_get_contact_listOne contact list by id, optionally with its number of members
constant_contact_create_contact_listCreate a contact list
constant_contact_update_contact_listRename a list or change its description or favorite flag
constant_contact_delete_contact_listDelete a contact list and its memberships (the contacts stay in the account)
constant_contact_add_contacts_to_listsAdd contacts to one or more lists as a background activity
constant_contact_remove_contacts_from_listsRemove contacts from one or more lists as a background activity (the contacts stay in the account)
constant_contact_list_tagsTags of the account with tag_id, name, tag_source and, with include_count, the number of tagged contacts
constant_contact_get_tagOne tag by id, optionally with the number of contacts that carry it
constant_contact_create_tagCreate a tag
constant_contact_update_tagRename a tag
constant_contact_add_tags_to_contactsPut one or more tags on contacts as a background activity
constant_contact_remove_tags_from_contactsTake one or more tags off contacts as a background activity (the tags themselves stay)
constant_contact_list_custom_fieldsCustom contact fields of the account with custom_field_id, label, name, type and, for select fields, the choices
constant_contact_get_custom_fieldOne custom field by id with its label, name, type, metadata and select choices
constant_contact_create_custom_fieldCreate a custom contact field
constant_contact_list_segmentsSegments (saved contact filters) of the account with segment_id, name and dates
constant_contact_get_segmentOne segment with its criteria (segment_criteria as JSON text)
constant_contact_list_activitiesBackground activities (bulk list and tag changes, imports, exports, deletes) with their state and percent done, newest first
constant_contact_get_activityStatus of one background activity: state (initialized, processing, completed, cancelled, failed, timed_out), percent_done, counts and any…
constant_contact_list_email_campaignsEmail campaigns of the account with campaign_id, name, current_status (Draft, Scheduled, Executing, Done, Error, Removed), type and created…
constant_contact_get_email_campaignOne email campaign with its status and campaign_activities: each with campaign_activity_id and role (primary_email is the email itself…
constant_contact_get_email_campaign_activityOne email campaign activity: subject, from and reply-to, preheader, format_type, current_status, the contact_list_ids or segment_ids it…
constant_contact_create_email_campaignCreate a draft email campaign from your own HTML (custom code email, format_type 5)
constant_contact_update_email_campaign_activityChange a draft (or sent, for some fields) primary_email activity: subject, sender, HTML, preheader, footer address and the audience…
constant_contact_rename_email_campaignRename an email campaign (the internal name, not the subject)
constant_contact_get_email_previewHTML preview of an email campaign activity, with contact and custom field variables filled from the account owner's data, plus the preview…
constant_contact_send_test_emailSend a test of an email campaign activity to up to 5 addresses (50 test recipients a day per account)
constant_contact_get_email_scheduleScheduled send time of an email campaign activity; an empty array when it is not scheduled
constant_contact_schedule_email_campaign_activitySend an email campaign activity to its lists or segment, now (scheduled_date "0") or at a time
constant_contact_unschedule_email_campaign_activityCancel the schedule of an email campaign activity in SCHEDULED status; it goes back to its previous status (usually DRAFT)
constant_contact_get_email_send_historyEach time an email campaign activity was sent: date, number of contacts, the lists or segments used, and whether the send completed or…
constant_contact_list_email_campaign_summariesResults of sent email campaigns, last sent first: per campaign the unique sends, opens, clicks, forwards, unsubscribes (optouts), bounces…
constant_contact_get_email_campaign_statsStats for one or more email campaigns: counts (sends, opens, clicks, forwards, optouts, bounces, abuse, not opened) and percents (open…
constant_contact_get_email_campaign_activity_statsStats for up to 10 email campaign activities: counts per tracked action and the campaign each belongs to
constant_contact_get_email_links_reportLinks in an email campaign activity with the number of unique contacts who clicked each and the link action. url_id from here filters the…
constant_contact_get_email_tracking_reportContacts behind an email campaign activity's numbers, most recent first: who it was sent to, who opened (every open or unique opens), who…
constant_contact_get_contact_activity_detailsWhat one contact did with your emails and landing pages, newest first: sends, opens, clicks, bounces, unsubscribes, forwards and landing…
constant_contact_get_contact_activity_summaryThe emails sent to one contact in a date range (up to the 200 most recent campaigns) with what the contact did with each: opens, clicks…
constant_contact_get_contact_open_click_ratesAverage open and click rate of one contact over a date range of up to 5 years, with the number of emails counted

Example prompts

  • "How did our last three email campaigns do? Compare opens, clicks, unsubscribes and bounces."
  • "Add [email protected] to the Newsletter list with first name Anna. She signed up on our website."
  • "Who clicked the pricing link in last week's campaign? List their email addresses."
  • "Create a draft campaign from this HTML for the VIP customers list and send a test to me before anything else."
  • "Tag everyone on the Webinar October list with webinar-2026 and tell me when the bulk change is done."

Next steps

Was this guide helpful?

Your Constant Contact agent is one click away.

Install the connector, paste the key, prompt your AI client. Free for 7 days, no credit card.

Related guides

Connectors

How to Connect Constant Contact to ChatGPT via MCP

Work with a Constant Contact account from any AI agent: contacts with their email consent, lists, tags, custom fields and segments, bulk list and tag changes, email campaigns built from your HTML with preview and test send, and the reports of campaigns, links and single contacts. V3 API with OAuth sign-in; scheduling a send and deletes install switched off.

Connectors

How to Connect Constant Contact to Claude via MCP

Work with a Constant Contact account from any AI agent: contacts with their email consent, lists, tags, custom fields and segments, bulk list and tag changes, email campaigns built from your HTML with preview and test send, and the reports of campaigns, links and single contacts. V3 API with OAuth sign-in; scheduling a send and deletes install switched off.

Connectors

How to Connect Constant Contact to Cursor via MCP

Work with a Constant Contact account from any AI agent: contacts with their email consent, lists, tags, custom fields and segments, bulk list and tag changes, email campaigns built from your HTML with preview and test send, and the reports of campaigns, links and single contacts. V3 API with OAuth sign-in; scheduling a send and deletes install switched off.

Connectors

How to Connect Constant Contact to Gemini via MCP

Work with a Constant Contact account from any AI agent: contacts with their email consent, lists, tags, custom fields and segments, bulk list and tag changes, email campaigns built from your HTML with preview and test send, and the reports of campaigns, links and single contacts. V3 API with OAuth sign-in; scheduling a send and deletes install switched off.

Connectors

How to Connect Constant Contact to Meta Muse via MCP

Work with a Constant Contact account from any AI agent: contacts with their email consent, lists, tags, custom fields and segments, bulk list and tag changes, email campaigns built from your HTML with preview and test send, and the reports of campaigns, links and single contacts. V3 API with OAuth sign-in; scheduling a send and deletes install switched off.

Connectors

How to Connect Constant Contact to Microsoft Copilot via MCP

Work with a Constant Contact account from any AI agent: contacts with their email consent, lists, tags, custom fields and segments, bulk list and tag changes, email campaigns built from your HTML with preview and test send, and the reports of campaigns, links and single contacts. V3 API with OAuth sign-in; scheduling a send and deletes install switched off.