Split Node
Takes one payload and sends a different piece of it down each branch. You name the outputs and say which field feeds each one; every named output gets its own connection on the canvas and its own payload. Use it when a single event carries several things that need different handling — orders here, customers there.
What you configure
One section, Outputs, holding a list you grow with + Add output. Each row is two fields:
- Output name —
Orders,Customers. This is the label of the port on the canvas, so it is what you will look at when wiring the flow. Name it after the content, not the position. - Field path — where the value comes from:
orders, a dotted path likedata.customer, or a full template such as{{payload.items}}. The field accepts the same autocompletion as every other template box, so it can also reach another node's output.
There is nothing else — no operation, no credential. The node is pure routing of data you already have.
Output payload
Each branch receives its own payload, and the shape depends on what the field held.
When the field is an array
{
"_meta": { "iterable": true, "iterateField": "items", "count": 3 },
"items": [ … ]
}Marked iterable, so a Loop, Aggregator, or Limit node downstream fans out over it with no glue in between.
When the field is an object
{
"_meta": { "iterable": false, "count": 1 },
"id": "cus_123",
"email": "[email protected]"
}The object is spread at the top level. A scalar (a string, a number) arrives as { "value": … } instead, so downstream templates always have a name to reference.
{{Node name.field}} instead of expecting it to ride along.Split, Router, or Loop?
| Node | Question it answers | Branches taken |
|---|---|---|
| Split | “This event holds three different things — send each one somewhere else.” | All of them, always |
| Router | “Which branch does this event belong to?” | The ones whose rules match |
| Loop | “Do the same thing once per item.” | One branch, N times |
Testing it
The detail page carries a Test Split runner: paste a payload and every configured output extracts its field against it, so you can see which branch gets what before wiring anything downstream. A field path that resolves to nothing produces an empty branch payload rather than an error — check the runner if a branch looks silent.