Reference · Tools

Mailchimp

Manage Mailchimp audience members, member tags, list groups, and email campaigns.

Action Marketing v1

The Mailchimp node manages audiences and campaigns: adding and updating members, applying member tags, managing interest groups, and working with email campaigns. A typical build is syncing customers into an audience and tagging them by plan so campaigns can segment on it.

Node type
Action
Parameters
45
Outputs
Output, Error
Credentials
Mailchimp API

Mailchimp

Manage Mailchimp audience members, tags, groups, and campaigns.

Overview

Connects to the Mailchimp Marketing API to manage audience list members (create, get, update, delete), member tags (add, remove), list interest groups, and email campaigns (get, list, delete, send, replicate, resend). Uses API key authentication with datacenter-aware URL construction. Supports offset-based pagination for list operations.

Category: Marketing
Tool Name: mailchimp
Version: 1

Appearance: Icon: si-mailchimp | Color: #FFE01B

Node Type

Action — processes input items and produces output

Input / Output

DirectionPort(s)
InputInput
OutputOutput, Error

Credentials

This tool requires Mailchimp API credentials. See the Credentials Guide for setup instructions.

Resources

ResourceValue
Campaigncampaign
List GrouplistGroup
Membermember
Member TagmemberTag

Operations

Each resource has its own Operation list, and several resources reuse the same operation values (create, delete, get, getAll). Pick the resource first, then the operation.

ResourceOperationValueDescription
MemberCreatecreateCreate a new member on list
MemberDeletedeleteDelete a member on list
MemberGetgetGet a member on list
MemberGet ManygetAllGet many members on a list
MemberUpdateupdateUpdate a member on list
Member TagCreatecreateAdd tags to a list member
Member TagDeletedeleteRemove tags from a list member
List GroupGet ManygetAllGet many groups
CampaignDeletedeleteDelete a campaign
CampaignGetgetGet a campaign
CampaignGet ManygetAllGet many campaigns
CampaignReplicatereplicateReplicate a campaign
CampaignResendresendCreates a Resend to Non-Openers version of this campaign
CampaignSendsendSend a campaign

Parameters

Most operations need the List ID — Mailchimp calls it the Audience ID, and you find it under Audience > Settings > Audience name and defaults. The List ID, Email, Campaign ID and Group Category ID fields accept expressions, so they can come from the incoming item ({{ $json.email }}).

Member Create and Member Update each offer two ways to supply merge fields, location and interest groups: the structured form fields, or raw JSON objects. JSON Parameters picks between them, and the two paths are mutually exclusive.

Member: Create

ParameterTypeRequiredDefaultDescription
List ID (list)stringYesThe Mailchimp audience/list ID. Find in Mailchimp: Audience > Settings > Audience name and defaults > Audience ID.
EmailstringYesEmail address for the subscriber.
StatusoptionsYessubscribedSubscriber’s current status.
Options: cleaned, pending, subscribed, transactional, unsubscribed
JSON ParametersbooleanNofalseWhether to pass merge fields, location, and interest groups as raw JSON.
OptionscollectionNo{}Optional subscriber attributes.
— Email TypeoptionsNoType of email this member asked to get.
Options: html, text
— LanguagestringNoIf set/detected, the subscriber’s language.
— Opt-in IPstringNoThe IP address the subscriber used to confirm their opt-in status.
— Signup IPstringNoIP address the subscriber signed up from.
— Signup TimestampdateTimeNoThe date and time the subscriber signed up for the list in ISO 8601 format.
— TagsstringNoTags to associate with the member, separated by commas.
— VIPbooleanNofalseWhether the subscriber is a VIP.
— Opt-in TimestampdateTimeNoThe date and time the subscriber confirmed their opt-in status in ISO 8601 format.
LocationfixedCollectionNo{}Subscriber location information. (shown when JSON Parameters is false)
— LatitudestringYesThe location latitude.
— LongitudestringYesThe location longitude.
Merge FieldsfixedCollectionNo{}An individual merge var and value for a member. Use merge field tags like FNAME, LNAME. (shown when JSON Parameters is false)
— Field NamestringYesMerge field tag (e.g., FNAME, LNAME). Find in Mailchimp: Audience > Settings > Audience fields and MERGE tags.
— Field ValuestringYesMerge field value.
Interest GroupsfixedCollectionNo{}Interest groups to set on the member. (shown when JSON Parameters is false)
— Category IDstringNoInterest category ID.
— Interest IDstringNoThe specific interest/group ID within the category.
— ActivebooleanNofalseWhether the member belongs to this interest group.
Merge Fields (JSON)jsonNoMerge fields as JSON object, e.g., {“FNAME”: “John”, “LNAME”: “Doe”}. (shown when JSON Parameters is true)
Location (JSON)jsonNoLocation as JSON object, e.g., {“latitude”: 40.7128, “longitude”: -74.0060}. (shown when JSON Parameters is true)
Interest Groups (JSON)jsonNoInterest groups as JSON object, e.g., {“interestId1”: true, “interestId2”: false}. (shown when JSON Parameters is true)

