Skip to content

Mailchimp

Two-way sync Mailchimp contacts, tags, merge fields, and groups with Airtable, Notion, Google Sheets, and more, plus read-only campaigns and surveys.

This guide covers how to connect Whalesync to Mailchimp, how your audiences appear in Whalesync, and which fields sync.

In Whalesync terms, a Mailchimp audience is the base you pick. It has four tables, plus one for each survey:

  • Contacts, the people in the audience. This is the main table and syncs both ways.
  • Tags, the audience's tags. You can create, rename, and delete tags from Whalesync.
  • Segments, the audience's saved segments. This table is read only.
  • Campaigns, the audience's campaigns, with their report numbers. This table is read only.
  • Survey: name, one table for each survey on the audience, with one record per response. These tables are read only.

The Mailchimp connector is available on Whalesync's Starter plan and up.

  1. In Whalesync, choose Mailchimp and click Authorize, then sign in to Mailchimp.
  2. Pick the audience to sync. The base is named after the audience.
  3. Pick the tables to sync.

To find an API key in Mailchimp:

  1. Click your profile icon and choose Profile.
  2. Open the Extras menu and choose API keys.
  3. Under Your API Keys, click Create A Key, name it, for example "Whalesync", and click Generate Key.
  4. Click Copy Key to Clipboard. Mailchimp shows the key only once.

Then in Whalesync, choose Mailchimp, click Use a api key instead, paste the key, and click Authorize.

Mailchimp API keys created after June 22, 2026 expire a year after they are created. When a key expires, create a new one and reconnect Mailchimp with it.

Every contact in the audience is a record in the Contacts table. Its columns are the fields Mailchimp gives every contact, plus one column for each of the audience's merge fields, groups, and marketing permissions. See Supported Fields.

A contact's tags are a link column to the Tags table. Adding a link in your other app adds the tag to the contact in Mailchimp, and removing it takes the tag off.

Segment membership is on the Segments table: each segment has a Contacts column that links to the contacts in it. See Segments.

A contact added from Whalesync without a Status column is added as transactional. Mailchimp stores the contact but does not subscribe it to marketing email. To subscribe people, map the Status column and set it to subscribed for the people who agreed to receive email.

Status can be set to subscribed, unsubscribed, or transactional. Whalesync never sets a contact to pending, because Mailchimp sends a confirmation email to pending contacts. Nothing Whalesync writes to Mailchimp sends anyone an email.

Mailchimp does not let anyone resubscribe a contact who unsubscribed themselves. That person has to sign up again through a Mailchimp signup form.

Deleting a record archives the contact in Mailchimp. Whalesync never deletes a contact permanently, and an archived contact keeps its history in Mailchimp.

Whalesync registers a webhook on each audience whose Contacts table you map, so a change to a contact in Mailchimp reaches your other apps quickly instead of waiting for the next poll.

Mailchimp sends no webhook for tags, segments, surveys, campaigns, or archived contacts. Changes to those arrive on the regular sync.

Mailchimp fieldStatusNotes
Email✅ SupportedRequired when creating a contact from another app. Mailchimp keeps one contact per email.
Status✅ SupportedCan be set to subscribed, unsubscribed, or transactional. See Subscription status.
Tags✅ SupportedLinks to the Tags table.
Merge fields✅ SupportedOne column per merge field. See Merge fields.
Groups✅ SupportedOne column per group category. See Groups.
Marketing permissions✅ SupportedA checkbox for each permission. See Marketing permissions.
Language✅ SupportedMailchimp cannot clear a contact's language.
VIP✅ SupportedA checkbox.
Contact rating, Average open rate, Average click rate➡️ Supported (1-Way)Read only.
Signed up, Opted in, Last changed➡️ Supported (1-Way)Read only.
Source, Unsubscribe reason, Email client➡️ Supported (1-Way)Read only.
Country code, Time zone, Latitude, Longitude➡️ Supported (1-Way)Read only. The contact's location as Mailchimp records it.

Each merge field on the audience is a column on Contacts, named after the field.

Merge field typeStatusNotes
Text✅ SupportedEmoji are stored by Mailchimp as ?.
Number✅ Supported
Date✅ Supported
Birthday✅ SupportedA month and day, like 07/04.
Address✅ SupportedSix columns: street, line 2, city, state, postal code, and country. Mailchimp needs a street, a city, and a postal code.
Phone✅ Supported
Website, Image URL✅ SupportedA URL.
Radio buttons, Drop-down✅ SupportedA single select whose options are the field's choices.
Zip code✅ SupportedFive-digit US zip codes.

A new column created from Whalesync on the Contacts table becomes a new merge field in Mailchimp. Mailchimp limits how many merge fields an audience can have, and the limit depends on your Mailchimp plan.

Each group category on the audience is a column on Contacts, named after the category.

Group category typeStatusNotes
Checkboxes, Hidden✅ SupportedA multi-select of the category's groups.
Radio buttons, Drop-down✅ SupportedA single select of the category's groups.

On audiences with GDPR fields turned on, each marketing permission is a checkbox column on Contacts, named Marketing permission: followed by the permission's text. Mailchimp only lists permissions on contacts, so these columns appear once the audience has at least one contact.

  • Creating a record only records consent given. When a new record matches a contact already in the audience, an unchecked box does not withdraw consent that contact gave.
  • A contact brought back from archived takes its consent from the record, for the permission columns that are mapped. An unchecked box there withdraws consent.
  • Updating a record gives or withdraws consent to match the box.
