Email marketing platform
Constant Contact logo

Constant Contact API + MCP (2026): v3 OAuth + Community MCP Coverage

Constant Contact’s API v3 is the modern REST API for programmatic access to contacts, campaigns, tags, activities, and reports. OAuth 2.0 authentication, JSON payloads, per-endpoint rate limits documented publicly, decent SDK ecosystem via community wrappers. What Constant Contact does NOT ship in 2026: an official Model Context Protocol server. AI-agent access comes from community MCP wrappers (BusyBee3333, viasocket) rather than first-party. This tab inventories the API surface, MCP alternatives, and the gotchas SMB developers need to evaluate before committing.

At a glance

v3
Current API version
v2 deprecated, migration required
2
Official SDKs
PHP + Node.js; community wrappers for others
0
Official MCP server
Community MCPs available (BusyBee3333)

MCP integration in 2026

Model Context Protocol is the emerging standard for connecting LLM agents to external tools. Constant Contact does not yet ship a first-party MCP server — unusual for a mature ESP with the market position Constant Contact holds. The gap has been filled by two community and commercial MCP options that cover most Constant Contact operations.

!

No official MCP — community wrappers fill the gap

Constant Contact has not shipped an official Model Context Protocol server as of August 2026. This is a notable gap given Klaviyo shipped GA and MailerSend has a hosted BETA. AI-agent access to Constant Contact currently comes from two community/commercial routes: the BusyBee3333 community MCP (100+ tools for API v3) and the viasocket hosted MCP (commercial, managed authentication). Both are functional but neither is Constant Contact-endorsed. If you need first-party MCP, wait for Constant Contact’s announcement or use one of the alternatives below.

Available MCP servers for Constant Contact

Three ways to reach Constant Contact from an AI agent as of August 2026. None are first-party maintained.

Watch for an official Constant Contact MCP announcement in 2026-2027. Given Klaviyo’s GA release, MailerSend’s BETA, and Mailchimp’s Mandrill MCP, Constant Contact will likely follow — the market pressure is there. In the meantime, the community wrappers work reliably for API v3 operations. Choose based on operational preference: self-hosted (BusyBee3333) vs managed (viasocket) vs bridge (Zapier).

API v3 essentials

Constant Contact’s API v3 follows REST conventions with OAuth 2.0 authentication. The predecessor API v2 is deprecated and pre-2020 integrations must migrate to v3.

Base URLhttps://api.cc.email/v3
Response formatJSON
AuthenticationOAuth 2.0 (three-leg flow, refresh tokens required)
Access token lifetime2 hours (auto-refresh via refresh token)
Refresh token lifetimeLong-lived (rotates on each refresh)
Rate limitsPer-endpoint (see rate-limits section)
Response on rate exceedHTTP 429 with Retry-After header
PaginationCursor-based via _link objects (max page size 500)
Bulk operationsAsync job endpoints for contact imports
Legacy API v2 statusDeprecated. Migrate to v3 immediately.

API v3 uses OAuth 2.0 exclusively — there are no simple API-key endpoints. Setup takes 15-30 minutes for OAuth configuration, but the security profile is stronger than v2 (which used API keys). If you are used to Mailchimp-style API-key authentication, expect a learning curve on OAuth token refresh handling.

Authentication methods

OAuth 2.0 (only option)

Constant Contact API v3 requires OAuth 2.0. Register an application at v3.developer.constantcontact.com to receive Client ID and Client Secret. Implement the three-leg authorization code flow to obtain access tokens on behalf of Constant Contact users.

# 1. Redirect user to authorization endpoint
GET https://authz.constantcontact.com/oauth2/default/v1/authorize
  ?client_id=YOUR_CLIENT_ID
  &redirect_uri=YOUR_REDIRECT_URI
  &response_type=code
  &scope=contact_data+campaign_data+account_read

# 2. Exchange authorization code for tokens
POST https://authz.constantcontact.com/oauth2/default/v1/token
Authorization: Basic BASE64(CLIENT_ID:CLIENT_SECRET)
grant_type=authorization_code
code=RECEIVED_CODE
redirect_uri=YOUR_REDIRECT_URI

# 3. Use access token in API requests
GET https://api.cc.email/v3/contacts
Authorization: Bearer YOUR_ACCESS_TOKEN

Access tokens expire after 2 hours. Refresh tokens rotate on each refresh — always store the newest refresh token from every refresh response. Losing the refresh token requires re-authorization by the user.

Refresh token rotation catches teams off guard. Unlike Mailchimp or Klaviyo where API keys are static, Constant Contact rotates the refresh token on every use. Store the new refresh token from every refresh response. Losing it forces you to re-authenticate the user manually via the OAuth flow.