Member: Delete

ParameterTypeRequiredDefaultDescription
List ID (list)stringYesThe Mailchimp audience/list ID.
EmailstringYesMember’s email address.

Member: Get

ParameterTypeRequiredDefaultDescription
List ID (list)stringYesThe Mailchimp audience/list ID.
EmailstringYesMember’s email address.
OptionscollectionNo{}Response shaping options.
— FieldsstringNoA comma-separated list of fields to return.
— Exclude FieldsstringNoA comma-separated list of fields to exclude.

Member: Get Many

ParameterTypeRequiredDefaultDescription
List ID (list)stringYesThe Mailchimp audience/list ID.
Return AllbooleanNofalseWhether to return all results or only up to a given limit.
LimitnumberNo500Max number of results to return. (shown when Return All is false)
OptionscollectionNo{}Filters applied to the member list.
— Before Last ChangeddateTimeNoRestrict results to subscribers whose information changed before the set timeframe.
— Before Timestamp OptdateTimeNoRestrict results to subscribers who opted-in before the set timeframe.
— Email TypeoptionsNoType of email this member asked to get.
Options: html, text
— StatusoptionsNoSubscriber’s current status.
Options: cleaned, pending, subscribed, transactional, unsubscribed
— Since Last ChangeddateTimeNoRestrict results to subscribers whose information changed after the set timeframe.

Member: Update

ParameterTypeRequiredDefaultDescription
List ID (list)stringYesThe Mailchimp audience/list ID.
EmailstringYesEmail address of the subscriber.
JSON ParametersbooleanNofalseWhether to pass merge fields, location, and interest groups as raw JSON.
Update FieldscollectionNo{}The member properties to change. Only the fields you add are sent.
— Email TypeoptionsNoType of email this member asked to get.
Options: html, text
— Interest GroupsfixedCollectionNo{}Interest groups to set on the member. (shown when JSON Parameters is false)
— — Category IDstringNoInterest category ID.
— — Interest IDstringNoThe specific interest/group ID.
— — ActivebooleanNofalseWhether the member belongs to this interest group.
— LanguagestringNoIf set/detected, the subscriber’s language.
— Merge FieldsfixedCollectionNo{}An individual merge var and value for a member. (shown when JSON Parameters is false)
— — Field NamestringYesMerge field tag (e.g., FNAME, LNAME).
— — Field ValuestringYesMerge field value.
— Opt-in IPstringNoThe IP address the subscriber used to confirm their opt-in status.
— Signup IPstringNoIP address the subscriber signed up from.
— Signup TimestampdateTimeNoThe date and time the subscriber signed up for the list in ISO 8601 format.
— Skip Merge ValidationbooleanNofalseWhether member data will be accepted without merge field values, even if the merge field is usually required.
— StatusoptionsNoSubscriber’s current status.
Options: cleaned, pending, subscribed, transactional, unsubscribed
— VIPbooleanNofalseWhether the subscriber is a VIP.
— LocationfixedCollectionNo{}Subscriber location information. (shown when JSON Parameters is false)
— — LatitudestringYesThe location latitude.
— — LongitudestringYesThe location longitude.
— Opt-in TimestampdateTimeNoThe date and time the subscriber confirmed their opt-in status in ISO 8601 format.
Merge Fields (JSON)jsonNoMerge fields as JSON object. (shown when JSON Parameters is true)
Location (JSON)jsonNoLocation as JSON object. (shown when JSON Parameters is true)
Interest Groups (JSON)jsonNoInterest groups as JSON object. (shown when JSON Parameters is true)

