Send Template
mandrill.send_template
ActionEmailconnection required
Calls the Mandrill API with the connection's credentials.
Send a stored Mandrill template, injecting content into its mc:edit regions and merge fields.
Connection
- Required
- Yes — the node will not save without one
- Auth type
- API key
- Providers
- Mandrill
- Secret shape
- the API key, or {"api_key": "…"}
- Config it needs
- base_url, from_email, from_name, subaccount, ip_pool
- Resolved by
- config.connection_id, else node.connection_id
Configuration
27 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 |
|---|---|---|---|---|---|
template_name Immutable name (slug) of the template to send. | string | Yes | — | — | welcome-email |
template_content Content for the template's mc:edit regions, as an array of {"name": "region", "content": "<p>…</p>"}. Send an empty array when the template needs no injection. | array | No | — | array of object | — |
to Recipients: one address, a comma-separated list, or an array of addresses or {email, name, type} objects. 'Ada <ada@x.io>' is accepted, and a comma inside a quoted display name does not split the list. | any | Yes | — | — | ada@example.com |
cc Addresses to copy, in the same forms as 'to'. | any | No | — | — | — |
bcc Addresses to blind-copy, in the same forms as 'to'. | any | No | — | — | — |
subject Subject line of the message. | string | No | — | — | Your receipt |
from_email Sender address; falls back to the connection's default from address. | string | No | — | email format | — |
from_name Display name shown beside the sender address. | string | No | — | — | — |
tags Tags to file the message under for stats; a comma-separated list is accepted. Tags may not start with an underscore. | array | No | — | array of string | — |
headers Extra SMTP headers to add to the message, such as {"Reply-To": "ops@example.com"}. | object | No | — | — | {"Reply-To":"ops@example.com"} |
metadata User metadata Mandrill stores with the message and returns on search and in webhooks. | object | No | — | — | — |
global_merge_vars Merge values used for every recipient, as {name: content}. Setting any turns Mandrill's merge processing on. | object | No | — | — | — |
merge_vars Per-recipient merge values, as Mandrill's array of {"rcpt": "a@x.io", "vars": [{"name": …, "content": …}]}. | array | No | — | array of object | — |
merge_language Which merge-tag syntax the content uses. | string | No | — | one of "mailchimp", "handlebars" | — |
attachments Files to attach, each {type, name, content} with the content base64-encoded. | array | No | — | array of object | — |
images Images to embed, each {type, name, content}; the name is the Content ID the HTML refers to. | array | No | — | array of object | — |
track_opens Turn open tracking on for this message. | boolean | No | — | — | — |
track_clicks Turn click tracking on for this message. | boolean | No | — | — | — |
important Deliver ahead of the account's non-important messages. | boolean | No | — | — | — |
auto_text Let Mandrill generate the plain-text part from the HTML. | boolean | No | — | — | — |
preserve_recipients Show every recipient in the To header instead of sending one copy each. | boolean | No | — | — | — |
bcc_address An address that receives an exact copy of each recipient's email. | string | No | — | email format | — |
subaccount Send on behalf of this existing subaccount; falls back to the connection's subaccount. | string | No | — | — | — |
message_extra Any other key of Mandrill's message struct, merged in last — the escape hatch for options this node does not name. | object | No | — | — | — |
async_send Send in Mandrill's bulk background mode, which returns 'queued' for every recipient immediately. Messages to more than 10 recipients are always sent this way. | boolean | No | — | — | — |
ip_pool Name of the dedicated IP pool to send from; falls back to the connection's pool, then to the account default. | string | No | — | — | — |
send_at Schedule the message for this UTC time, in YYYY-MM-DD HH:MM:SS format. A past time sends immediately; a future one is limited to a year out and requires a paid account. | string | No | — | — | 2026-10-01 09:00:00 |
Example configuration
Every value below is the contract’s own example or default — nothing invented.
{
"headers": {
"Reply-To": "ops@example.com"
},
"send_at": "2026-10-01 09:00:00",
"subject": "Your receipt",
"template_name": "welcome-email",
"to": "ada@example.com"
}Output
One shape.
result
| Field | Type | Example |
|---|---|---|
results One entry per recipient, as Mandrill returned it: email, status, _id and reject_reason. | array | — |
count How many recipient results came back. | number | — |
accepted True when Mandrill took every recipient (sent, queued or scheduled) and rejected none. | boolean | — |
message_ids The _id Mandrill assigned to each recipient's message, rejected recipients included. | array | — |
status_counts How many recipients landed in each Mandrill status (sent, queued, scheduled, rejected, invalid). | object | — |
rejected The recipients Mandrill refused, each with its status and reject_reason. | array | — |
{
"accepted": false,
"count": 0,
"message_ids": [],
"rejected": [],
"results": [],
"status_counts": {}
}Notes
- The template must be published; a draft-only template sends its last published version, or fails if there is none.
See Send Template run in a workflow.
In a technical demo we add the Mandrill connection, drop the node on the canvas and let Workflow Health pre-flight it before the first real run.