Skip to Content
BuildAction StepsSubflows

Subflows

Run another automation from inside this one, wait for it to finish, and read its output like any other Step.

At a glanceVerified in app · Oct 29, 2026
Use it to
Reuse a shared automation across multiple workflows without duplicating Steps
Find it
Tools → Subflows
Cost
Free for the Subflow Step itself (the child automation's Steps use their normal rate)
Limits
Same-workspace automations only · Cycle calls are refused
Output
{{ N.result }} (the child automation's final output)
Instead
AI Agent workflow tools (when an AI Agent decides dynamically whether to call the workflow)

Reach for it when the same job appears in several automations. Build “notify the on-call channel” or “create the ticket” once, then call it from everywhere it is needed.

Call an eligible automation in the same workspace. The child does not need to be Live, but you need permission to run it. Empty automations and calls that would create a cycle cannot be selected.

Why split an automation

  • Reuse. One copy of a routine, called from every automation that needs it. Changes to the child’s current configuration affect later calls, so review its callers when changing inputs or outputs.
  • Readability. Give each reusable routine a focused canvas and name.
  • Separate configuration. Manage the routine’s Steps and connections in its own automation. This is not a substitute for workspace permissions.

Setting it up

Add the Subflow step

Open Subflows in the dock. Choose from the automations available to you in the workspace.

Pick the automation to call

Select the child automation and verify its required inputs, account connections, and side effects. Automations without a trigger or calls that would create a cycle or exceed the 3-level depth limit are greyed out with an explanatory tooltip.

Check what it does

The App drawer shows a small map of the automation you picked, so you can see what it does without leaving the canvas.

Pass the data it needs

Enter the payload in Input data, referencing the calling automation’s steps by number:

{{ 1.email }} {{ 3.customer_id }}

Build these from the data picker rather than typing them. Inside the child automation, the payload arrives as the starting Step’s input and can also be read with {{ $input }}.

Under Output data, tick any internal child Steps whose results you want to expose in downstream data pickers.

Use the result

The called automation’s output is available on this step like any other, referenced by this step’s own number.

What it passes on

ReferenceReturns
{{ 5.output }}The child automation’s final result
{{ 5.steps.3 HTTP Request.ret.id }}An exposed step inside the child run

output contains the last completed passing Step’s result. steps contains each exposed child Step’s latest passing result, keyed by its number and name (select it from the data picker or copy it from the Output data list in the Subflow drawer).

Limits

  • Three levels deep. An automation can call an automation that calls an automation. Beyond that the step reports a configuration error rather than running.
  • An automation cannot call itself, and it cannot call anything that would loop back to it. Glow checks the whole chain before running and refuses a cycle, so a run cannot recurse forever.
  • Each embedded child Step result in steps is capped at 64 KB. Oversized child Step results are marked truncated in steps; return only the fields the parent automation needs.
  • Same workspace only. The list offers automations on your own team.

A run’s subflow steps appear in the parent’s Execution log, indented under the step that called them. One log tells the whole story, so you do not have to open the called automation separately to see what it did.

Calling over a webhook instead

A Subflow step suspends the calling run until the child automation finishes and returns its output. Sending an HTTP Request to another automation’s Webhook trigger only waits for the HTTP acknowledgement, so the child runs independently in the background:

Subflow stepHTTP Request to a webhook
Does the caller wait for the child run?YesNo; only for the HTTP response
Does the caller get the result?YesNo
Where does it show in the log?In the caller’s logIn its own run

If a later step needs the answer, use Subflow.

Examples to copy

A parent automation receives incoming leads from multiple webhooks and needs consistent CRM verification before assigning ownership:

Webhook TriggerSubflow: Enrich LeadAssign CRM Owner
  1. Build a standalone Enrich & Verify Lead automation that accepts email and company and finishes with a Step returning enrichment_score.
  2. In the parent automation, add a Subflow step (Step 4) passing email = {{ 1.email }} and company = {{ 1.company }}.
  3. Read the returned score downstream as {{ 4.output.enrichment_score }} (or select an exposed internal step via {{ 4.steps }}).
Verify it works
Run
Select a target automation, pass a sample JSON payload, and click Run
You should see
The parent Step records Completed, links to the child run's executionId, and exposes the child output under {{ N.result }}.

What’s Next?

Last updated on

Search documentation

Start with a guide, or search by Step, task or error.