Member Tag: Create

ParameterTypeRequiredDefaultDescription
List ID (list)stringYesThe Mailchimp audience/list ID.
EmailstringYesEmail address of the subscriber.
TagsstringYesComma-separated list of tag names to add or remove.
OptionscollectionNo{}Optional tagging behavior.
— Is SyncingbooleanNofalseWhether automations based on the tags in the request will not fire.

Member Tag: Delete

ParameterTypeRequiredDefaultDescription
List ID (list)stringYesThe Mailchimp audience/list ID.
EmailstringYesEmail address of the subscriber.
TagsstringYesComma-separated list of tag names to add or remove.
OptionscollectionNo{}Optional tagging behavior.
— Is SyncingbooleanNofalseWhether automations based on the tags in the request will not fire.

List Group: Get Many

ParameterTypeRequiredDefaultDescription
List ID (list)stringYesThe Mailchimp audience/list ID.
Group Category IDstringYesThe interest category ID. Find by calling the Mailchimp API: GET /lists/{list_id}/interest-categories.
Return AllbooleanNofalseWhether to return all results or only up to a given limit.
LimitnumberNo500Max number of results to return. (shown when Return All is false)

Campaign: Get Many

ParameterTypeRequiredDefaultDescription
Return AllbooleanNofalseWhether to return all results or only up to a given limit.
LimitnumberNo10Max number of results to return. (shown when Return All is false)
OptionscollectionNo{}Filters and response shaping for the campaign list.
— Before Create TimedateTimeNoRestrict the response to campaigns created before the set time.
— Before Send TimedateTimeNoRestrict the response to campaigns sent before the set time.
— Exclude FieldsstringNoComma-separated list of fields to exclude from the response.
— FieldsstringNocampaigns.id,campaigns.status,campaigns.tracking,campaigns.settings.from_name,campaigns.settings.reply_to,campaigns.settings.titleComma-separated list of fields to return. Use * for all fields.
— List ID (listId)stringNoFilter campaigns by the audience/list ID.
— Since Create TimedateTimeNoRestrict the response to campaigns created after the set time.
— Since Send TimedateTimeNoRestrict the response to campaigns sent after the set time.
— Sort DirectionoptionsNoDetermines the order direction for sorted results.
Options: ASC, DESC
— Sort FieldoptionsNoReturns files sorted by the specified field.
Options: create_time, send_time
— StatusoptionsNoThe status of the campaign.
Options: save, sending, sent, schedule

Campaign: Get

ParameterTypeRequiredDefaultDescription
Campaign IDstringYesThe ID of the campaign.

Campaign: Delete

ParameterTypeRequiredDefaultDescription
Campaign IDstringYesThe ID of the campaign.

Campaign: Replicate

ParameterTypeRequiredDefaultDescription
Campaign IDstringYesThe ID of the campaign.

Campaign: Resend

ParameterTypeRequiredDefaultDescription
Campaign IDstringYesThe ID of the campaign.

Campaign: Send

ParameterTypeRequiredDefaultDescription
Campaign IDstringYesThe ID of the campaign.

All Operations

ParameterTypeRequiredDefaultDescription
Max ConcurrencynumberNo10Maximum number of items to process concurrently.

Output Data

