Mailchimp
Sends behavioural events to existing Mailchimp audience members through the Marketing API Add Event endpoint, for segmentation and Customer Journey triggers.
Why route Mailchimp through Datafly Signal
- Profiles are updated from the server, not the browser. Events reach Mailchimp even when a tracker blocker or a failed page unload would have dropped a client-side call, so the profile reflects what actually happened.
- One consent decision governs every destination. Mailchimp is gated by the same consent state as the rest of your stack, so a withdrawal applies everywhere at once.
Prerequisites
Create a Marketing API key
Account > Extras > API keys. The key ends in your data-centre suffix, for example -us21.
Find your Audience ID
Audience > Settings > Audience name and defaults > Audience ID.
Configuration
| Field | Type | Required | Description |
|---|---|---|---|
api_key | secret | Yes | Your Mailchimp Marketing API key (Account > Extras > API keys). The key ends in a data-center suffix such as -us6. |
dc | string | Yes | The data-center prefix for your account — the part after the dash in your API key (key-us6), and the subdomain in your Mailchimp admin URL (e.g. us6.admin.mailchimp.com). Determines the API host. |
list_id | string | Yes | The Audience ID events are attached to. Find it in Mailchimp under Audience > Settings > Audience name and defaults > Audience ID. |
Signal Setup
- Navigate to Integrations in the sidebar and open the Integration Library tab.
- Find Mailchimp, click Install and fill in the fields above.
- Pick the preset for your vertical, then review the mappings in the blueprint editor.
curl -X POST http://localhost:8084/v1/admin/integration-catalog/mailchimp/install \
-H "Authorization: Bearer YOUR_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"name": "Mailchimp",
"config": {
"api_key": "0123456789abcdef0123456789abcde-us6",
"dc": "us6",
"list_id": "a1b2c3d4e5"
},
"delivery_mode": "server_side"
}'API endpoint
POST https://{dc}.api.mailchimp.com/3.0/lists/{list_id}/members/{subscriber_hash}/events
Authorization: Basic (any username, API key as password)Example body:
{"name": "order_completed", "occurred_at": "2026-09-22T10:00:00.000Z",
"properties": {"order_id": "T-1001", "revenue": "439.99", "currency": "GBP", "item_ids": "SKU_1,SKU_2"}}The presets turn on the strict output contract: only the fields the blueprint maps are sent.
Event mapping
Default preset (default)
Core behavioural events mapped to Mailchimp event names: page views, search, product views, cart, checkout, purchase, refund, lead and lifecycle (sign-up / login). Each event is addressed to the audience member by subscriber hash (MD5 of the trimmed, lowercased email, which is how Mailchimp keys members; the plain email is not sent), carries an ISO 8601 occurred_at, and sends its properties as strings, as the Events API requires. Contacts must already exist in the audience.
| Signal event | Sent to the vendor as |
|---|---|
page | page_viewed |
search | products_searched |
view_item | product_viewed |
add_to_cart | product_added |
begin_checkout | checkout_started |
purchase | order_completed |
sign_up | signed_up |
login | logged_in |
refund | order_refunded |
generate_lead | lead_submitted |
Identity and personal data
The member is addressed by subscriber hash: the MD5 of the trimmed, lowercased email, which is how Mailchimp keys audience members. The plain email is not sent. Contacts must already exist in the audience; events for unknown members are rejected. Event properties are sent as strings, as the API requires.
Known limitations
- Existing members only: the member is addressed by the subscriber hash (MD5 of the trimmed, lower-cased email) in the URL path, which the preset computes per event; Add Event does not create a member, so an address not in the audience gets a 404.
Troubleshooting
| Symptom | Cause and fix |
|---|---|
404 | The member is not in the audience. |
400 | Event name outside 2 to 30 characters, or a non-string property. |