Rate limits

Constant Contact publishes per-endpoint rate limits with two-tier throttling (short-term and daily).

Limit typeValueNotes
General API requests10,000 per dayPer access token. Resets at midnight UTC.
Short-term burst4 requests per secondPer access token, rolling window.
Response on exceedHTTP 429Too Many Requests. Includes Retry-After header with wait time in seconds.
Bulk contact import (async)Separate job-based limitPreferred over looping single-contact POST for large imports.
Webhook payload sizeNot disclosedStandard SaaS webhook conventions apply.

The 10,000 daily / 4-per-second limits are generous for SMB use cases but insufficient for large-scale programmatic workflows (bulk data warehousing, real-time analytics). For those needs, use bulk contact import jobs and cache aggressively client-side.

Official SDKs

Constant Contact ships two official SDKs and endorses community wrappers for other languages.

LanguagePackageInstallStatus
PHPconstantcontact/constantcontactcomposer requireOfficial
Node.jsCommunity wrappersnpm installCommunity (multiple)
PythonCommunity wrapperspip installCommunity (multiple)
RubyCommunity wrappersgem installCommunity
.NETCommunity wrappersNuGetCommunity

Constant Contact’s official SDK footprint is thinner than Klaviyo (5 official) or Mailchimp (4 official Marketing). For non-PHP languages, community wrappers exist but quality varies — audit maintenance status and last-commit dates before adopting. Many teams call the API directly with their language’s HTTP client rather than depending on a community SDK that may become abandoned.

Endpoints reference

The endpoint groups you will actually use in production. Full reference at v3.developer.constantcontact.com.

ResourceHTTP methodsDescription
Contacts
/contacts
GET, POST, PUT, DELETEFull CRUD on contacts. Bulk import via async job endpoints.
Contact custom fields
/contact_custom_fields
GET, POST, PUT, DELETEManage custom fields for contact profile enrichment.
Contact lists
/contact_lists
GET, POST, PUT, DELETEManage static contact lists. Add or remove members via list membership endpoints.
Contact tags
/contact_tags
GET, POST, PUT, DELETEManage tags. Tag-based segmentation for campaign targeting.
Segments
/segments
GETRead dynamic segments defined in the UI. Segment creation is UI-only.
Email campaigns
/emails
GET, POST, PATCH, DELETEFull CRUD on email campaigns. Schedule, cancel, send. Reports subresource.
Email schedule
/emails/{id}/schedules
POST, GET, DELETESchedule campaign send at a specific datetime. Cancel scheduled sends.
Activities (bulk actions)
/activities
GET, POSTBulk operations queue (imports, exports, list moves). Async job status polling.
Reports
/reports
GETCampaign performance reports (opens, clicks, bounces, unsubscribes).
Account
/account
GET, PATCHAccount profile, physical address, sender email management.
Webhooks
/webhooks
GET, POST, PUT, DELETEConfigure webhook subscriptions for contact and campaign events.

Code examples

Node.js: create a contact and add to a list

const axios = require('axios');

const ACCESS_TOKEN = 'YOUR_ACCESS_TOKEN';
const BASE_URL = 'https://api.cc.email/v3';

async function createContact(email, firstName, listId) {
  // 1. Create contact with list membership
  const response = await axios.post(
    `${BASE_URL}/contacts`,
    {
      email_address: { address: email, permission_to_send: 'implicit' },
      first_name: firstName,
      list_memberships: [listId],
      create_source: 'Account'
    },
    { headers: { Authorization: `Bearer ${ACCESS_TOKEN}` } }
  );

  console.log(`Contact created: ${response.data.contact_id}`);
  return response.data;
}

createContact('user@example.com', 'Alaa', 'YOUR_LIST_ID')
  .catch(err => console.error(err.response?.data || err.message));

PHP: send an email campaign

<?php
require 'vendor/autoload.php';

use GuzzleHttpClient;

$client = new Client(['base_uri' => 'https://api.cc.email/v3/']);
$accessToken = 'YOUR_ACCESS_TOKEN';

// Create schedule for existing campaign
$response = $client->post("emails/{$campaignId}/schedules", [
    'headers' => ['Authorization' => "Bearer {$accessToken}"],
    'json' => ['scheduled_date' => '2026-08-20T14:00:00Z']
]);

echo "Scheduled: " . $response->getBody();

Common gotchas

Refresh token rotation on every use

Constant Contact rotates the refresh token on every refresh response. If you store only the initial refresh token and never update it, subsequent refreshes fail after the first rotation. Always persist the latest refresh token from every refresh response.

API v2 is deprecated — migrate immediately