The Mailchimp response is merged onto the input item’s JSON at the top level — the returned fields sit alongside the fields the item already carried, so downstream nodes address them directly ({{ $json.email_address }}). A response field with the same name as an existing item field overwrites it. Binary data on the input item is forwarded.

OperationsOutput
Member Get Many, Campaign Get Many, List Group Get ManyOne output item per record — 500 members become 500 output items from a single input item. A response with no records produces no output items for that input.
Member Create, Member Get, Member Update, Campaign Get, Campaign Replicate, Campaign ResendOne output item carrying the returned member or campaign object.
Member Delete, Member Tag Create, Member Tag Delete, Campaign Delete, Campaign SendOne output item carrying success: true — these calls confirm the change instead of returning a record.

A member object looks like this:

{
  "id": "8a25ff1d98",
  "email_address": "subscriber@example.com",
  "unique_email_id": "1e8d6ba0d2",
  "status": "subscribed",
  "merge_fields": { "FNAME": "John", "LNAME": "Doe" },
  "interests": { "interest123": true },
  "stats": { "avg_open_rate": 0.42, "avg_click_rate": 0.11 },
  "tags": [{ "id": 1234, "name": "customer" }],
  "list_id": "abc123def4",
  "last_changed": "2026-01-15T10:30:00+00:00"
}

When the audience requires double opt-in, Mailchimp returns the new member with status: "pending" even though you asked for subscribed. Member: Create flags that case so it is not mistaken for success:

{
  "status": "pending",
  "_doubleOptInPending": true,
  "_message": "Audience requires double opt-in — member is pending confirmation"
}

Campaign lists return only the fields named by the Fields option, which defaults to a compact set (campaigns.id, campaigns.status, campaigns.tracking and three settings fields); ask for * to get the full campaign object.

Member operations address the subscriber by the hash of their email address, so Member: Create behaves as an upsert — running it for an address that already exists updates that member rather than failing. Use it when you want “add or update” semantics, and Member: Update when the member must already exist.

Member: Delete archives the subscriber rather than erasing them, so the address stays in the audience’s archived list and can be re-subscribed later.

Usage Examples

  • Add a subscriber to a Mailchimp audience list
  • Get all members from a Mailchimp list
  • Add tags to a Mailchimp subscriber
  • Send a Mailchimp email campaign
  • Get all campaigns from Mailchimp

Example Configuration

Add a subscriber with merge fields, location and interest groups filled in through the form fields:

{
  "type": "mailchimp",
  "parameters": {
    "resource": "member",
    "operation": "create",
    "list": "abc123def4",
    "email": "subscriber@example.com",
    "status": "subscribed",
    "jsonParameters": false,
    "options": {
      "emailType": "html",
      "language": "en",
      "tags": "newsletter,customer",
      "vip": true
    },
    "mergeFieldsUi": {
      "mergeFieldsValues": [
        { "name": "FNAME", "value": "John" },
        { "name": "LNAME", "value": "Doe" }
      ]
    },
    "locationFieldsUi": {
      "locationFieldsValues": {
        "latitude": "40.7128",
        "longitude": "-74.0060"
      }
    },
    "groupsUi": {
      "groupsValues": [
        {
          "categoryId": "interest123",
          "categoryFieldId": "group456",
          "value": true
        }
      ]
    }
  }
}

Add the same subscriber with raw JSON instead — handy when the data already arrives as objects:

{
  "type": "mailchimp",
  "parameters": {
    "resource": "member",
    "operation": "create",
    "list": "abc123def4",
    "email": "{{ $json.email }}",
    "status": "subscribed",
    "jsonParameters": true,
    "options": {
      "emailType": "html",
      "vip": false
    },
    "mergeFieldsJson": "{\"FNAME\":\"John\",\"LNAME\":\"Doe\",\"COMPANY\":\"Example Corp\"}",
    "locationJson": "{\"latitude\":40.7128,\"longitude\":-74.0060}",
    "groupJson": "{\"interest123\":true,\"interest456\":false}"
  }
}

