Execute Workflow vs Webhook Trigger

Describe the problem/error/question

We have a use-case where we trigger sub-workflow with Split-out. We want ‘N’ sub-workflows to be triggered in-parallel where ‘N’ is the number or items that we split-out.
We tried executing the sub-worklow with ‘Execute workflow’, but the sub-workflows are getting executed in sequntial. Same with ‘Webhook trigger’, sub-workflows are getting executed in-parallel.

Want to understand more on the difference and use-case for ‘Execute workflow’ vs ‘Webhook trigger’

What is the error message (if any)?

Please share your workflow

Share the output returned by the last node

Information on your n8n setup

  • n8n version:
  • Database (default: SQLite):
  • n8n EXECUTIONS_PROCESS setting (default: own, main):
  • Running n8n via (Docker, npm, n8n cloud, desktop app):
  • Operating system:

This is expected behavior in n8n.

The Execute Workflow node runs the called workflow synchronously within the same execution context, so even when using Split Out, items are processed sequentially. The parent workflow waits for each sub-workflow to finish before continuing.

A Webhook Trigger starts a new, independent execution for every request, which is why triggering it via HTTP results in parallel executions.

In short:

  • Use Execute Workflow when you need reusable logic and a response back (function-like behavior).

  • Use Webhook Trigger when you need fan-out or parallel processing and don’t need to wait for results.

Hi @shakthipsg

Basically: Execute Workflow gives you sequential behavior (single execution chain), while Webhook Trigger gives you multiple independent executions that can run in parallel.

Add a Webhook Trigger to your sub-workflow. Then in your parent workflow, right after the Split Out node, use an HTTP Request node to call the sub-workflow’s webhook, once per item. If you need to collect all the results before moving forward, you can use a Wait node with a callback to gather everything back together.

That should do it!

Reference:

@tamy.santos
With the shared sub-workflow, we are able to make main workflow wait until all the sub-workflows completes without any Respond Webhook. Is this expected behavior?

@shakthipsg

Yes, that’s expected for the Execute Sub-workflow node when Wait for Sub-Workflow Completion is enabled.

Per the docs, this option explicitly controls whether the main workflow waits for the sub-workflow to finish before moving on. When it’s turned on, the parent execution blocks until the child workflow completes, and then continues. Execute Sub-workflow

You only need Respond to Webhook when you’re dealing with webhook-triggered workflows and want to control how and when the HTTP response is sent back to the caller; it isn’t required for sub-workflows called via Execute Sub-workflow.

@tamy.santos
Here we are using Webhook trigger only with ‘Respond: When Last Node Finishes’

@shakthipsg

Using the Webhook Trigger with “Respond: When Last Node Finishes” is totally fine and doesn’t change the execution model.

Each webhook call still creates an independent execution, so your sub-workflows are already running in parallel. This setting only delays the HTTP response until the workflow finishes — it doesn’t make the execution synchronous or force them to run one by one.

If your parent workflow appears to “wait,” that’s simply because it’s waiting for the HTTP responses to come back, not because the sub-workflows are actually running sequentially. They’re still executing in parallel on the backend.

Does that clear things up? Let me know if you have any other questions! :blush:

1 Like