n8n execute sub-workflow trigger node
The Execute Sub-workflow Trigger node is a special node in n8n that allows one workflow to be executed by another. Think of it like a “gateway” , when Workflow A calls Workflow B, Workflow B will start from this node.
This is different from normal triggers like Cron or Webhook because this trigger only responds when explicitly called by another workflow.
Before we start, if you are looking for help with a n8n project, we are taking on customers. Head over to our n8n Automation Engineer page.
Why Use Sub-workflows?
Sub-workflows make complex automation easier to manage. Some benefits:
Reuse workflows: Instead of duplicating logic across multiple workflows, you can centralize it into one sub-workflow and call it wherever needed.
Break down large workflows: Helps keep parent workflows clean and modular.
Maintainability: If something changes (e.g., logic to process data), you only update the sub-workflow, and every parent workflow benefits.
How It Works
Parent workflow contains an Execute Sub-workflow node.
That node calls a Sub-workflow which must start with an Execute Sub-workflow Trigger node.
Data is passed from the parent → sub-workflow.
The last node in the sub-workflow sends data back to the parent.
Input Data Modes
To start we’re going to create a simple dataframe in python:
When creating a sub-workflow, the Execute Sub-workflow Trigger lets you define how input data should look:
Define using fields below – specify input fields (like
name
,email
,amount
) with their data types.Define using JSON example – paste a JSON sample so the sub-workflow knows what kind of data to expect.
Accept all data – no restrictions, all incoming data is accepted (the sub-workflow itself must handle inconsistencies).
Basic Example
Let’s say ypu want to process customer orders.
Sub-workflow: Process Order
- Create a new workflow(name it Process Order or any name of ypur choice)
- Add Execute Sub-workflow Trigger node.
- Set Input data mode = Define using fields
- Add fields: customerName (string), orderAmount(number)
- Add a processing logic. Use a Edit fields (Set node) For example:
{{
`{
"customerName": ${$json.customerName},
"orderAmount": ${$json.orderAmount},
"total": ${$json.orderAmount * 5}
}`
}}
- Save workflow as Process Order.

When Executed by Another Workflow configuration

Edit fields(Set node)

Edit fields configuration

Parent workflow: Handle Orders
Create a new workflow.
Add a Webhook Trigger node that receives customer order data:
Example request body:I used postman to send this request.
{
"customerName": "Alice",
"orderAmount": 200
}
Add an Execute Sub-workflow node.
Select sub-workflow:
Process Order
.Map inputs:
customerName
→{{$json.customerName}}
,orderAmount
→{{$json.orderAmount}}
.
Add any follow-up actions:
For example, send an email or insert order data into a database.

Web hook configuration

Next we add the call process order node

Call process Order configuration.
Note the quotes i added around the customerName.


Next, you make a post request via postman.
Ensure you have executed the webhookk and it is running, otherwise, it won’t work.

Execution Flow
An order is received by Webhook Trigger in
Handle Orders
.Data is passed to the Process Order sub-workflow.
Process Order
calculates tax and total, then returns the result.Handle Orders
receives the processed data and continues execution
Key Notes
If your sub-workflow has errors, the parent workflow cannot execute it.
You can track execution links between parent and sub-workflow in the execution logs.
Sub-workflows must always start with an Execute Sub-workflow Trigger node.
Final thought
The Execute Sub-workflow Trigger node is used to start a workflow when it’s called by another workflow. It must be the first node in the sub-workflow. This feature allows you to reuse workflows, break down complex automations, and maintain cleaner logic.
Thank you for reading this article. Make sure to check out our other n8n content on the website. If you need any help with n8n workflows we are taking on customers so reach out