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

FieldTypeRequiredDescription
api_keysecretYesYour Mailchimp Marketing API key (Account > Extras > API keys). The key ends in a data-center suffix such as -us6.
dcstringYesThe 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_idstringYesThe Audience ID events are attached to. Find it in Mailchimp under Audience > Settings > Audience name and defaults > Audience ID.

Signal Setup

  1. Navigate to Integrations in the sidebar and open the Integration Library tab.
  2. Find Mailchimp, click Install and fill in the fields above.
  3. 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 eventSent to the vendor as
pagepage_viewed
searchproducts_searched
view_itemproduct_viewed
add_to_cartproduct_added
begin_checkoutcheckout_started
purchaseorder_completed
sign_upsigned_up
loginlogged_in
refundorder_refunded
generate_leadlead_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

SymptomCause and fix
404The member is not in the audience.
400Event name outside 2 to 30 characters, or a non-string property.