DEV Community

Pirate Prentice
Pirate Prentice

Posted on

n8n Mailchimp Node: Sync Lists, Automate Campaigns, and Manage Subscribers

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

  1. Log into Mailchimp → Account (bottom-left) → Account & billing
  2. Click Extras → API keys
  3. Click Create A Key — Mailchimp generates a key like abc123def456-us12 (note the region suffix -us12)
  4. 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.)
  5. Test connection and save

Important: Mailchimp API calls are region-specific. The region suffix (-us12) determines the API endpoint URL (api.mailchimp.com/3.0 with 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 unsubscribed and cleaned as "inactive" — Update operations on inactive members may fail silently. Re-subscribe first by setting status to subscribed or pending, 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:

  1. Typeform Trigger — webhook on form submit
  2. Mailchimp: Member Create — email + first name from form → add to "Leads" list
  3. Mailchimp: Automation Workflow Resume — activate the "New Lead Welcome" automation
  4. Set — log subscriber email for audit
  5. 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:

  1. Webhook — Shopify order.create event (trigger on order > $500)
  2. Mailchimp: Member Update — find customer by email, add tag VIP, add to "Premium Customers" list
  3. Mailchimp: Campaign Create → draft subject: "VIP Early Access: New Collection"
  4. Mailchimp: Campaign Send → send to "Premium Customers" segment only
  5. 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:

  1. Google Sheets — Get All rows where status = "inactive"
  2. Mailchimp: Batch Create — prepare 500 update operations:
    • Set status = pending
    • Add tag Re-engagement-Wave-1
    • Set interest in Email Frequency: Weekly
  3. Sleep — wait 10 seconds (batch processes asynchronously)
  4. Set — record batch ID for status monitoring
  5. 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

  1. Region suffix is mandatoryabc123-us12 not abc123. Wrong region = 404. Always check your key's suffix.
  2. Inactive members block updates — unsubscribed/cleaned members may reject Update calls. Re-subscribe first if needed.
  3. Campaigns require all required fields — missing sender, subject, or list = 400 error. Validate before Create.
  4. Batch operations are async — Create returns a batch ID, not completion status. Poll status separately.
  5. 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.
  6. 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}]]
    }
  }
}
Enter fullscreen mode Exit fullscreen mode

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:

  1. Stripe webhook on failed payment → trigger n8n workflow
  2. Mailchimp batch update: tag customer as "At Risk"
  3. Mailchimp automation: send "we miss you" sequence (3 emails, 7-day spacing)
  4. 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



Related Articles


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)