Skip to main content
The Iteration node loops over a list. Everything connected to its Loop Body handle runs once per item, including nodes further down the chain, so you only connect the first node of the loop.

Add a loop in one click

When a config field holds a reference to a list, like {{sheets-1.values}} or an indexed reference, a Loop over each item button appears under the field. Click it to drop an Iteration node already set to loop over that list and wired as the loop body, so you skip the manual setup. The Split Out node comes ready to loop too: dropping it onto the canvas also adds a paired Iteration node wired to its output, so the list it produces fans out into per-item steps automatically.

Configuration

FieldWhat it does
ItemsReference to the list to loop over, e.g. {{sheets-1.values}}
First Row is HeaderTurns a 2D array (like spreadsheet rows) into objects keyed by the first row’s column names
Field NamesComma-separated names to map plain arrays to objects when there is no header row
ConcurrencyHow many items to process in parallel, 1 (sequential) to 10

Output handles

HandleWhen it runs
Loop BodyOnce per item
After LoopOnce, after every iteration finishes

Referencing the current item

Inside the loop body, these variables resolve per iteration without any node ID prefix:
  • {{item}}: the current item (or {{item.name}} for a field)
  • {{index}}: 0-based position
  • {{row_number}}: 1-based row number, adjusted when a header row is used
  • {{items}} and {{total}}: the full list and its length
Example: Google Sheets read, then Iteration with First Row is Header on, then an email node in the loop body using {{item.email}} and {{item.name}}.

Collected results

After the loop, the iteration node’s output includes collected_results, a flat list with one entry per iteration. Nodes on After Loop reference it as {{iteration-id.collected_results}}. By default the results come from the last node in the loop body. To pick a different node, connect that node’s output back into the iteration node’s input.
A failed iteration doesn’t stop the loop. Its slot in collected_results carries an _iteration_error entry instead.

Next steps