---
title: "Constant Contact MCP server for AI agents - actionlake"
description: "Give Claude 115 Constant Contact actions through one MCP server: contacts, reports. Your agent never holds the credential. 100,000 calls a month free."
canonical: https://actionlake.com/connectors/constant-contact
updated: 2026-09-21
---

Connectors · Email & messaging

# Constant Contact MCP server for AI agents.

actionlake is an MCP gateway: one remote MCP server that connects Claude and other MCP clients to Constant Contact and the rest of your systems. It gives your agent 115 Constant Contact actions (61 reads, 39 writes and 15 that wait for a confirmation) and holds the Constant Contact credential itself, so the agent never does. It paces Constant Contact's limits and records every call. Connecting Constant Contact needs your own Constant Contact OAuth app and one admin sign-in.

[Connect Constant Contact free](https://actionlake.com/console?start=sandbox) [See pricing](https://actionlake.com/pricing)

100,000 free calls a month. No card, no email, no password: press Start a free sandbox on the next screen and keep the key it shows you.

`claude mcp add --transport http actionlake https://connect.actionlake.com/mcp`

the first call

```
do {
  action: "constant_contact.account.get",
  intent: "check which Constant Contact account is connected"
}
# Get account summary · read · 1 upstream call
```

- 115 actions in one signed file
- 61 read look, never change
- 39 write create and update
- 15 wait for a yes destructive, confirmed first

Set up

## Connect Constant Contact in three steps.

1. 01
   ### Add actionlake to Claude.
   Run the command once in Claude Code; its consent page can create a free sandbox: 100,000 calls a month, no card. In the Claude app, add a custom connector with the URL below and paste your key on the consent page. Creating a new sandbox from the Claude app is not yet tested by us.
   `https://connect.actionlake.com/mcp`
2. 02
   ### Connect Constant Contact.
   OAuth 2.0, authorization code with PKCE. You register your own OAuth app with Constant Contact, an admin signs in once, and you paste the app's client id and secret and the tokens from that sign-in; actionlake renews the access token from then on. actionlake stores what you paste write-only, sealed under your tenant's key.
   Before the first sign-in, Constant Contact needs an OAuth app of your own, registered in its developer portal. actionlake has no Constant Contact app to lend you.
   - `access_token` Access token from one sign-in with your own OAuth app
   - `refresh_token` Refresh token from the same sign-in; the access token is renewed from it
   - `client_id` Constant Contact app API key (client id)
   - `client_secret` Constant Contact app secret
   ```
   account { op: "connections.requirements", service: "constant_contact" }
   # free: exactly what to paste, and what is found for you
   ```
3. 03
   ### Make the first call. Check before a write.
   Ask in plain words; Claude picks the action. Before anything changes, `check` validates the call and prices it, for free.
   ```
   do    { action: "constant_contact.account.get" }
   # get account summary · read · 1 upstream call
   check { action: "constant_contact.events.create", input: { … } }
   # free: inputs, permissions, cost and confirmations, nothing sent
   ```

Constant Contact at a glance

**Sign-in**

OAuth 2.0, authorization code with PKCE. You register your own OAuth app with Constant Contact, an admin signs in once, and you paste the app's client id and secret and the tokens from that sign-in; actionlake renews the access token from then on.

**You provide**

`access_token` `refresh_token` `client_id` `client_secret`

**Limits we pace to**

4 calls a second and 10,000 a day, per connection

**API covered**

Constant Contact V3 API API v3`api.cc.email/v3`

**Built from**

Constant Contact's documentation, read 20 September 2026[developer.constantcontact.com](https://developer.constantcontact.com/api_reference/bundledWithSamples.yaml) [developer.constantcontact.com](https://developer.constantcontact.com/api_guide/server_flow.html)

**Service file**

Version 1.0.0, signed (Ed25519)

**Cached reads**

61 of 61 reads, for up to an hour; a write clears what it affects

**Ready-made plans**

8 in the store

**Shared entities**

4, so ask can line Constant Contact up with your other systems

**Data**

Processed and stored in Sydney, Australia. No US region yet

Capabilities

## What an AI agent can do in Constant Contact.

115 actions in 8 areas. Every one carries its effect, so a key can allow the reads and hold the rest.

- **61** read look, never change
- **39** write create and update
- **15** destructive wait for a confirmation

1. ### Contacts
   32
   14 read · 13 write · 5 destructive
   List contacts · List tags · List contact lists · Create a contact
2. ### Reports
   22
   22 read · 0 write · 0 destructive
   List email campaign summaries · Get a contact's activity details · Get a contact's activity summary · Get an email bounces report
3. ### Campaigns
   20
   9 read · 7 write · 4 destructive
   List email campaigns · Create an email campaign · Get an email campaign · Rename an email campaign
4. ### Bulk
   12
   2 read · 4 write · 6 destructive
   Delete contacts in bulk · Delete tags in bulk · Delete contact lists in bulk · Import contacts from JSON
5. ### Events
   11
   4 read · 7 write · 0 destructive
   List events · Create an event · Get an event · Update an event
6. ### Account
   10
   5 read · 5 write · 0 destructive
   List the account user's privileges · List account email addresses · Get account summary · Get account physical address
7. ### Automations
   4
   2 read · 2 write · 0 destructive
   List automations · Create an automation · Get an automation · Update an automation
8. ### Social
   4
   3 read · 1 write · 0 destructive
   Create a social media post · List social network connections · List social media profiles · List social hashtag groups

Top actions

## The Constant Contact API, shaped for agents.

The ids your agent types, what each does, and the one name it shares with other systems. 72 of Constant Contact's 72 action names are shared with at least one other connector, so an agent learns them once.

| Action | What it does | Effect | Same name in |
| --- | --- | --- | --- |
| `constant_contact.events.list` List events | List the account's events with status, dates and registration URL. | read | `comm.event.list` 61 connectors |
| `constant_contact.contacts.list` List contacts | List or search contacts by status, email, list, tag, segment or date range. | read | `crm.contact.list` 177 connectors |
| `constant_contact.contact_tags.list` List tags | List the account's contact tags, optionally with tagged-contact counts. | read | `crm.tag.list` 65 connectors |
| `constant_contact.contact_lists.list` List contact lists | List the account's contact lists, optionally with membership counts. | read | `crm.contact_list.list` 34 connectors |
| `constant_contact.events.create` Create an event | Create a new event with default settings; name and times are optional query parameters. | write | `comm.event.create` 52 connectors |
| `constant_contact.contacts.create` Create a contact | Create a contact with an email address, names, lists, tags, custom fields and consent. | write | `crm.contact.create` 161 connectors |
| `constant_contact.contact_tags.create` Create a tag | Create a contact tag. | write | `crm.tag.create` 49 connectors |
| `constant_contact.contacts.delete` Delete a contact | Delete (unsubscribe and remove) a contact. Answers 204 with no body. | destructive | `crm.contact.delete` 147 connectors |
| `constant_contact.contact_lists.create` Create a contact list | Create a contact list with a name and optional description. | write | `crm.contact_list.create` 29 connectors |
| `constant_contact.email_campaigns.list` List email campaigns | List email campaigns with status and type, filterable by updated date. | read | `comm.campaign.list` 41 connectors |
| `constant_contact.email_campaigns.create` Create an email campaign | Create an email campaign with its primary email campaign activity (from, subject, HTML content). | write | `comm.campaign.create` 38 connectors |
| `constant_contact.segments.create` Create a segment | Create a contact segment from a name and segment criteria (a JSON string). | write | `comm.audience_segment.create` 16 connectors |

Try it

## Prompts to paste into Claude.

Each one names the Constant Contact actions it will call, so you know what it reads and what it changes before you send it.

1. Read read
   Find the Constant Contact contacts with no email address, so we can clean them up.
   calls `constant_contact.contacts.list`
2. Plan read
   Build a performance digest for a recent email campaign in Constant Contact.
   calls `constant_contact.email_campaigns.get` `constant_contact.campaign_activities.get` `constant_contact.email_reports.sends` `constant_contact.email_reports.unique_opens` `constant_contact.email_reports.clicks` +3 more
3. Plan write
   Review how one contact has engaged and retag them in Constant Contact.
   calls `constant_contact.contacts.get` `constant_contact.contact_reports.open_and_click_rates` `constant_contact.contact_reports.activity_details` `constant_contact.contact_sms_engagement.list` `constant_contact.taggings.bulk_add` +1 more
4. Write write
   Create an event in Constant Contact. Show me exactly what you will send before you save it.
   calls `constant_contact.events.create`
5. Across systems read
   Which contacts are in both Constant Contact and HaloPSA, and how many are in only one of them?
   calls `constant_contact.contacts.list` `halopsa.users.list`

Across your systems

## Constant Contact, joined to the rest of your business.

One `ask` fetches from Constant Contact and another system, joins the rows on the same customer on our side, and hands your agent the answer, not every row.

- Which contacts are in both Constant Contact and HaloPSA, and how many are in only one of them?
  `constant_contact.contacts.list` + `halopsa.users.list`, on `crm.contact` · [HaloPSA](https://actionlake.com/connectors/halopsa)
- Which contacts are in both Constant Contact and NetSuite, and how many are in only one of them?
  `constant_contact.contacts.list` + `netsuite.views.contacts`, on `crm.contact` · [NetSuite](https://actionlake.com/connectors/netsuite)

Also mapped by other connectors `crm.contact` **192** `comm.event` **47** `crm.tag` **47** `crm.contact_list` **22**

ask

```
ask {
  intent: "which contacts are in both Constant Contact and HaloPSA, and how many are in only one of them",
  steps: [
    { action: "constant_contact.contacts.list", as: "people", input: {}, limit: 100, max_pages: 5 },
    { action: "halopsa.users.list", as: "people2", input: {}, limit: 100, max_pages: 5 },
    { join: {
        left: "people",
        right: "people2",
        on: "crm.contact",
        group_by: "people.email",
        select: ["people.email", "count(people2.id) as in_halopsa"]
    } }
  ]
}
```

Example. Run it through check first: it validates the steps and prices them, and it is free.

The plan store

## Ready-made plans for Constant Contact.

8 plans in the store. Install one and your agent runs it by name; the reply says which connections are still missing. A schedule can run a plan on a timetable. There are no triggers or webhooks, by design.

1. ### Build a performance digest for a recent email campaign
   Use it when Someone asks how a specific Constant Contact email campaign performed.
   **Effect**
   read
   **Steps**
   8
   **Needs**
   campaign id and campaign activity id
   **Install**
   `constant_contact-campaign-performance-digest`
2. ### Check in the registrants who paid for an event track
   Use it when Staff are on the door at an event and want the paid registrants for a track checked in together.
   A person decides Mark every paid registrant on this event track as checked in.
   **Effect**
   write
   **Steps**
   5 · loops
   **Needs**
   event id and track id
   **Install**
   `constant_contact-event-checkin-sweep`
3. ### Export a segment of contacts and wait for the file
   Use it when Someone needs a contact export file for a segment and wants to be handed the finished job, not a ticket number.
   **Effect**
   write
   **Steps**
   6
   **Needs**
   segment id
   **Install**
   `constant_contact-export-contacts-and-wait`
4. ### Resend a campaign to the contacts who never opened it
   Use it when A campaign has been sent and someone wants a second attempt aimed at the people who did not open it.
   A person decides Resend this campaign to every contact who did not open it.
   **Effect**
   write
   **Steps**
   6
   **Needs**
   campaign activity id and resend body
   **Install**
   `constant_contact-resend-to-non-openers`
5. ### Review how one contact has engaged and retag them
   Use it when Someone asks whether a particular contact is still engaged and wants the answer recorded on the contact.
   **Effect**
   write
   **Steps**
   7
   **Needs**
   contact id, tag id, start, end and contact body
   **Install**
   `constant_contact-contact-engagement-review`
6. ### Import new subscribers onto a welcome list and tag them
   Use it when A batch of new subscribers has been collected elsewhere and needs loading into Constant Contact with a welcome list and tag.
   **Effect**
   write
   **Steps**
   7
   **Needs**
   list id, tag id and import body
   **Install**
   `constant_contact-onboard-new-subscribers`
7. ### Tag stale contacts on a list and remove them from it
   Use it when A mailing list has gone stale and someone wants the inactive contacts tagged and taken off it.
   A person decides Tag the stale contacts on this list and remove them from it.
   **Effect**
   destructive
   **Steps**
   6 · loops
   **Needs**
   list id, tag id, updated before, window start and window end
   **Install**
   `constant_contact-list-hygiene-sweep`
8. ### Archive a segment's membership before deleting it
   Use it when A segment is no longer used and should be deleted, but its membership must be captured first.
   A person decides Delete this segment permanently now that its membership has been exported.
   **Effect**
   destructive
   **Steps**
   6
   **Needs**
   segment id
   **Install**
   `constant_contact-retire-old-segment`

install a plan

```
account { op: "plans.install", slug: "constant_contact-campaign-performance-digest" }
# then ask for it by name; a schedule can run it on a timetable
```

Governance for Constant Contact

## Destructive actions wait for a yes.

15 Constant Contact actions are destructive. These are all of them:

- Delete a contact `constant_contact.contacts.delete`
- Delete a tag `constant_contact.contact_tags.delete`
- Delete a contact list `constant_contact.contact_lists.delete`
- Delete contacts in bulk `constant_contact.contacts.bulk_delete`
- Delete an email campaign `constant_contact.email_campaigns.delete`
- Delete tags in bulk `constant_contact.contact_tags.bulk_delete`
- Delete a segment `constant_contact.segments.delete`
- Delete contact lists in bulk `constant_contact.contact_lists.bulk_delete`
- Delete a resend to non-openers `constant_contact.non_opener_resends.delete`
- Unschedule an email campaign activity `constant_contact.campaign_activity_schedules.delete`
- Delete a custom field `constant_contact.custom_fields.delete`
- Remove contacts from lists `constant_contact.list_memberships.bulk_remove`
- Delete an A/B test `constant_contact.campaign_activity_ab_tests.delete`
- Delete custom fields in bulk `constant_contact.custom_fields.bulk_delete`
- Remove tags from contacts `constant_contact.taggings.bulk_remove`

A destructive action runs only with `confirm: true`. Under the `human` policy the agent cannot confirm for itself: the run stops until a named person approves, in the console or from a signed link in an email. The cap on a key is refused before the call is sent, never after.

do constant_contact.contacts.delete confirm_policy: **human**

Delete a contact?

**intent:** the user asked me to delete a contact

run suspended · waiting for a named person · key _constant-contact-agent_ cannot confirm itself

In the console, or from an emailed signed link.

a key for this connector

```
account {
  op: "keys.create", name: "constant-contact-agent",
  allowed_actions: ["constant_contact.*"], cap_calls: 2000,
  confirm_policy: "human_for_writes",
  approval_rules: [
    { match: "constant_contact.contacts.delete", approver: "lead@example.com" },
    { match: "constant_contact.contact_tags.delete", approver: "lead@example.com" },
    { match: "constant_contact.contact_lists.delete", approver: "lead@example.com" }
  ]
}
```

Illustrative. Scoped to Constant Contact only, capped at 2,000 upstream calls, every write confirmed, and the destructive ones approved by a named person.

Cost

## What Constant Contact costs on actionlake.

Every Constant Contact action is one upstream call, the only thing actionlake bills. Searching, `check`, `cost`, `account` and any call Constant Contact refused with 401, 403, 429 or a 5xx are free. Paid plans start at US$49 a month for 250,000 calls, with overage from US$0.30 down to US$0.18 per 1,000.

- 1 upstream call per action all 115 Constant Contact actions
- 28 actions page each page of a long list is one call
- 61 reads can be cached a cache hit costs nothing
- 100,000 calls a month, free paid plans from US$49 a month for 250,000

[See pricing](https://actionlake.com/pricing)

Action index

## Every Constant Contact action.

115 actions by area: the id your agent calls, what it does, and its effect.

**Contacts 32**

- `constant_contact.contact_counts.get` Get contact consent counts read
- `constant_contact.contact_id_xrefs.list` Cross-reference V2 and V3 contact ids read
- `constant_contact.contact_list_id_xrefs.list` Cross-reference V2 and V3 list ids read
- `constant_contact.contact_lists.create` Create a contact list write
- `constant_contact.contact_lists.delete` Delete a contact list destructive
- `constant_contact.contact_lists.get` Get a contact list read
- `constant_contact.contact_lists.list` List contact lists read
- `constant_contact.contact_lists.update` Update a contact list write
- `constant_contact.contact_sms_engagement.list` Get a contact's SMS engagement history read
- `constant_contact.contact_tags.create` Create a tag write
- `constant_contact.contact_tags.delete` Delete a tag destructive
- `constant_contact.contact_tags.get` Get a tag read
- `constant_contact.contact_tags.list` List tags read
- `constant_contact.contact_tags.update` Rename a tag write
- `constant_contact.contacts.create` Create a contact write
- `constant_contact.contacts.delete` Delete a contact destructive
- `constant_contact.contacts.get` Get a contact read
- `constant_contact.contacts.list` List contacts read
- `constant_contact.contacts.resubscribe` Resubscribe a contact write
- `constant_contact.contacts.update` Update a contact write
- `constant_contact.contacts.upsert` Create or update a contact by email write
- `constant_contact.custom_fields.create` Create a custom field write
- `constant_contact.custom_fields.delete` Delete a custom field destructive
- `constant_contact.custom_fields.get` Get a custom field read
- `constant_contact.custom_fields.list` List custom fields read
- `constant_contact.custom_fields.update` Update a custom field write
- `constant_contact.segments.create` Create a segment write
- `constant_contact.segments.delete` Delete a segment destructive
- `constant_contact.segments.get` Get a segment read
- `constant_contact.segments.list` List segments read
- `constant_contact.segments.rename` Rename a segment write
- `constant_contact.segments.update` Update a segment write

**Reports 22**

- `constant_contact.campaign_activity_stats.list` Get email campaign activity stats read
- `constant_contact.contact_reports.activity_details` Get a contact's activity details read
- `constant_contact.contact_reports.activity_summary` Get a contact's activity summary read
- `constant_contact.contact_reports.open_and_click_rates` Get a contact's open and click rates read
- `constant_contact.email_campaign_stats.list` Get email campaign stats read
- `constant_contact.email_campaign_summaries.list` List email campaign summaries read
- `constant_contact.email_reports.bounces` Get an email bounces report read
- `constant_contact.email_reports.clicks` Get an email clicks report read
- `constant_contact.email_reports.didnotopens` Get an email did-not-opens report read
- `constant_contact.email_reports.forwards` Get an email forwards report read
- `constant_contact.email_reports.links` Get an email links report read
- `constant_contact.email_reports.opens` Get an email opens report read
- `constant_contact.email_reports.optouts` Get an email opt-outs report read
- `constant_contact.email_reports.sends` Get an email sends report read
- `constant_contact.email_reports.unique_opens` Get an email unique opens report read
- `constant_contact.landing_page_reports.contact_opens` Get a landing page contact opens report read
- `constant_contact.landing_page_reports.unique_contact_adds` Get a landing page unique contact adds report read
- `constant_contact.landing_page_reports.unique_contact_clicks` Get a landing page unique contact clicks report read
- `constant_contact.landing_page_reports.unique_contact_opens` Get a landing page unique contact opens report read
- `constant_contact.landing_page_reports.unique_contact_sms_optins` Get a landing page unique contact SMS opt-ins report read
- `constant_contact.landing_page_reports.unique_contact_updates` Get a landing page unique contact updates report read
- `constant_contact.sms_campaign_summaries.list` List SMS campaign summaries read

**Campaigns 20**

- `constant_contact.campaign_activities.get` Get an email campaign activity read
- `constant_contact.campaign_activities.test_send` Send a test email write
- `constant_contact.campaign_activities.update` Update an email campaign activity write
- `constant_contact.campaign_activity_ab_tests.create` Create an A/B test write
- `constant_contact.campaign_activity_ab_tests.delete` Delete an A/B test destructive
- `constant_contact.campaign_activity_ab_tests.get` Get an A/B test read
- `constant_contact.campaign_activity_previews.get` Get an email campaign activity preview read
- `constant_contact.campaign_activity_schedules.create` Schedule an email campaign activity write
- `constant_contact.campaign_activity_schedules.delete` Unschedule an email campaign activity destructive
- `constant_contact.campaign_activity_schedules.list` Get an email campaign activity's schedule read
- `constant_contact.campaign_activity_send_history.list` Get an email campaign activity's send history read
- `constant_contact.email_campaign_id_xrefs.list` Cross-reference V2 and V3 campaign ids read
- `constant_contact.email_campaigns.create` Create an email campaign write
- `constant_contact.email_campaigns.delete` Delete an email campaign destructive
- `constant_contact.email_campaigns.get` Get an email campaign read
- `constant_contact.email_campaigns.list` List email campaigns read
- `constant_contact.email_campaigns.rename` Rename an email campaign write
- `constant_contact.non_opener_resends.create` Create a resend to non-openers write
- `constant_contact.non_opener_resends.delete` Delete a resend to non-openers destructive
- `constant_contact.non_opener_resends.list` Get resend-to-non-openers details read

**Bulk 12**

- `constant_contact.activities.get` Get bulk activity status read
- `constant_contact.activities.list` List bulk activity statuses read
- `constant_contact.contact_lists.bulk_delete` Delete contact lists in bulk destructive
- `constant_contact.contact_tags.bulk_delete` Delete tags in bulk destructive
- `constant_contact.contacts.bulk_delete` Delete contacts in bulk destructive
- `constant_contact.contacts.bulk_export` Export contacts to a CSV file write
- `constant_contact.contacts.bulk_import_json` Import contacts from JSON write
- `constant_contact.custom_fields.bulk_delete` Delete custom fields in bulk destructive
- `constant_contact.list_memberships.bulk_add` Add contacts to lists write
- `constant_contact.list_memberships.bulk_remove` Remove contacts from lists destructive
- `constant_contact.taggings.bulk_add` Add tags to contacts write
- `constant_contact.taggings.bulk_remove` Remove tags from contacts destructive

**Events 11**

- `constant_contact.event_registrations.get` Get an event registration read
- `constant_contact.event_registrations.list` List event registrations read
- `constant_contact.event_registrations.update_payment_status` Update event registration payment status write
- `constant_contact.event_registrations.update_status` Update event registration status write
- `constant_contact.event_tickets.check_in` Check in event tickets write
- `constant_contact.event_tickets.undo_check_in` Undo event ticket check-in write
- `constant_contact.events.copy` Copy an event write
- `constant_contact.events.create` Create an event write
- `constant_contact.events.get` Get an event read
- `constant_contact.events.list` List events read
- `constant_contact.events.update` Update an event write

**Account 10**

- `constant_contact.account.get` Get account summary read
- `constant_contact.account.update` Update account details write
- `constant_contact.account_company_logo.get` Get account company logo read
- `constant_contact.account_company_logo.update` Update account company logo write
- `constant_contact.account_emails.create` Add account email address write
- `constant_contact.account_emails.list` List account email addresses read
- `constant_contact.account_physical_address.create` Add account physical address write
- `constant_contact.account_physical_address.get` Get account physical address read
- `constant_contact.account_physical_address.update` Update account physical address write
- `constant_contact.account_user_privileges.list` List the account user's privileges read

**Automations 4**

- `constant_contact.automations.create` Create an automation write
- `constant_contact.automations.get` Get an automation read
- `constant_contact.automations.list` List automations read
- `constant_contact.automations.update` Update an automation write

**Social 4**

- `constant_contact.social_connections.list` List social network connections read
- `constant_contact.social_hashtag_groups.list` List social hashtag groups read
- `constant_contact.social_posts.create` Create a social media post write
- `constant_contact.social_profiles.list` List social media profiles read

Questions

## The Constant Contact MCP server, answered.

**Is there a Constant Contact MCP server for Claude?**

Yes. actionlake is an MCP gateway: a remote MCP server that gives Claude, or another MCP client, 115 Constant Contact actions across contacts, reports, campaigns and bulk, through the same eight tools it uses for every other connector. actionlake is independent; it is not made or endorsed by Constant Contact.

**What do I need to connect Constant Contact?**

Your own Constant Contact OAuth app, registered with Constant Contact (its client id and client secret), and the access and refresh tokens from one admin sign-in. actionlake has no Constant Contact app of its own, so this is not a one-step consent. actionlake renews the access token as it expires. The free call account { op: "connections.requirements", service: "constant_contact" } lists exactly what to paste.

**Can an AI agent delete or change things in Constant Contact?**

Only if its key allows it, and only with an explicit confirmation. 15 Constant Contact actions are destructive, including delete a contact, delete a tag and delete a contact list. Each runs only with confirm: true. Under the human confirm policy, or an approval rule on the key, the run waits until a named person approves it.

**Will an AI agent use up my Constant Contact API limit?**

actionlake paces every call to the limits in the Constant Contact service file: 4 calls a second and 10,000 a day per connection. Repeated reads are answered from cache (61 Constant Contact actions can be), which never reaches Constant Contact.

**What does a Constant Contact action cost?**

One upstream call, the only unit actionlake bills. A list that pages bills one call per page (28 Constant Contact actions page). Cache hits, searches, dry runs and calls Constant Contact refused with 401, 403, 429 or a 5xx are free. The Free plan includes 100,000 calls a month with no card. Paid plans start at US$49 a month for 250,000 calls, with overage from US$0.30 down to US$0.18 per 1,000.

**Which Constant Contact API does it cover?**

The Constant Contact V3 API API v3 at api.cc.email/v3. It is built from Constant Contact's documentation as read on 20 September 2026. 115 actions in 8 areas, each one in the signed service file (version 1.0.0).

**Can I combine Constant Contact with my other systems?**

Yes. ask joins Constant Contact to HaloPSA or NetSuite on the same customer and returns the answer rather than every row. Constant Contact maps crm.contact, which 192 other connectors also map.

**Does actionlake keep my Constant Contact data, and where?**

actionlake processes and stores data in Sydney, Australia; there is no US region yet. Reads may be cached for up to an hour, and a write clears the reads it affects. Each run's request and response is kept, sealed, for your plan's trace window: 1 day on Free, 3 days on Starter, 7 days on Pro, 14 days on Team, 30 days on Business and 30 days on Enterprise. Your Constant Contact credential is sealed under your tenant's key, never logged and never returned. Your traffic is not used to train models.

**Which AI clients can use it?**

Claude Code, tested by us end to end, and the Claude app as a custom connector, tested by us with an existing key. Other MCP clients that support remote servers over Streamable HTTP (MCP revisions 2025-06-18 and 2025-11-25) and OAuth dynamic client registration, or a bearer header, should connect the same way; we have not tested them. Or plain REST, under the same action names.

## More connectors like Constant Contact

Shares the most action names with

- [Sinch Mailjet 19](https://actionlake.com/connectors/sinch-mailjet)
- [Elastic Email 19](https://actionlake.com/connectors/elastic-email)
- [Salesforce Marketing Cloud Account Engagement 17](https://actionlake.com/connectors/salesforce-marketing-cloud-account-engagement)
- [Mailtrap 17](https://actionlake.com/connectors/mailtrap)
- [Loops 16](https://actionlake.com/connectors/loops)
- [Klaviyo 16](https://actionlake.com/connectors/klaviyo)

Joins with, on shared entities

- [Odoo 3](https://actionlake.com/connectors/odoo)
- [Cvent 3](https://actionlake.com/connectors/cvent)
- [Virtuous CRM 3](https://actionlake.com/connectors/virtuous-crm)
- [Front 3](https://actionlake.com/connectors/front)
- [Bonterra EveryAction / NGP VAN 3](https://actionlake.com/connectors/bonterra-everyaction-ngp-van)
- [Recruit CRM 3](https://actionlake.com/connectors/recruit-crm)

Browse

- [All Email & messaging connectors](https://actionlake.com/connectors/category/email-and-messaging)
- [All connectors](https://actionlake.com/connectors)
- [How actionlake compares](https://actionlake.com/compare)

actionlake is independent. It is not made or endorsed by Constant Contact; the name is the vendor's own. Counts are from the Constant Contact service file, version 1.0.0.

## Give your agent Constant Contact today.

[Connect Constant Contact free](https://actionlake.com/console?start=sandbox) [See pricing](https://actionlake.com/pricing)

Start free - 100,000 calls/month, no card. No signup. Hard caps on every key. Cached answers are free.

---

Source: https://actionlake.com/connectors/constant-contact
More: https://actionlake.com/llms.txt
