Trigger Broadcast
customer_io.trigger_broadcast
ActionCRM & salesconnection required
Calls the Customer.io API with the connection's credentials.
Start an API-triggered broadcast and return the trigger id. The send itself runs asynchronously, so the id is what you poll.
Connection
- Required
- Yes — the node will not save without one
- Auth type
- API key
- Providers
- Customer.io
- Secret shape
- {"site_id": "…", "api_key": "…", "app_api_key": "…"} — the Site ID and Track API key for the Track nodes, the App API key for the rest
- Config it needs
- region, workspace_id
- Resolved by
- config.connection_id, else node.connection_id
Configuration
9 fields, 1 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 |
|---|---|---|---|---|---|
broadcast_id The broadcast's numeric id, from its page in the dashboard. | string | Yes | — | — | 42 |
data Liquid data shared by every message in this send, as a JSON object. | object | No | — | — | — |
recipients An audience filter, as a JSON object, replacing the broadcast's own audience for this send. | object | No | — | — | — |
emails The email addresses to send to, as a JSON array. Each must already belong to a person; this cannot create one. | array | No | — | array of string | — |
ids The person ids to send to, as a JSON array. Each must already exist; this cannot create one. | array | No | — | array of string | — |
per_user_data One JSON object per recipient, each carrying an 'id' or 'email' and its own 'data' for Liquid. | array | No | — | array of object | — |
data_file_url The URL of a newline-delimited JSON file of recipients and their data, optionally gzip-compressed. | string | No | — | — | — |
email_ignore_missing Skip addresses in 'emails' that match no person instead of failing the whole send. | boolean | No | false | — | — |
id_ignore_missing Skip ids in 'ids' that match no person instead of failing the whole send. | boolean | No | false | — | — |
Example configuration
Every value below is the contract’s own example or default — nothing invented.
{
"broadcast_id": "42",
"email_ignore_missing": false,
"id_ignore_missing": false
}Output
One shape.
result
| Field | Type | Example |
|---|---|---|
trigger_id The id of this trigger, for polling its status. | number | — |
broadcast_id The broadcast that was triggered. | number | — |
audience Which audience the send used: 'default', or the name of the override that was supplied. | string | — |
status Always 'queued'; the send had not run yet. | string | — |
{
"audience": "",
"broadcast_id": 0,
"status": "",
"trigger_id": 0
}Notes
- Customer.io limits this endpoint to one request every ten seconds, and only one audience override may be sent at a time.
- The trigger id says nothing about delivery. Poll it with customer_io.get_broadcast_trigger_status, and read per-recipient problems from the broadcast's own errors in the dashboard.
See Trigger Broadcast run in a workflow.
In a technical demo we add the Customer.io connection, drop the node on the canvas and let Workflow Health pre-flight it before the first real run.