Add or Update Member
mailchimp.upsert_member
ActionEmailconnection required
Calls the Mailchimp API with the connection's credentials.
Add a member, or update it if the address is already in the audience, in one idempotent PUT. This is the only member write that can re-subscribe an address Mailchimp already holds as unsubscribed.
Connection
- Required
- Yes — the node will not save without one
- Auth type
- API key
- Providers
- Mailchimp
- Secret shape
- the Mailchimp API key (…-<dc>)
- Config it needs
- dc
- Resolved by
- config.connection_id, else node.connection_id
Configuration
10 fields, 2 required. A dotted path is a nested object and name[] an array of objects — the editor renders the same tree.
| Field | Type | Required | Default | Constraints | Example |
|---|---|---|---|---|---|
list_id The audience (list) id, as shown in Mailchimp under Audience settings and returned as 'id' by Mailchimp: List Audiences. | string | Yes | — | — | — |
email The member's email address. Mailchimp addresses a member by the MD5 of the lowercased address, which this node derives for you; a 32-character subscriber hash from an earlier step is accepted as-is. | string | Yes | — | — | — |
status_if_new The status to give the member when the address is new to this audience. Mailchimp requires it on every upsert. | string | No | subscribed | one of "subscribed", "pending", "unsubscribed", "cleaned", "transactional" | — |
status The status to set when the member already exists. Leave empty to leave an existing member's status untouched. | string | No | — | one of "subscribed", "unsubscribed", "cleaned", "pending", "transactional" | — |
email_type Which format this member should receive: 'html' or 'text'. | string | No | — | one of "html", "text" | — |
language The member's language as a two-letter code, such as 'en' or 'fr'. | string | No | — | — | — |
vip Mark the member as VIP in Mailchimp. | boolean | No | — | — | — |
merge_fields Merge-field values keyed by merge tag, as a JSON object — {"FNAME": "Ada"}. Mailchimp: List Merge Fields returns the tags this audience accepts. | object | No | — | — | {"FNAME":"Ada"} |
interests Interest-group membership, as a JSON object of {"<interest_id>": true|false}. Ids come from the audience's interest categories. | object | No | — | — | — |
extra Further keys to merge into the member object sent to Mailchimp, such as location or marketing_permissions, as a JSON object. | object | No | — | — | — |
Example configuration
Every value below is the contract’s own example or default — nothing invented.
{
"merge_fields": {
"FNAME": "Ada"
},
"status_if_new": "subscribed"
}Output
One shape.
result
| Field | Type | Example |
|---|---|---|
id The member's subscriber hash — the MD5 of the lowercased email. | string | — |
email_address The member's email address as Mailchimp stores it. | string | — |
unique_email_id Mailchimp's account-wide id for this email address. | string | — |
contact_id The contact id shared across audiences in the account. | string | — |
full_name The member's full name, assembled from its merge fields. | string | — |
web_id The id this member has in the Mailchimp web UI's URLs. | number | — |
email_type The format this member receives: 'html' or 'text'. | string | — |
status subscribed, unsubscribed, cleaned, pending, transactional or archived. | string | — |
merge_fields The member's merge-field values, keyed by merge tag. | object | — |
interests Interest-group membership, keyed by interest id. | object | — |
stats Open and click rates for this member on this audience. | object | — |
tags The tags on this member, each with an 'id' and a 'name'. | array | — |
list_id The audience this member belongs to. | string | — |
last_changed When the member was last updated, ISO 8601. | string | — |
timestamp_opt When the member opted in, ISO 8601, when known. | string | — |
member_rating Mailchimp's 1-5 engagement rating for the member. | number | — |
language The member's language code. | string | — |
vip Whether the member is marked VIP. | boolean | — |
{
"contact_id": "",
"email_address": "",
"email_type": "",
"full_name": "",
"id": "",
"interests": {},
"language": "",
"last_changed": "",
"list_id": "",
"member_rating": 0,
"merge_fields": {},
"stats": {},
"status": "",
"tags": [],
"timestamp_opt": "",
"unique_email_id": "",
"vip": false,
"web_id": 0
}See Add or Update Member run in a workflow.
In a technical demo we add the Mailchimp connection, drop the node on the canvas and let Workflow Health pre-flight it before the first real run.