The legacy Constant Contact API v2 is deprecated. All new integrations must use v3. If you inherited a v2 integration, migrate promptly — Constant Contact has communicated shutoff plans and v2 will stop working. Note: v3 uses different endpoint paths, OAuth 2.0 (v2 used API keys), and different response shapes. Not a drop-in replacement.

Segment creation is UI-only

The API can read dynamic segments (GET /segments) but cannot create or modify them programmatically. Segments are UI-only. For API-managed groupings, use contact_lists (fully CRUD) or contact_tags (fully CRUD).

Access token expires after 2 hours

Constant Contact access tokens have a 2-hour lifetime. Long-running processes must implement automatic refresh logic. Failing to refresh returns 401 responses. Best practice: refresh proactively at the 1.5-hour mark, or implement a refresh-on-401 retry pattern.

Community SDK quality varies — audit before adopting

Only PHP and Node.js have officially maintained clients. For Python, Ruby, .NET, community wrappers exist but quality and maintenance status vary widely. Check last-commit date, open-issues count, and downloads/week before betting a production integration on a community SDK. Direct HTTP client calls are often safer than an abandoned SDK.

Deprecations and changelog

Constant Contact maintains developer release notes at v3.developer.constantcontact.com. Key items:

  • API v3 is current. Stable OAuth 2.0-based REST API. All new development targets v3.
  • API v2 deprecated. Shutoff scheduled — migrate immediately if you have a v2 integration.
  • No official MCP server as of 2026. Community MCPs (BusyBee3333, viasocket) fill the gap. Watch for an official announcement in the next 12-18 months given competitor movement.
  • OAuth 2.0 refresh token rotation introduced with API v3 for improved security posture.
  • Bulk activity endpoints matured over 2024-2025 for async import/export operations.

Frequently asked questions

Does Constant Contact have an official MCP server for AI agents?

No. Constant Contact does not ship a first-party MCP server as of August 2026. AI-agent access comes from community/commercial routes: the BusyBee3333 community MCP (100+ tools for API v3) or the viasocket hosted MCP (commercial, managed authentication). Watch for an official announcement in the next 12-18 months given competitor movement (Klaviyo GA, MailerSend BETA).

Which programming languages have official Constant Contact SDKs?

Two officially maintained SDKs: PHP and Node.js. For other languages (Python, Ruby, .NET, Java, Go), community wrappers exist but quality varies. Audit last-commit date and maintenance status before adopting a community SDK. Direct HTTP client calls are often safer than an abandoned SDK.

What is the Constant Contact API rate limit?

Two tiers per access token: 10,000 requests per day (resets at UTC midnight) and 4 requests per second short-term burst. HTTP 429 responses include a Retry-After header with exact wait time. For bulk operations, use the async activity endpoints instead of looping single-record POSTs.

How do I authenticate with the Constant Contact API v3?

OAuth 2.0 only — no simple API-key endpoints. Register an app at v3.developer.constantcontact.com to get Client ID + Client Secret. Implement three-leg authorization code flow. Access tokens expire after 2 hours; refresh tokens rotate on each refresh. Always store the newest refresh token from every refresh response.

Is the Constant Contact API v2 still supported?

Deprecated. Constant Contact has communicated a shutoff timeline for API v2. All new development must use v3. Legacy v2 integrations should migrate promptly — v3 uses different endpoint paths, OAuth 2.0 (v2 used API keys), and different response shapes. Not a drop-in replacement.

Can I send emails through Constant Contact from Claude Desktop or Cursor?

Yes, via community MCP. Install the BusyBee3333 community MCP server (100+ tools, self-hosted) or subscribe to the viasocket hosted MCP (commercial, managed OAuth). Both let AI agents create contacts, send campaigns, manage tags, and pull reports through natural language. No first-party MCP from Constant Contact yet.

What is the difference between contact_lists and segments?

Contact lists are static (manually managed) and fully CRUD-able via API. Segments are dynamic (rules-based membership) and API read-only — segment creation is UI-only. Use contact_lists when you need programmatic membership control. Use segments when the membership logic must be UI-editable and dynamic.

Changelog (recent)

  • 2026-08-18 API + MCP tab published on SMTPedia. First profile documenting Constant Contact API v3 alongside community MCP alternatives (BusyBee3333, viasocket).
  • 2026-07-28 MCP specification 2026-07-28 released. Community MCPs for Constant Contact aligning with the new stateless HTTP transport.
  • 2026 BusyBee3333 releases comprehensive Constant Contact MCP server with 100+ tools covering API v3 contacts, campaigns, tags, activities, and reports.
AAlaa Touil RRabeb How we test →

This review follows our email infrastructure testing methodology. We disclose affiliate relationships in our editorial independence policy.