Mailchimp
An explanation of how Mailchimp data is synced with beabee
Overview
Mailchimp data is synced both ways to and from beabee. This allows community organisers to have all their contacts in one place (on beabee), while still leveraging the newsletter functionality of Mailchimp.
Limitations
beabee can currently only sync with one Mailchimp audience, see merging multiple audiences for details.
Setup
We need to create an API key and a webhook in Mailchimp, you will be given a URL with a secret token by the beabee team. The URL should not be shared with anyone else.
URL: https://<audience URL>/webhook/mailchimp/?secret=<secret>
1. Login to Mailchimp and go to your Account page

2. Go to Extras -> API keys

3. Create a key

4. Copy the API key and send it back to the beabee team. This key should be kept secret and sent to the team securely, anyone who has it could access your Mailchimp account.

5. Set the API key label to "beabee - live"

6. Now go to your audience settings to add the webhook

7. Copy the unique audience ID and send it to the beabee team, then go to Webhooks

8. Create a webhook

9. Enter the URL the beabee team provided into the callback URL field and ensure the rest of the settings reflect the screenshot below

10. Done!
Merging multiple audiences
beabee can only sync with one Mailchimp audience. This is how Mailchimp recommend you organise your contacts but it seems pretty common that organisers instead use different audiences for different newsletters. To fully integrate Mailchimp with beabee you therefore need to merge your audiences and use groups for the different newsletters instead.
Things to note
You will lose your contact engagement score and open/click rates, these will reestablish over time.
Mailchimp charges per contact per audience, therefore by merging your audiences you could save money.
...
Process coming soon
Data model
The following data is synced, grouped here by how it is stored in Mailchimp
Email address
The contact's email address
Subscription status
Subscribed: Can be emailed
Pending: Has been sent an email asking them to confirm they want to be subscribed
Unsubscribed: Can't be emailed but does still count towards billing
Archived: Can't be emailed and no longer counts towards billing but data has not been deleted, if the user is unarchived their data would be restored (e.g. open/click rates)
Deleted: Data is fully deleted from Mailchimp, if the user is re-added they will have no previous data associated with them
Tags
Contacts can have one or more tags.
beabee currently has one standard tag, "Active member" which is set on contacts who have an active "member" role. Community organisers can also assign a tag to a segment and this will be set on all contacts who are in the segment.
Merge fields
Contacts can have merge fields (custom fields), currently we use:
beabee field
Mailchimp merge field
Example
First name
FNAME
Will
Last name
LNAME
Franklin
Contribution monthly amount
C_MNTHAMT
5
Contribution period
C_PERIOD
annually
Contribution description
C_DESC
£60/annually
Referral code
REFCODE
WF301
Polls code
POLLSCODE
WF678
Note: This currently isn't editable by community organisers
Syncing
From Mailchimp to beabee
On events from Mailchimp:
beabee uses a webhook to get updates from Mailchimp, it listens for the following events:
Subscribe -> A new contact has been added to Mailchimp, create the contact in beabee
Change email -> A contact's email address has changed, update it in beabee
Update profile -> A contact's profile data has changed, update it in beabee Note: We currently only support updating the contact's first name and last name, all other updates are ignored
From beabee to Mailchimp
Immediately when an action is triggered in beabee
A new contact is created -> Create the contact in Mailchimp
A contact is updated (e.g. update address, contribution, etc.) -> Update the contact's merge fields in Mailchimp
A contact's membership role becomes active -> Add the "Active member" tag
A contact's membership role becomes inactive -> Remove the "Active member" tag, set their status to unsubscribed
A contact answers a call out that has been assigned a newsletter merge field -> Update the contact's merge field with their answer to the call out
Resync is triggered -> All contacts are reuploaded to Mailchimp, overwriting all merge fields and creating any unknown contacts in an unsubscribed state. Contacts that are only in Mailchimp are imported into beabee Note: We don't currently sync tags
Daily jobs
Archive members that have expired in the last day -> Remove the "Active member" tag, set their status to archived
Update members who have joined a segment in the last day -> Add segment tag to contact in Mailchimp
Update members who have left a segment in the last day -> Remove segment tag from contact in Mailchimp
Problems
If a contact manually unsubscribes from Mailchimp they can't be opted back in via the API at a later date
Last updated
Was this helpful?