Skip to content
For LLMsView as Markdown·

Execute Workflow

Runs another of your workflows as a step inside this one and hands its result back to the parent. Use it to factor shared logic into a reusable sub-workflow and call it from several places — the workflow equivalent of a function call.

When to use

  • You have a sequence of steps you repeat across several workflows (e.g. "enrich a player profile", "post a formatted alert") — build it once and call it everywhere.
  • You want to keep a large workflow readable by extracting a chunk into a named sub-workflow.

Configuration

FieldRequiredWhat it does
workflowIdYesThe workflow to run, chosen from a picker of your own workflows.
inputFieldNoThe data passed to the sub-workflow. Blank = the upstream node's output.

The sub-workflow runs as you — same account, same connections. Its trigger's event data is the input you pass here.

Getting a clean result back

Add a Return Value node inside the sub-workflow to designate exactly what it hands back. Whatever you set there becomes this node's output:

Sub-workflow:  [Trigger] → [work…] → [Return Value: { "risk": "high", "score": 82 }]
Parent:        … [Execute Workflow] → [If {{execute_workflow.output.risk}} == "high"]

Without a Return node, output falls back to the sub-run's raw execution record — usable, but not a clean designated value. Use Return whenever the parent needs a specific result.

What it outputs

{
  workflowId: "wf_…",
  output: <the sub-workflow's Return value, or its raw execution result if none>,
  success: true
}

Downstream nodes reference {{execute_workflow.output.<field>}}.

Safety limits

These are enforced automatically — you don't configure them:

  • Same tenant only. You can only call your own workflows.
  • Bounded depth. A chain of sub-workflows can nest a few levels deep, then further calls are refused — so a runaway chain can't spiral.
  • No cycles. A workflow can't call itself, directly or through a chain that loops back to it. The attempt is rejected rather than looping forever.

Gotchas

  • Billing. The sub-workflow's own nodes are metered as they run — the Execute Workflow node itself adds no separate charge, so you're billed once, not twice.
  • It runs synchronously. The parent waits for the sub-workflow to finish before continuing. A slow sub-workflow slows the parent.
  • Pick the input deliberately. The sub-workflow only sees what you pass in inputField (or the upstream output) — it does not inherit the parent's full context.