Change a member’s status and name:

{
  "type": "mailchimp",
  "parameters": {
    "resource": "member",
    "operation": "update",
    "list": "abc123def4",
    "email": "subscriber@example.com",
    "jsonParameters": false,
    "updateFields": {
      "status": "subscribed",
      "vip": true,
      "mergeFieldsUi": {
        "mergeFieldsValues": [
          { "name": "FNAME", "value": "Jane" }
        ]
      },
      "locationFieldsUi": {
        "locationFieldsValues": {
          "latitude": "41.8781",
          "longitude": "-87.6298"
        }
      }
    }
  }
}

Read one member back:

{
  "type": "mailchimp",
  "parameters": {
    "resource": "member",
    "operation": "get",
    "list": "abc123def4",
    "email": "subscriber@example.com",
    "options": {
      "fields": "id,email_address,status,merge_fields"
    }
  }
}

List recently changed subscribers, one item each:

{
  "type": "mailchimp",
  "parameters": {
    "resource": "member",
    "operation": "getAll",
    "list": "abc123def4",
    "returnAll": false,
    "limit": 50,
    "options": {
      "status": "subscribed",
      "sinceLastChanged": "2026-01-01T00:00:00Z"
    }
  }
}

Remove a subscriber from the audience:

{
  "type": "mailchimp",
  "parameters": {
    "resource": "member",
    "operation": "delete",
    "list": "abc123def4",
    "email": "{{ $json.email }}"
  }
}

Tag a subscriber:

{
  "type": "mailchimp",
  "parameters": {
    "resource": "memberTag",
    "operation": "create",
    "list": "abc123def4",
    "email": "subscriber@example.com",
    "tags": "customer,vip,newsletter",
    "options": {
      "isSyncing": false
    }
  }
}

List the interests inside one group category:

{
  "type": "mailchimp",
  "parameters": {
    "resource": "listGroup",
    "operation": "getAll",
    "list": "abc123def4",
    "groupCategory": "cat123456",
    "returnAll": true
  }
}

Fetch one campaign:

{
  "type": "mailchimp",
  "parameters": {
    "resource": "campaign",
    "operation": "get",
    "campaignId": "campaign123"
  }
}

Find recently created campaigns, newest first:

{
  "type": "mailchimp",
  "parameters": {
    "resource": "campaign",
    "operation": "getAll",
    "returnAll": false,
    "limit": 25,
    "options": {
      "status": "sent",
      "sinceCreateTime": "2026-01-01T00:00:00Z",
      "sortField": "create_time",
      "sortDirection": "DESC",
      "fields": "campaigns.id,campaigns.settings.title,campaigns.status"
    }
  }
}

Send a campaign:

{
  "type": "mailchimp",
  "parameters": {
    "resource": "campaign",
    "operation": "send",
    "campaignId": "{{ $json.id }}"
  }
}

Error Handling

ModeBehavior
stopHalts workflow on first error
continueSkips failed items, passes successful ones through
errorPortRoutes failed items to Error output port

Tips

Use Mailchimp to manage email marketing audience members, tags, interest groups, and campaigns via the Mailchimp Marketing API.

Frequently asked questions

What can it manage besides subscribers?

Member tags, list interest groups and email campaigns, so segmentation and sending are both reachable from the same node.

How do tags differ from interest groups?

Tags are free-form labels you apply to members; interest groups are structured categories defined on the audience. Both are supported, and which you use depends on how the audience was set up in Mailchimp.

How do I react to subscriber changes?

Use the Mailchimp Trigger, which fires on subscribe, unsubscribe, profile update and other list events.

Which credential does it need?

A Mailchimp API credential, shared with the Mailchimp Trigger.

Build with the Mailchimp node

Drop it into a workflow, wire it to an agent, or call it on a schedule. You'll need Mailchimp API credentials first.

Open BusyBot

Last updated . Spotted something wrong? Tell us.