Skip to main content

Mailchimp

When a supplier has connected Mailchimp (Settings > API & Integrations > Mailchimp), their customers are added to the Mailchimp audience they picked, tagged by what they booked. Anyone who unsubscribes or hard-bounces in Mailchimp is recorded as not wanting marketing email, so the supplier's own campaigns skip them too.

Connecting is an OAuth (browser) flow and is not an API action.

Requires the Mailchimp plan feature (Growth and above).

Get connection statusโ€‹

GET /api/v1/settings/mailchimp

Scope: mailchimp:read

{
"data": {
"connected": true,
"needs_reconnect": false,
"account_name": "Example Rentals",
"audience": { "id": "a1b2c3d4e5", "name": "Newsletter" },
"sync_scope": "opted_in",
"tag_bookings": true,
"unsubscribes_come_back": true,
"customers_in_mailchimp": 1284,
"subscribed": 1190,
"last_synced_at": "2026-09-30T10:15:00+00:00",
"problem": null
},
"meta": { "request_id": "..." }
}

When Mailchimp is not connected, connected is false and the other fields are null or 0.

FieldMeaning
sync_scopeopted_in: only customers whose latest answer to marketing email is yes. everyone: every customer with an email; those who never said yes are added as Mailchimp transactional contacts, which Mailchimp does not send marketing to.
tag_bookingsWhen true, customers are tagged Rentals, Experiences, Store or Services, plus Booked: <item name> for each item they booked.
unsubscribes_come_backtrue when Mailchimp accepted our webhook, so unsubscribes and hard bounces are recorded in EquipDash.
needs_reconnect / problemSet when Mailchimp stopped accepting the connection or the audience was deleted. Syncing is paused until the supplier reconnects in the portal.

Change who goes to Mailchimpโ€‹

PATCH /api/v1/settings/mailchimp

Scope: mailchimp:write

{
"sync_scope": "everyone",
"tag_bookings": true
}

Both fields are optional. sync_scope must be opted_in or everyone (otherwise 422). A change queues every customer in scope again. Returns the updated status (same shape as Get connection status), or 422 with error.code = mailchimp_not_connected.

Sync nowโ€‹

POST /api/v1/settings/mailchimp/sync

Scope: mailchimp:write

Queues every customer in scope. Runs in the background.

{
"data": { "queued": 1284 },
"meta": { "request_id": "..." }
}

Returns 422 with error.code = mailchimp_not_connected if Mailchimp is not connected or is paused.

Disconnectโ€‹

DELETE /api/v1/settings/mailchimp

Scope: mailchimp:write

Stops syncing and removes the unsubscribe webhook from the audience. Contacts already in Mailchimp stay there. Returns 204.

MCP toolsโ€‹

The same actions are available to AI tools as get_mailchimp_status, sync_mailchimp and update_mailchimp_settings.