Send Batch

customer_io.send_batch
ActionCRM & salesconnection required

Calls the Customer.io API with the connection's credentials.

Send many Track v2 entity operations in one request. Customer.io accepts the valid entries and reports the rest, so a partial failure is a normal outcome here rather than an error.

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

1 field, 1 required. A dotted path is a nested object and name[] an array of objects — the editor renders the same tree.

FieldTypeRequiredDefaultConstraintsExample
batch
The operations to send, as a JSON array. Each entry is one Track v2 entity payload, carrying its own 'type', 'action' and 'identifiers'. At least one operation is required.
arrayYes—≥ 1 characters; array of object[{"action":"identify","attributes":{"plan":"pro"},"identifiers":{"id":"42"},"type":"person"}]

Example configuration

Every value below is the contract’s own example or default — nothing invented.

{
  "batch": [
    {
      "action": "identify",
      "attributes": {
        "plan": "pro"
      },
      "identifiers": {
        "id": "42"
      },
      "type": "person"
    }
  ]
}

Output

One shape.

result

FieldTypeExample
submitted
How many operations the request carried.
number—
accepted
How many Customer.io accepted.
number—
failed
How many Customer.io rejected.
number—
partial
True when some entries were rejected and the rest went through, which Customer.io answers as a 207.
boolean—
errors
One object per rejected entry.
array—
errors[].batch_index
The zero-based position of the rejected entry in the batch.
number—
errors[].reason
Why the entry was rejected.
string—
errors[].field
The field that carried the problem.
string—
errors[].message
The detailed message for that field.
string—
{
  "accepted": 0,
  "errors": [
    {
      "batch_index": 0,
      "field": "",
      "message": "",
      "reason": ""
    }
  ],
  "failed": 0,
  "partial": false,
  "submitted": 0
}

Notes

  • A 207 is a partial success, not a failure: the accepted entries are already queued. Retry only the indexes named in 'errors'.

See Send Batch 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.