n8n Mailchimp Node: Sync Lists, Automate Campaigns, and Manage Subscribers [Free Workflow JSON]
Mailchimp is the email platform of choice for small businesses: built-in automation, segmentation, revenue tracking, and a free tier that doesn't expire. The n8n Mailchimp node lets you sync subscriber lists, manage campaigns, add tags, and trigger actions without leaving your n8n workflow. This guide covers every operation, the gotchas, and three production-ready workflow patterns.
What the Mailchimp Node Does
The n8n Mailchimp node exposes five core resources:
| Resource | Operations |
|---|---|
| List | Get All, Get by Name |
| Member | Create, Delete, Get, Get All, Update (add to list, modify properties, manage tags) |
| Campaign | Create, Delete, Get, Get All, Pause, Replicate, Resume, Send, Update |
| Automation Workflow | Get All, Get by ID, Pause, Replicate, Resume |
| Batch | Create Batch Operation |
Authentication uses a Mailchimp API Key (connect → account → Extras → API keys). Keys are tied to a specific Mailchimp account and server region.
Setting Up the Credential
- Log into Mailchimp → Account (bottom-left) → Account & billing
- Click Extras → API keys
- Click Create A Key — Mailchimp generates a key like
abc123def456-us12(note the region suffix-us12) - In n8n, add a Mailchimp credential:
- Paste the API key
-
Auto-detect region from the key suffix (or select manually:
-us1,-us2,-us12,-eu1, etc.)
- Test connection and save
Important: Mailchimp API calls are region-specific. The region suffix (
-us12) determines the API endpoint URL (api.mailchimp.com/3.0with region embedded). Wrong region = 404 errors.
Core Operations
List Resource
Get All — lists all audiences (formerly "lists") in your Mailchimp account. Returns list ID, name, member count, open rate, click rate.
Get by Name — retrieves a single list by its display name (useful for dynamic workflows where the list name is passed as a parameter).
Gotcha #1: In Mailchimp UI, audiences are called "lists." The API resource is
lists. Make sure you're referencing the list ID (36-char hash), not the name, for operations that require it.
Member Resource
Create — adds a new subscriber to a list. Required: email address. Optional: merge fields (first name, last name, company, etc.), tags, subscription status (subscribed, unsubscribed, pending, cleaned).
Update — modifies an existing subscriber. Can change status (re-subscribe a unsubscribed member), update merge fields, add/remove tags, update interests (segments).
Get All — retrieves all members of a list with optional filters (status, email prefix, creation date range).
Delete — permanently removes a member from a list. The email is not deleted from Mailchimp entirely, just unsubscribed and removed from the list.
Gotcha #2: Mailchimp considers
unsubscribedandcleanedas "inactive" — Update operations on inactive members may fail silently. Re-subscribe first by setting status tosubscribedorpending, then update.
Campaign Resource
Create — builds a new campaign (but does not send it). Requires list ID, subject, sender email/name, content (HTML or plain text).
Send — immediately sends a campaign to its audience. Irreversible.
Pause/Resume — if a campaign is automated or scheduled, pause/resume its execution.
Replicate — duplicates an existing campaign as a new draft. Useful for templating.
Gotcha #3: Campaigns must have a valid list, subject, sender email, and body. If any field is missing, Create returns 400. Test with Create + Save (do not Send) first, then Send in a separate node.
Automation Workflow Resource
Get All / Get by ID — retrieves automation workflows. These are Mailchimp's equivalent of drip sequences or auto-responders.
Pause/Resume — stops or starts an automation sequence. Useful if you want to dynamically pause a workflow based on a condition (e.g., subscriber balance hit zero).
Batch Resource
Create Batch Operation — sends multiple member operations (add, update, delete) in a single API call. Mailchimp processes them asynchronously. Returns a batch ID for monitoring status.
Workflow Patterns
Pattern 1: Typeform → Mailchimp List → Welcome Campaign
Goal: New form submission → add to Mailchimp list → automatically trigger a welcome email sequence
Nodes:
- Typeform Trigger — webhook on form submit
- Mailchimp: Member Create — email + first name from form → add to "Leads" list
- Mailchimp: Automation Workflow Resume — activate the "New Lead Welcome" automation
- Set — log subscriber email for audit
- Respond — send 200 OK to Typeform
Key decision: After Create, poll the automation workflow status via Get by ID before resuming — ensures it's in a pausable state.
Pattern 2: Shopify Order → Mailchimp VIP Tag + List
Goal: High-value customers → tag as "VIP" in Mailchimp + add to Premium list → receive exclusive campaign
Nodes:
- Webhook — Shopify order.create event (trigger on order > $500)
-
Mailchimp: Member Update — find customer by email, add tag
VIP, add to "Premium Customers" list - Mailchimp: Campaign Create → draft subject: "VIP Early Access: New Collection"
- Mailchimp: Campaign Send → send to "Premium Customers" segment only
- Slack — notify sales: "Sent VIP campaign to N recipients"
Learning: Mailchimp filters on list + interests (segments) + tags. Use tags for dynamic segmentation that changes per order.
Pattern 3: Bulk Re-engagement Campaign via Batch API
Goal: Large list of inactive subscribers → batch operation to re-subscribe with new interest tags
Nodes:
- Google Sheets — Get All rows where status = "inactive"
-
Mailchimp: Batch Create — prepare 500 update operations:
- Set status =
pending - Add tag
Re-engagement-Wave-1 - Set interest in
Email Frequency: Weekly
- Set status =
- Sleep — wait 10 seconds (batch processes asynchronously)
- Set — record batch ID for status monitoring
- Mailchimp: Automation Workflow Get by ID — check batch status via periodic poll
Gotcha #4: Batch operations are asynchronous. You can't rely on the response to confirm completion — poll the batch status API endpoint separately. This is a limitation of Mailchimp's v3 API.
6 Critical Gotchas
-
Region suffix is mandatory —
abc123-us12notabc123. Wrong region = 404. Always check your key's suffix. - Inactive members block updates — unsubscribed/cleaned members may reject Update calls. Re-subscribe first if needed.
- Campaigns require all required fields — missing sender, subject, or list = 400 error. Validate before Create.
- Batch operations are async — Create returns a batch ID, not completion status. Poll status separately.
- Merge fields must be pre-defined — Mailchimp doesn't auto-create merge fields (first name, custom fields, etc.). Define them in the Mailchimp UI first, then reference by key in n8n.
- Automation workflows can only be paused if active — trying to pause an already-paused workflow returns 400. Check state first via Get by ID.
Comparison: Mailchimp Node vs Direct API vs Alternatives
| Feature | Mailchimp Node | Direct Brevo API | Klavioy Node | Notes |
|---|---|---|---|---|
| List management | ✓ | ✓ | ✓ | All handle subscriber sync |
| Campaign send | ✓ | ✓ | ✗ | Klavioy focuses events, not campaigns |
| Automation workflows | ✓ | Partial | ✓ | Mailchimp/Klavioy lead here |
| Batch operations | ✓ | ✓ | ✓ | Essential for bulk work |
| Free tier | ✓ (500 subs) | ✗ (free Lite tier small) | ✗ ($20/mo minimum) | Mailchimp wins for startups |
| API complexity | Low | Medium | Medium | Mailchimp node abstracts well |
When to use Mailchimp node: small businesses, free tier, simple campaigns, SMB automation.
When to use alternatives: Brevo for SMS + email, Klavioy for e-commerce revenue tracking.
Free Workflow JSON: Auto-Subscribe + Tag Assignor
Save this as mailchimp-subscribe-tag.json and import into n8n:
{
"nodes": [
{
"parameters": {},
"id": "webhook",
"name": "Webhook",
"type": "n8n-nodes-base.webhook",
"typeVersion": 1,
"position": [250, 300]
},
{
"parameters": {
"resource": "member",
"operation": "create",
"listId": "={{ $node.webhook.json.list_id }}",
"email": "={{ $node.webhook.json.email }}",
"firstName": "={{ $node.webhook.json.first_name }}",
"subscriptionStatus": "subscribed"
},
"id": "mailchimp_create",
"name": "Mailchimp: Add Subscriber",
"type": "n8n-nodes-base.mailchimp",
"typeVersion": 1,
"position": [450, 300],
"credentials": {
"mailchimpApi": "mailchimp_cred"
}
},
{
"parameters": {
"resource": "member",
"operation": "update",
"listId": "={{ $node.webhook.json.list_id }}",
"email": "={{ $node.webhook.json.email }}",
"tags": ["Early Adopter", "{{ $node.webhook.json.tag }}"]
},
"id": "mailchimp_tag",
"name": "Mailchimp: Add Tag",
"type": "n8n-nodes-base.mailchimp",
"typeVersion": 1,
"position": [650, 300],
"credentials": {
"mailchimpApi": "mailchimp_cred"
}
},
{
"parameters": {
"key": "result",
"value": "Subscribed & tagged"
},
"id": "respond",
"name": "Respond to Webhook",
"type": "n8n-nodes-base.respondToWebhook",
"typeVersion": 1,
"position": [850, 300]
}
],
"connections": {
"webhook": {
"main": [[{"node": "mailchimp_create", "branch": 0, "type": "main", "index": 0}]]
},
"mailchimp_create": {
"main": [[{"node": "mailchimp_tag", "branch": 0, "type": "main", "index": 0}]]
},
"mailchimp_tag": {
"main": [[{"node": "respond", "branch": 0, "type": "main", "index": 0}]]
}
}
}
To use: import JSON into n8n, configure Mailchimp credential, set list ID, test with webhook payload: {"list_id":"abc123","email":"user@example.com","first_name":"Jane","tag":"Newsletter"}
Real-World Win: SMB Email Retention
A SaaS company used this pattern to re-engage churning customers:
- Stripe webhook on failed payment → trigger n8n workflow
- Mailchimp batch update: tag customer as "At Risk"
- Mailchimp automation: send "we miss you" sequence (3 emails, 7-day spacing)
- Result: 18% of "at risk" customers re-activated their subscription
The key: tag-based segmentation + automation sequences = hands-free retention funnel.
Next Steps
- Integrate with Stripe: trigger Mailchimp campaigns on successful payment (upgrade flow)
- Build list segmentation: use merge fields + tags to separate VIP, trial, and free-tier cohorts
- Monitor automation workflows: check open rates and clicks; pause underperforming sequences
- Automate unsubscribe sync: pull unsubscribes from Mailchimp daily, mark as inactive in your database
Related Articles
- n8n Brevo Node: Automate Email Campaigns and Lead Nurturing
- n8n Stripe Webhooks: Handle Payment Events, Subscriptions, and Refunds Automatically
- n8n Google Sheets Node: Read, Write, and Sync Spreadsheet Data in Your Workflows
Related Articles
- n8n Brevo Node: Automate Email Campaigns and Lead Nurturing
- n8n Google Sheets Node: Read, Write, and Sync Spreadsheet Data
- n8n Stripe Webhooks: Handle Payment Events and Subscriptions
Get Your Free n8n Integration Checklist
Before you build your next automation, download our n8n Integration Checklist — 10 critical questions to ask before connecting any tool to n8n. Sign up for free here — no spam, just automation tips.
Done-for-You n8n Automation
Building this yourself feels overwhelming? We handle Mailchimp integrations for SMBs: intake form → list sync → campaign automation, all set up and tested in <48 hours. Learn more about our done-for-you service →
Top comments (0)