Skip to main content

Overview

Mailchimp is an email marketing and automation platform used for audience management, email campaigns, and marketing analytics. This connector extracts audiences and their members, segments, email campaigns, campaign reports, and automation workflows from the Mailchimp Marketing API.

Configuration

1

Add account access

You can connect Mailchimp using either an API key or OAuth.
FieldDescription
API KeyYour Mailchimp API key. The data center is read automatically from its suffix (e.g. the us9 in abc123-us9). Found under Account → Extras → API keys.
Start Date(Optional) Start date for incremental data sync in ISO 8601 format (e.g., 2024-01-01T00:00:00Z). Only applies to streams that support incremental replication.
Data Center(Optional) Data center override (e.g. us9). Inferred from the API key suffix when omitted.
To create an API key, go to Account → Extras → API keys → Create A Key in your Mailchimp account. Copy the key immediately — Mailchimp shows it only once.
Instead of an API key, you can click Authorization to connect via OAuth and grant access without copying a key. Use one method or the other.
2

Select streams

Choose which streams you want to sync. Available streams are listed in the Streams and Fields section below.
3

Configure data streams

For each selected stream, configure:
  • Layer: Choose the destination layer (e.g., Bronze).
  • Folder: Organize data within the layer.
  • Table name: The table name in your lakehouse.
  • Sync Type: Incremental (recommended) or Full Sync.
4

Configure data source

Set up the source-level configuration:
  • Description: Add a description for this data source.
  • Triggers: Configure sync triggers (schedule or manual).
  • Delta Log Retention Days: Number of days to retain delta log history.
  • Full Sync: Optionally force a full sync on first run.
5

Check your new source

After saving, verify the source appears in your Sources list. Run a manual sync to validate that data flows correctly.

Streams and Fields

