Split
Expands array fields into multiple individual items.
Overview
The Split node takes items containing arrays and produces multiple items—one for each array element. Use it to:
- Process array elements individually
- Flatten nested data structures
- Expand multi-value fields
Parameters
| Parameter | Description | Required |
|---|---|---|
| Field Mode | Whether to keep other fields (Keep All Fields / Keep No Fields) | Yes |
| Field to Expand | Path to the array field or expression that evaluates to an array | Yes |
| New Field Name | Name for the expanded values | No |
Field Mode
Controls whether other fields from the original item are preserved in the output:
| Mode | Description |
|---|---|
| Keep All Fields | Output items include all original fields plus the expanded value (default) |
| Keep No Fields | Output items contain only the expanded value in the specified field |
Field to Expand
The path to the field containing the array, or an expression that evaluates to an array. Supports dot notation for nested fields:
items— Top-level arraydata.results— Nested arrayorder.lineItems— Deeply nested array
New Field Name
Optional new name for the expanded field. Required when using an expression for Field to Expand. If not specified, defaults to the original field name (last segment of the path).
Output
Creates one output item per array element. Each output contains:
- The array element value in the specified field
- All original item fields (when Field Mode is
Keep All Fields) - Only the expanded field (when Field Mode is
Keep No Fields)
Input:
{
"orderId": "123",
"items": ["Widget", "Gadget", "Gizmo"]
}
Field to Expand: items
Output:
[
{ "orderId": "123", "items": "Widget" },
{ "orderId": "123", "items": "Gadget" },
{ "orderId": "123", "items": "Gizmo" }
]
Examples
Expand Line Items
Process each order line separately:
Input:
{
"orderId": "ORD-001",
"customer": "Acme Corp",
"lineItems": [
{ "product": "Widget", "qty": 5 },
{ "product": "Gadget", "qty": 3 }
]
}
Field to Expand: lineItems
Output:
[
{
"orderId": "ORD-001",
"customer": "Acme Corp",
"lineItems": { "product": "Widget", "qty": 5 }
},
{
"orderId": "ORD-001",
"customer": "Acme Corp",
"lineItems": { "product": "Gadget", "qty": 3 }
}
]
Split with Rename
Expand and rename the field:
Input:
{
"email": "user@example.com",
"roles": ["admin", "editor"]
}
Field to Expand: roles
New Field Name: role
Output:
[
{ "email": "user@example.com", "role": "admin" },
{ "email": "user@example.com", "role": "editor" }
]
Split Nested Array
Expand from nested path:
Input:
{
"id": "1",
"data": {
"tags": ["urgent", "review"]
}
}
Field to Expand: data.tags
New Field Name: tag
Output:
[
{ "id": "1", "data": {}, "tag": "urgent" },
{ "id": "1", "data": {}, "tag": "review" }
]
Process Tags Individually
Send notifications for each recipient:
Input:
{
"subject": "Update",
"recipients": ["alice@example.com", "bob@example.com"]
}
Field to Expand: recipients
New Field Name: recipient
Then connect to Send Gmail with {{\$item.data.recipient}} as the recipient.
Tips
- The specified field must contain an array
- Items without a non-empty array at the specified path are filtered out
- All other fields are preserved in each output
- Use New Field Name for clearer downstream references
- Combine with Aggregate to group split items back together
- Works well before nodes that process items individually