Mailchimp fieldStatusNotes
Name✅ SupportedRequired when creating a tag from another app.
Contacts, Created, Updated➡️ Supported (1-Way)Read only. Contacts is the number of contacts with the tag.

Deleting a tag record deletes the tag in Mailchimp.

Mailchimp fieldStatusNotes
Contacts➡️ Supported (1-Way)Read only. Links to the contacts in the segment. Only listed for audiences of up to 25,000 contacts.
Name, Contact count, Type, Created, Updated➡️ Supported (1-Way)Read only. Segments are created and edited in Mailchimp.

For an audience with more than 25,000 contacts, unmap the Contacts column to sync the segments without their members.

Mailchimp fieldStatusNotes
Name, Subject, Preview text, From name, Reply-to email, Status, Type, Created, Sent, Sent to, Emails sent, Recipients, Archive URL➡️ Supported (1-Way)Read only.
Opens, Unique opens, Open rate, Clicks, Unique clicks, Click rate➡️ Supported (1-Way)Read only. The campaign's report numbers. Empty until the campaign is sent.

Each survey on the audience is a table named Survey: followed by the survey's name. Each response is a record.

Mailchimp fieldStatusNotes
Submitted➡️ Supported (1-Way)Read only.
Contact➡️ Supported (1-Way)Read only. Links to the contact who answered. Empty for anonymous responses.
Contact email, Contact name, New contact➡️ Supported (1-Way)Read only.
One column per question➡️ Supported (1-Way)Read only. Named after the question. Choice questions are selects, and rating questions are numbers.

A survey created after the sync is set up appears as a new table once you refresh the schema in Whalesync. When a survey is deleted in Mailchimp, remove its table from the sync.

  • The Mailchimp connector is in beta. If something does not work as described here, let us know.
  • A contact added without a Status column is not subscribed. It is stored as transactional. Map Status to subscribe people.
  • Whalesync never sends anyone an email. It never sets a contact to pending, and campaigns are read only.
  • Deleting a record archives the contact. Whalesync never deletes a Mailchimp contact permanently.
  • Two records with the same email are refused. Mailchimp keeps one contact per email, so the second record is reported as a sync issue.
  • Mailchimp cannot clear a contact's language. Clearing it in your other app leaves the old value in Mailchimp, and that value syncs back.
  • Emoji in text fields are stored as ?. Mailchimp replaces them, and the ? syncs back to your other app.
  • Tags, segments, surveys, campaigns, and archived contacts change on the regular sync only. Mailchimp sends no webhook for them.
  • Mailchimp limits merge fields per audience. The limit depends on your Mailchimp plan.
  • API keys created after June 22, 2026 expire after a year. See Using an API key.

A contact added without a Status column is added as transactional, which Mailchimp stores without subscribing. Map the Status column and set it to subscribed for the people who agreed to receive email. Contacts already added this way can be updated the same way.

Mailchimp does not let anyone resubscribe a contact who unsubscribed themselves. The person has to sign up again through a Mailchimp signup form.

A record with a duplicate email is refused

Section titled “A record with a duplicate email is refused”

Mailchimp keeps one contact per email, so Whalesync refuses a second record with an email another record in the sync already has. Remove the duplicate record, or change its email. If you deleted a contact's record and added it back as a new record, restore the original record instead.

Deleting a record archives the contact. Archived contacts are not listed in the audience, but Mailchimp keeps them. Whalesync never deletes a contact permanently.

Language or emoji change back after syncing

Section titled “Language or emoji change back after syncing”

Mailchimp cannot clear a contact's language, and it stores emoji in text fields as ?. In both cases the value Mailchimp keeps syncs back to your other app.

Changes in Mailchimp take a while to show up

Section titled “Changes in Mailchimp take a while to show up”

Contact changes arrive quickly through webhooks. Tags, segments, surveys, campaigns, and archived contacts change on the regular sync only, because Mailchimp sends no webhook for them.

The Segments table reports the audience is too large

Section titled “The Segments table reports the audience is too large”

Segment members are only listed for audiences of up to 25,000 contacts. For a larger audience, unmap the Segments table's Contacts column. The segments still sync without their members.

Anonymous survey responses are not linked to a contact, so their Contact column is empty.

Refresh the schema in Whalesync. The new survey then appears as a table you can add to the sync.

A survey's table reports that the survey no longer exists

Section titled “A survey's table reports that the survey no longer exists”

The survey was deleted in Mailchimp. Remove its table from the sync.

Marketing permission columns only appear on audiences with GDPR fields turned on, and only once the audience has at least one contact. Turn on GDPR fields in Mailchimp, add a contact if the audience is empty, and refresh the schema in Whalesync.

Section titled “A new record did not withdraw a contact's consent”

A new record only records consent given. When it matches a contact already in the audience, an unchecked box does not withdraw consent that contact gave. Update the record to withdraw consent. A contact brought back from archived is the exception: it takes its consent from the record, for the permission columns that are mapped.

Mailchimp limits how many merge fields an audience can have, and the limit depends on your Mailchimp plan. Map the column to an existing merge field instead, or remove merge fields you no longer use in Mailchimp.