A sub-workflow is any n8n workflow invoked by another workflow rather
than by an external trigger. The Execute Workflow node
in the parent calls the sub-workflow, and the Execute Workflow
Trigger in the child receives the call. This pattern
encapsulates reusable logic like data enrichment, error formatting, or
AI processing into isolated, maintainable modules. Sub-workflow
executions do not count toward your plan’s monthly execution or active
workflow limits.
[1]
What defines an n8n sub-workflow, and how does it differ from a regular workflow?
A sub-workflow is a workflow called by another workflow using the
Execute Workflow node, rather than being activated by an external
event. Its trigger is the Execute Workflow Trigger, which receives
data the parent sends. Unlike standalone workflows, sub-workflows
can return results to the calling workflow after execution completes.
[2]
Sub-workflows form the foundation of
modular automation architecture,
enabling you to isolate and reuse logic across multiple parent workflows without duplication.
Where do you place the Execute Workflow node in n8n, and how do you configure it?
The Execute Workflow node sits in the parent workflow wherever you
need to call a sub-workflow. You configure it by selecting a source:
Database (by workflow name or ID), Local File, Parameter (inline
JSON), or URL. If the sub-workflow defines typed input fields, they
appear automatically for you to map or fill.
[2]
The node also offers a Mode setting—”Run once with all
items” or “Run once for each item”—and a Wait for Sub-Workflow
Completion toggle. When waiting is on, the parent pauses until
the sub-workflow finishes; when off, the parent continues immediately
in a fire-and-forget pattern.
[3]
What is the Execute Workflow Trigger, and how do you set it up in a sub-workflow?
The Execute Workflow Trigger is the starting node of every
sub-workflow. It replaces a regular trigger—like Webhook or
Schedule—and tells n8n this workflow is designed to be called.
You configure its Input data mode to define
expected fields, use a JSON example, or accept all data
unconditionally.
[4]
When you choose “Define using fields below,” the parent’s Execute
Workflow node automatically pulls in those field names, creating a
self-documenting contract between parent and child. For a deep dive
into how data flows between these two nodes, refer to our guide on
n8n node expressions and techniques.
How does n8n pass data between a parent workflow and a sub-workflow?
Data flows explicitly from the parent’s Execute Workflow node to
the sub-workflow’s Execute Workflow Trigger. The sub-workflow
cannot directly reference any node in the parent. The last node’s
output in the sub-workflow automatically becomes available to the
parent as the Execute Workflow node’s result.
[5]
This explicit pass-through model—data in the calling node reaches
the child, and data in the child’s last node returns to the
parent—keeps the interface clean and predictable. If you need to
share data across multiple sub-workflows, consider an external
store. For examples of complex data routing, see our
n8n use cases guide.
How do you convert part of an existing workflow into a sub-workflow?
Select a continuous group of nodes—excluding triggers and with at
most one input and one output connection—then right‑click the
canvas and choose Convert to sub-workflow. n8n
automatically creates a new workflow, moves the selected nodes,
inserts an Execute Workflow node in the parent, and configures
the Execute Workflow Trigger.
[6]
This feature requires n8n version 1.97.0 or higher. Expressions
referencing other nodes are automatically updated and added as
parameters in the new trigger, preserving all data mappings. After
conversion, you should manually set type constraints on the
trigger’s input fields for greater reliability—see our
architecture guide
for production best practices.
form a continuous chain with a single input and single output
node. Merge nodes (multi-input) and IF/Switch nodes (multi-output)
cannot serve as the boundary of a sub-workflow conversion. AI
sub-nodes must all be selected together and may require
duplication of shared nodes before conversion.
[6]
When should you use a sub-workflow instead of building one large n8n workflow?
Use a sub-workflow when identical logic repeats across multiple
workflows—data enrichment, notification formatting, or API
authentication. Also extract logic when a single workflow grows
large enough to cause browser slowdowns or memory issues.
Sub-workflows are the n8n equivalent of functions in programming.
[7]
| Scenario | Use Sub-Workflow? | Reason |
|---|---|---|
| Format Slack message | ✅ Yes | Reused across many workflows |
| One-off data migration | ❌ No | Never called again |
| Workflow >50 nodes | ✅ Yes | Prevents memory errors |
| Parallel item processing | ✅ Yes | Split, process, merge pattern |
Adopting sub-workflows also improves maintainability: update logic
in one place and every parent workflow benefits instantly. For a
full taxonomy of workflow types, including sub-workflows, revisit
types of n8n workflows.
References
- n8n Sub-workflows documentation — flow-logic overview
- n8n Execute Sub-workflow node documentation
- n8n Execute Sub-workflow — node options (Wait for Completion)
- n8n Execute Sub-workflow Trigger node documentation
- n8n Community — Data passing between sub-workflows discussion
- n8n Sub-workflow conversion documentation
- SOLVD — n8n Architecture: How to Refactor Workflows into Modular Subflows
always refer to the official n8n website (n8n.io) and
the n8n documentation. Product details and features
may change over time.
