Skip to content
For LLMsView as Markdown·

Return Value

In a workflow that's run by an Execute Workflow node in another workflow, this node designates the value handed back to the parent. It's the sub-workflow equivalent of a return statement — the parent's Execute Workflow node receives exactly what you put here.

When to use

  • You've factored logic into a sub-workflow and the parent needs its result — a computed score, an enriched object, a yes/no decision.
  • Any "call this sub-workflow and use what it gives back" pattern.

Configuration

FieldRequiredWhat it does
valueNoThe value returned to the parent. JSON or text; supports {{...}} refs, so you can return data computed earlier in the sub-workflow. Blank = the upstream node's output.

If value is a JSON string it's returned as a parsed object; otherwise it's returned as-is.

How the parent reads it

The parent's Execute Workflow node exposes it as output:

Parent workflow:
[Trigger] → [Execute Workflow → "score player"] → [If: {{execute_workflow.output.risk}} == "high"]

"score player" sub-workflow:
[Trigger] → [API calls…] → [Return Value]
                             value: { "risk": "high", "score": 82 }

The parent reads {{execute_workflow.output.risk}} — a clean, documented value.

What it outputs

{ returnValue: <the value you set> }

Return is terminal — it has no outgoing connection; the branch ends there.

Gotchas

  • Without a Return node, the parent's Execute Workflow still gets something — the sub-run's raw execution record — but not a clean designated value. Add a Return node whenever the parent needs a specific result.
  • Last one wins. If more than one Return node runs (e.g. across branches), the last to execute sets the value.
  • Only meaningful when called as a sub-workflow. In a normally-triggered run there's no parent to receive the value — it's simply recorded and ignored.