Audiences (lists) in the account, including contact details, signup settings, and aggregate stats. Synced as a full table.
FieldTypeDescription
idstringUnique audience identifier
web_idintegerNumeric ID used in the Mailchimp web app
namestringAudience name
contactobjectContact information shown in campaign footers
permission_reminderstringPermission reminder shown to subscribers
use_archive_barbooleanWhether the archive bar is enabled
campaign_defaultsobjectDefault from name, email, subject, and language
notify_on_subscribestringEmail notified on new subscribes
notify_on_unsubscribestringEmail notified on unsubscribes
date_createddatetimeWhen the audience was created
list_ratingintegerStar rating of the audience
email_type_optionbooleanWhether subscribers can choose an email type
subscribe_url_shortstringShortened signup form URL
subscribe_url_longstringFull signup form URL
beamer_addressstringEmail-to-campaign (Mailchimp Beamer) address
visibilitystringAudience visibility (pub or prv)
double_optinbooleanWhether double opt-in is enabled
has_welcomebooleanWhether a welcome email is configured
marketing_permissionsbooleanWhether GDPR marketing permissions are enabled
modulesarrayEnabled audience modules
statsobjectAggregate stats (member counts, open/click rates, last activity)
Members (contacts) of each audience. Child of lists. Supports incremental sync via last_changed.
FieldTypeDescription
idstringMD5 hash of the lowercased email — the member identifier
email_addressstringMember email address
unique_email_idstringUnique email ID across the account
contact_idstringContact identifier
full_namestringMember full name
web_idintegerNumeric ID used in the Mailchimp web app
email_typestringPreferred email type (html or text)
statusstringSubscription status (e.g. subscribed, unsubscribed, cleaned)
unsubscribe_reasonstringReason for unsubscribing, if provided
consents_to_one_to_one_messagingbooleanWhether the member consents to 1:1 messaging
merge_fieldsstringAudience-specific merge fields (JSON; keys vary per audience)
interestsstringInterest group memberships (JSON; keys vary per audience)
statsobjectMember open/click rates and ecommerce data
ip_signupstringIP address at signup
timestamp_signupdatetimeSignup timestamp
ip_optstringIP address at opt-in
timestamp_optdatetimeOpt-in timestamp
member_ratingintegerMember engagement rating
last_changeddatetimeWhen the member record was last changed
languagestringMember language
vipbooleanWhether the member is marked VIP
email_clientstringLast known email client
locationobjectGeolocation (lat/long, country, timezone)
marketing_permissionsarrayGDPR marketing permission states
last_noteobjectMost recent note on the member
sourcestringSignup source
tags_countintegerNumber of tags applied
tagsarrayTags applied to the member
list_idstringParent audience identifier
Segments within each audience. Child of lists. Supports incremental sync via updated_at.
FieldTypeDescription
idintegerUnique segment identifier (numeric)
namestringSegment name
member_countintegerNumber of members in the segment
typestringSegment type (e.g. saved, static, fuzzy)
created_atdatetimeWhen the segment was created
updated_atdatetimeWhen the segment was last updated
optionsstringMatch logic and conditions (JSON; structure varies by segment)
list_idstringParent audience identifier
Email campaigns including recipients, settings, tracking, and a report summary. Supports incremental sync via create_time.
FieldTypeDescription
idstringUnique campaign identifier
web_idintegerNumeric ID used in the Mailchimp web app
parent_campaign_idstringParent campaign ID (for variations)
typestringCampaign type (e.g. regular, automation, rss)
create_timedatetimeWhen the campaign was created
archive_urlstringArchive URL
long_archive_urlstringFull archive URL
statusstringCampaign status (e.g. save, schedule, sent)
emails_sentintegerNumber of emails sent
send_timedatetimeWhen the campaign was sent
content_typestringContent type
needs_block_refreshbooleanWhether content blocks need refreshing
resendablebooleanWhether the campaign can be resent
recipientsobjectTarget audience and segment details
settingsobjectSubject, from name, template, and footer settings
trackingobjectOpen/click/ecommerce tracking settings
report_summaryobjectAggregate performance summary (opens, clicks, ecommerce)
Per-campaign aggregate reports. The id matches the campaign id. Supports incremental sync via send_time.
FieldTypeDescription
idstringReport (campaign) identifier
campaign_titlestringCampaign title
typestringCampaign type
list_idstringAudience identifier
list_is_activebooleanWhether the audience is active
list_namestringAudience name
subject_linestringEmail subject line
preview_textstringEmail preview text
emails_sentintegerNumber of emails sent
abuse_reportsintegerNumber of abuse reports
unsubscribedintegerNumber of unsubscribes
send_timedatetimeWhen the campaign was sent
rss_last_senddatetimeLast RSS send time
bouncesobjectHard/soft bounces and syntax errors
forwardsobjectForward counts and opens
opensobjectOpen totals, unique opens, open rate, last open
clicksobjectClick totals, unique clicks, click rate, last click
facebook_likesobjectFacebook like counts
list_statsobjectAudience sub/unsub/open/click rates
Classic automation workflows including recipients, settings, and a report summary. Supports incremental sync via create_time.
FieldTypeDescription
idstringUnique automation (workflow) identifier
create_timedatetimeWhen the automation was created
start_timedatetimeWhen the automation started
statusstringAutomation status (e.g. save, sending, paused)
emails_sentintegerNumber of emails sent
recipientsobjectTarget audience details
settingsobjectTitle, from name, and footer settings
trackingobjectOpen/click/ecommerce tracking settings
trigger_settingsstringWorkflow trigger configuration (JSON)
report_summaryobjectAggregate performance summary (opens, clicks)

Implementation Notes

  • Authentication: HTTP Basic Auth with the API key (any username, API key as password), or OAuth via the Authorization button. The data center (e.g. us9) is resolved from the API key suffix or the OAuth metadata endpoint.
  • Pagination: The connector paginates with count and offset, fetching all pages up to each endpoint’s total.
  • Incremental sync: list_members, segments, campaigns, reports, and automations sync incrementally using Mailchimp’s since_* date filters. lists is full-table only, since Mailchimp exposes only a creation date for audiences.
  • JSON fields: Fields with audience-specific or variable structure — merge_fields, interests (members), options (segments), and trigger_settings (automations) — are serialized as JSON strings. Parse them downstream as needed.
  • Child streams: list_members and segments are synced per audience, using the parent lists stream to provide each list_id.