n8n Workflow Pattern: Parallel Sub-Workflows + Wait-All Loop
n8n Workflow Pattern: Parallel Sub-Workflows + Wait-All Loop
Couldn't load pickup availability
n8n Workflow Pattern: Parallel Sub-Workflows + Wait-All Loop
Run multiple sub-workflows in parallel—then wait for all of them to finish
This n8n workflow pattern template lets you kick off many sub-workflow executions asynchronously (in parallel) and still prevent your main workflow from moving on until every sub-workflow has reported back as complete—using an internal callback URL approach.
What this workflow does
In n8n, sub-workflows are often run synchronously in series, or—if executed asynchronously—there’s no straightforward built-in way to “merge” results or reliably wait for an arbitrary number of parallel runs. This template demonstrates a practical design pattern to solve that gap entirely within n8n.
- Parallel sub-workflow launching (asynchronous split loop): The workflow shows how to split incoming data into multiple instances and start each sub-workflow concurrently.
- Callback coordination (resumeUrl + unique identifier): Every sub-workflow execution receives a resumeUrl for the parent workflow and a unique identifier (e.g., a document filename) that can be counted later.
- Wait-for-all loop: The workflow includes a “wait-for-all” mechanism that repeatedly checks—via an if node—whether all sub-workflows have reported back finished.
- Hold later steps until complete: Only after the last callback is accounted for does the parent workflow continue.
Use cases
- Processing a list of documents where each item triggers the same sub-workflow, but you want true parallel execution.
- Running data-driven enrichment tasks concurrently, while ensuring downstream steps only run once every item is done.
- SaaS operations workflows that need concurrent processing with a reliable “all tasks completed” gate—without external message queues or external flow managers.
Technical details
This template is built using n8n automation workflow nodes including: webhook (callback endpoint), set and code (preparing identifiers and loop logic), no op (control flow placeholder where needed), wait (polling delay), and if (the “wait-for-all” completion check).
