trigger.subworkflow

Sub-workflow Trigger (trigger.subworkflow)

The entry node for a workflow that other workflows call via Execute Workflow. The caller's items arrive here verbatim — this is how you factor shared logic (dedupe, enrichment, notify) into one reusable workflow.

Parameters

None.

Behavior

caller:  … → execute_workflow (mode: wait) → …
child:   subworkflow_trigger → …shared logic… → (leaf output returns to caller)

Items pass through exactly as the caller sent them — json and binary refs included (the child can read the parent's binaries, and files the child creates are readable by the parent's downstream nodes after it returns).

When a workflow has several triggers, Execute Workflow prefers this one as the entry; without it, the first trigger is used.

Quirks & tips

  • Manual ▶ runs still work — items are injected the same way, so you can build and test the child standalone. The explicit trigger type also keeps "this workflow is meant to be called" visible on the canvas.
  • The child needs no activation to be callable — Execute Workflow runs it directly. Activation only matters for public triggers.
  • Callers must live in the same environment; cross-environment calls don't resolve.
  • Recursion guards live on the caller side: cycles are refused and call depth is capped at 3.
  • n8n imports: executeWorkflowTrigger maps here (declared workflow inputs are warned about, not imported).

Related

  • Execute Workflow — the calling side, wait or fire-and-forget.
  • Error Trigger — the other "called by the system" entry node.
  • Manual Trigger — for workflows only ever run by hand.