Private Email Lists using MailChimp and Salesforce

David Reed

One of the biggest challenges I've encountered in working with MailChimp and its MailChimp for Salesforce application is 'private email lists'. I mean by this email lists that are designed for communication with, for example, major donors, board members, or other small groups of contacts that are defined by established relationships and specific CRM criteria. These groups may change composition regularly as new members are added or as old members drop out of the matching criteria, and no public user interface is required other than the standard opt-out.

MailChimp for Salesforce's overall integration model is additive. MC Queries in Salesforce identify groups of records that must be included in a mailing list and pass those records into MailChimp, where any new records are appended. The reverse, however, is not the case. If a record ceases to match an MC Query, it is not removed from its corresponding list or groups. MC Queries are also fairly limited in the logic upon which they can match: criteria may only be combined by AND.

For many private email lists, this won't work: donors stop giving and members rotate into and out of various internal groups with equal alacrity. Updating MailChimp private groups by hand is both error-prone and time-consuming. Here's the solution I worked out to support these private email lists natively in MailChimp without manual maintenance.

  1. Use formula fields in Salesforce to implement inclusion logic. For example, a courtesy invitation list for donors might be defined as those with a "VIP" checkbox selected or giving in excess of $1,000 either this year or last year. Those three criteria could not be represented in a MailChimp for Salesforce MC Query, which only allows AND logic, but a Salesforce formula field with type Checkbox easily encompasses them.
  1. Create a new list in MailChimp to hold the private email lists. (It's possible to use an existing publication list, but I felt that these communications were different in kind and that a separate list would provide a better user experience). I called mine "Private Announcements and Invitations".
  1. In MC Setup in Salesforce, ensure that the formula fields (or the basic criteria if you're implementing the logic in the MailChimp segments) you created to support list logic are mapped to MailChimp for this new list. Mapped fields, unlike list membership per se, are re-synced to MailChimp in a regular process, and Salesforce updates are reflected in the mapped data.
  2. In MailChimp's settings interface, ensure that all of these fields are not marked Visible. This prevents users from viewing or editing these internal values by accessing MailChimp's profile update UI.
  3. Build MC Queries to match each of the list-definition formula fields and set them to run on a schedule. The queries don't need to be (and shouldn't be) associated with a group or segment.
  4. Use MailChimp's segment builder to create a segment for each private email list, matching on the value "true" in the mapped Salesforce formula field. (My formulas are all checkboxes, but they don't need to be).
  1. Save each segment as an Auto-Update Segment. Auto-Update Segments do remove members who cease to match their defined criteria.

The end result is a MailChimp list with one Auto-Update Segment per private email list, all of which maintain themselves based on the membership information that is calculated by the formula fields and synced from Salesforce. List members who fail to match criteria do remain members of the containing MailChimp List, but will fall out of segments (the actual private email lists) to which they no longer belong as soon as the containing list syncs.

The time resolution for list updates is between one and 24 hours. MailChimp syncs lists from Salesforce on an hourly basis, which updates all of the synchronized fields. However, the MC Queries which add new members to the lists only run every 24 hours. Hence, you can count on updated information, including changed criteria that will prompt a member to drop off an Auto-Update Segment, to propagate to MailChimp within one hour, but contacts who match list criteria for the first time may not be added for up to 24 hours. Fortunately, you can always force a list sync or a query run from the MC Settings tab in Salesforce.