Gather node

I was wondering, why there is no “gather” node yet in the core.
There is Aggregate node, which can “gather” multiple items into a single list. But there is no such node that gathers all runs of previous node, and only if it’s done, it continues in the

My use case:

I have a workflow, where I fetch data from multiple google sheets. Then this data, since it is same structure, is connected to code node which does some heavy data transformation in python+pandas. I cannot merge those datasets first (resources reasons) and then chunk it (have to process them file by file). That leaves me with multiple executions of the code node. There is no way right now natively to “gather” all runs of that code node, and put it into a single list.

I know might’ve used:

  • duplicate the code node for each of the sheets, and then merge it using merge node - this is not scalable.
  • loop with sheet URLs and process in loop - but having multiple nodes is better for a no-coder colleague to view the workflow.

Any resources to support this?

This was already mentioned few times:

Aggregate works per execution, not across multiple executions/runs. n8n currently has no native “gather/join-all-runs-then-continue” node, which is exactly what your use case needs.

What actually works in practice (not pretty, but reliable):
• Use Loop Over Items → Execute Workflow pattern and return results
• Or Write each run output to external state (Data Store / DB / file) and have a final “collector” step
• For Python-heavy transforms, many teams offload aggregation to the Python layer itself (append results inside pandas, then emit once)

You’re also right that duplicating nodes or giant loops hurts maintainability for non-coders — that’s the tradeoff today.

This has come up a lot internally and in the forum; a true “Barrier / Gather / Wait-for-all” node would unlock much cleaner data-engineering workflows in n8n.

If you want, I can sketch a clean pattern that keeps the workflow readable for no-coders and still gathers everything safely:

Maybe there was a misunderstanding, I’m not talking about the multiple execution of whole workflow, yes, in that case, I would need to persist the data somewhere else.

The workflows, in my opinion, should be state-less in the first place.
What I mean is multiple executions (runs) of a node in a single workflow execution.

In example below, the the “Code node” will be run twice. Which is correct, imagine you need to process the two dataset. Imagine this is constraint (cannot merge the data before - due to memory reasons), and cannot process it in batches (due to data continuation).

From the same reason, you cannot “append” inside python/pandas - the dataset needs to be processed sequentially, cannot be processed at once.

But, the problem is, that you need to somehow gather the result data after, the code node is executed twice, before continuing in the workflow (e.g. writing out to database to save time / optimize HTTP calls).

The only current workaround I found is doing it in the loop (which does it internally), Which brings unnecessary overhead, complication and the need to define the data programatically (not UX friendly to non-tech colleagues)

The n8n already does it, internally. The loop node does it. Also, each of the nodes has runIndex parameter in all method, which can basically gather the data from other runs, but still does not prevent from running that code node multiple times. There’s no true way to “wait” until last execution, then continue in following nodes.