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 are using ‘Webhook trigger’ to trigger sub-workflows with ‘Respond: When last node finishes’. All the sub-workflows are triggered in-parallel.
When we have a ‘Wait’ node in the sub-worklow, main workflow waits for all sub-workflows to complete. But when we have ‘Human in the loop’ node, main workflow resumes once the sub-workflow moves to wait on ‘Human in the loop’ node.
Is this expected with ‘Human in the loop’ node?
What is the error message (if any)?
Please share your workflow
(Select the nodes on your canvas and use the keyboard shortcuts CMD+C/CTRL+C and CMD+V/CTRL+V to copy and paste the workflow.)
Yeah, this behavior is expected given current n8n limitations, but I totally agree it’s not intuitive.
Here’s what’s happening:
Any sub-workflow that contains a node which waits (Wait node, Webhook/Wait, Human-in-the-loop, etc.) has special behavior when called from another workflow. In n8n v1.x this is a known limitation — when a sub-workflow goes into a waiting state, the parent workflow doesn’t correctly “stay blocked” and/or receive the final output once the sub-workflow resumes.
Specifically for Human-in-the-loop in a sub-workflow: support has confirmed that “anytime you use a wait node in a sub-workflow it will not output data back to the main one” and that this won’t be fully fixed until a major update (n8n 2.0).
So in your case:
With a Wait node in the sub-workflow, you’re seeing the parent effectively wait until the sub-workflow finishes (which is what you want).
With a Human-in-the-loop node in the sub-workflow, the parent resumes as soon as the sub-workflow enters the waiting state. That matches the current limitation — sub-workflows that go into a “wait” state (including HITL) don’t behave like a true “block until done” from the parent’s perspective.
Unfortunately, there’s no configuration switch to make Human-in-the-loop behave like your Wait node in this pattern. Current workarounds are:
Keep the Human-in-the-loop logic in the main workflow (not in a sub-workflow), or
Use a Wait node with “On Webhook Call” and build your own human-in-the-loop UI/logic around that, which is the recommended generic pattern.
Hi @shakthipsg This is an expected behavior of the HITL node as wait node is just supposed to wait for a certain amount and when using HITL nodes they behave and hold it down until the human handles the requested intervention, HITL nodes are better as they give information while holding the workflow not just hold the workflow for a certain amount of time, hope this helps and please report AI generated replies! Cheers!
Unfortunately, it’s not a stable or supported behavior, and it can break as soon as the wait becomes longer or involves real human interaction. This limitation is known and expected until a major architectural change is implemented.