Skip to main content

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

ParameterDescriptionRequired
Field ModeWhether to keep other fields (Keep All Fields / Keep No Fields)Yes
Field to ExpandPath to the array field or expression that evaluates to an arrayYes
New Field NameName for the expanded valuesNo

Field Mode

Controls whether other fields from the original item are preserved in the output:

ModeDescription
Keep All FieldsOutput items include all original fields plus the expanded value (default)
Keep No FieldsOutput 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 array
  • data.results — Nested array
  • order.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