Skip to Content
DestinationsMarketingCampaign Monitor

Campaign Monitor

Sync subscribers to Campaign Monitor for email marketing campaigns and automated customer journeys. Zeotap keeps your Campaign Monitor subscriber lists in sync with your warehouse data, enabling targeted campaigns with up-to-date subscriber attributes.

Prerequisites

  • A Campaign Monitor account
  • A Campaign Monitor API key
  • At least one subscriber list created in Campaign Monitor

Authentication

Campaign Monitor uses API Key authentication with HTTP Basic Auth.

  1. Log in to your Campaign Monitor account
  2. Click your profile icon and select Account settings
  3. Navigate to API keys under the Advanced section
  4. Click Show API Key or create a new one
  5. Copy the API key and paste it into the API Key field in Zeotap

Configuration

No additional configuration fields are required for Campaign Monitor. Authentication is handled entirely through the API key.

Target Settings

FieldTypeRequiredDescription
List IDTextYesCampaign Monitor subscriber list ID to sync contacts to.

To find your List ID:

  1. In Campaign Monitor, navigate to Lists & subscribers
  2. Select the list you want to sync to
  3. Click Change name/type under the list settings
  4. The List ID is displayed at the bottom of the page (e.g., a1b2c3d4e5f6...)

Alternatively, you can retrieve list IDs via the Campaign Monitor API.

Supported Operations

Sync Modes

ModeSupported
UpsertYes
InsertYes
UpdateYes

Audience Sync Modes

ModeSupported
AddYes
RemoveYes
MirrorYes
UpsertYes

Features

  • Field Mapping: Yes
  • Schema Introspection: No

Required Mapping Fields

FieldDescription
EmailAddressSubscriber email address (primary identifier)

Default Destination Fields

EmailAddress, Name, MobileNumber, ConsentToTrack

Any additional mapped fields are synced as Campaign Monitor Custom Fields. Custom field keys must match fields configured in your Campaign Monitor list settings.

How It Works

Subscriber Sync (Upsert / Add Mode)

  1. Zeotap batches subscribers in groups of up to 1,000
  2. Each batch is sent to the Campaign Monitor Import Subscribers endpoint (POST /subscribers/{listId}/import.json)
  3. Existing subscribers are updated; new subscribers are created
  4. The response includes per-subscriber failure details for any invalid records

Insert Mode

Subscribers are added individually via POST /subscribers/{listId}.json with Resubscribe set to false. If a subscriber already exists and is active, the request updates their details. Inactive subscribers will not be resubscribed.

Update Mode

Existing subscribers are updated individually via PUT /subscribers/{listId}.json?email={email}. Subscribers that do not exist in Campaign Monitor will return an error.

Audience Sync (Remove / Mirror)

  • Remove: Subscribers are unsubscribed from the list via POST /subscribers/{listId}/unsubscribe.json
  • Mirror: Added/changed subscribers are imported via the bulk endpoint; removed subscribers are unsubscribed from the list

Custom Fields

Fields beyond the standard EmailAddress, Name, MobileNumber, and ConsentToTrack are sent as Campaign Monitor Custom Fields using the Key/Value format. Custom fields must be pre-configured in your Campaign Monitor list before syncing.

Campaign Monitor requires a ConsentToTrack value for GDPR compliance. Valid values are Yes, No, or Unchanged. If not mapped, Zeotap defaults to Unchanged.

Rate Limits

Campaign Monitor applies rate limiting to API requests. Rate limit status is communicated via response headers:

HeaderDescription
X-RateLimit-LimitMaximum requests allowed
X-RateLimit-RemainingRequests remaining in the current window
X-RateLimit-ResetSeconds until the rate limit resets

Zeotap automatically retries on 429 Too Many Requests responses with exponential backoff and respects Retry-After headers.

Best Practices

  • Use upsert mode for most subscriber syncs to handle both new and existing subscribers automatically
  • Pre-create custom fields in Campaign Monitor before syncing — unmapped custom fields will be silently ignored
  • Set ConsentToTrack to Yes for subscribers who have given explicit GDPR consent
  • Use the bulk import endpoint (upsert/add mode) for large syncs — it handles up to 1,000 subscribers per request
  • Mobile numbers must use E.164 format with the + prefix (e.g., +1234567890)
  • Custom field values have a 250-character maximum length

Troubleshooting

Authentication failed: invalid API key

Ensure your API key is correct and has not been revoked. You can find or regenerate your API key under Account settings > API keys in Campaign Monitor.

Subscriber not found (update mode)

The update sync mode requires that subscribers already exist in the list. If you are syncing new subscribers, use upsert mode instead.

Custom field not recognized

Campaign Monitor ignores custom fields that have not been configured in the list settings. Navigate to Lists & subscribers > [Your List] > Custom fields to add missing fields.

List ID not found

Verify the List ID is correct by checking your list settings in Campaign Monitor. The List ID is a long alphanumeric string, not the list name.

Mobile number rejected

Mobile numbers must use E.164 format with a + prefix. Campaign Monitor normalizes whitespace and symbols but requires a valid country code.

Rate limit exceeded (429 errors)

Zeotap retries automatically with exponential backoff. If errors persist, consider spacing out your sync schedule or contacting Campaign Monitor support about your rate limits.

Subscriber already on list (insert mode)

In insert mode, existing active subscribers are updated but inactive subscribers are not resubscribed. Use upsert mode if you want to resubscribe inactive subscribers.

ConsentToTrack validation error

Ensure ConsentToTrack values are one of: Yes, No, or Unchanged. Other values will cause the API to reject the subscriber.

Last updated on