Skip to content
ActionCustomer.ioUpdated May 2026

How do I send a Customer.io transactional email?

Short answer: Drop the "Customer.ioSend Transactional Email" action anywhere in your workflow, map the inputs from upstream nodes, and publish.

Inputs

The fields this action accepts.

Every field can be mapped from an upstream trigger, AI step, table row, or hard-coded literal.

FieldTypeRequiredDescription
Transactional Message ID
transactional_message_id
stringRequiredThe ID of the transactional message template in Customer.io
To Email
to
stringRequiredTo Email. e.g. "user@example.com"
Customer Email (identifier)
identifiers_email
stringRequiredCustomer Email (identifier). e.g. "user@example.com"
Template Data (JSON)
message_data
stringOptionalVariables to populate the template
Subject Override
subject
stringOptionalOverride the template subject
Sample request
{
"transactional_message_id": "e.g. 1",
"to": "user@example.com",
"identifiers_email": "user@example.com",
"message_data": "{\"name\": \"John\", \"order_id\": \"12345\"}",
"subject": "e.g. Your order #12345 is confirmed"
}
Returns
{
"queued_at": 1700000000,
"delivery_id": "abc-123"
}

Use these fields in downstream nodes for routing, logging, or error handling.

Triggered by

Apps that pair well as the trigger for Send Transactional Email.

Any of these apps can fire this action as part of a workflow.

FAQ

Questions about Send Transactional Email.

What does the Send Transactional Email action do in Customer.io?
Fires a transactional template (designed in Customer.io UI) at a specific recipient with merge data. For "password reset, order confirmation, receipt" workflows where the email content is reviewed in CIO but the trigger is external.
What inputs does Send Transactional Email require?
Required: Transactional Message ID, To Email, Customer Email (identifier). Every input accepts a static value or a variable from any upstream node in your workflow.
Can I use dynamic inputs from earlier workflow nodes?
Yes. Any field on this action can pull values from upstream nodes, whether that's a form response, a trigger payload, an AI output, or a lookup result.
What happens if Customer.io returns an error?
The workflow pauses on the failed node, the error message is captured in the run log, and you can retry the run with one click. Auto-retry policies are configurable per workflow with exponential backoff up to 5 attempts.
Does Send Transactional Email support batch operations?
Yes. Run Send Transactional Email inside a Loop node to process arrays. Tiny Command handles Customer.io's rate limits automatically so you don't have to throttle manually.
More actions

Other Customer.io actions.

Send send transactional email from your workflows.

Triggered by anything in the catalog. Free tier available. No credit card.