Table of Contents

The approach for mapping MailChimp data to CiviCRM fields is outlined below. The mechanism is assumed to be manual import. This section is short and worth reading regardless of the data transfer mechanism, but readers interested in an automated sync should read about Realtime Syncing with the MailChimp Sync Extension.

Subscribed Members

For each MailChimp group, create a CiviCRM static group of type Mailing List. Export each MailChimp group, then use CiviCRM’s Contact Import to import each of the three CSVs, being sure to select the appropriate static group for the Add imported records to existing group(s) field.


As Chorus America uses only one MailChimp list to deliver mail to several groups, unsubscriptions from the list effectively represent a desire to opt out of all bulk communications.

To capture this in CiviCRM, export the list and open up the unsubscribed members CSV. (The other two CSVs can be discarded.) Add a column No Bulk Emails, set it to 1 for each row, and save the CSV. Use CiviCRM’s Contact Import to import the updated CSV, being sure map the column you added to the CiviCRM field No Bulk Emails (User Opt Out).

Bad Addresses

In CiviCRM, contacts can be associated with multiple email addresses, and contacts (rather than the email addresses) are subscribed to groups. If a contact has multiple addresses on file and one is flagged On hold due to a hard bounce, one of the other associated addresses will be used in future mailings. Therefore, it is important that delivery failures be flagged on the address rather than the contact.

Unfortunately, CiviCRM does not provide a user interface which facilitates using an external file to update the On Hold field for existing Email records. The script for doing such an import is trivial. If Chorus America is likely to do this import more than once, it is probably worthwhile to have it scripted for technical staff rather than performed as a one-off.

Updated: 3-21-2019