Run SubFlow
The Run SubFlow step calls another flow (a SubFlow) inline. Use it to compose flows out of reusable building blocks — write the logic once, call it from anywhere.
What happens when the step runs
- Run-SubFlow evaluates each input binding in your calling flow's context (variables, SmartFields, constants).
- The engine starts the SubFlow's pinned published version inside the same transaction as the calling flow. No commit boundary in between.
- Steps inside the SubFlow run synchronously. The calling flow waits.
- When the SubFlow's Return SubFlow Output step fires, its declared outputs become available as variables on this Run-SubFlow step. Outputs declared as
Reference(with a Table No.) surface as record references the calling flow can bind into record-scoped SmartFields; outputs declared asValuesurface as text-on-the-wire variables. - The calling flow continues.
If anything fails inside the SubFlow — a step errors, an Error step fires, the depth limit trips — the whole transaction rolls back and the parent flow sees a single error message prefixed with the SubFlow's name.
Configuration
| Field | What it does |
|---|---|
| Description | Shown on the block in the editor. |
| SubFlow | Pick which SubFlow to call. Lookup is filtered to flows whose trigger is a SubFlow trigger; non-SubFlow flows aren't selectable. |
| Pinned Version | Read-only. Set to the SubFlow's published version when you pick it. The calling flow stays pinned to that version even when the SubFlow is later re-published — re-pick to update. |
| Update available | Shown only when the picked SubFlow has a newer published version than what's pinned. Re-pick the SubFlow to take it. Publishing isn't blocked. |
| Input Bindings | One row per input parameter the SubFlow declares. Bind each to a value, variable, or SmartField expression. The grid is auto-populated when you pick the SubFlow. |
Custom icons
Each SubFlow can be configured with a custom icon URL on the SubFlow Card. When set, that icon appears on every Run-SubFlow step that calls it — so a flow editor can recognise "this is the validation SubFlow", "this is the address-cleanup SubFlow" at a glance.
The block's green colour stays the same — the icon override only changes the picture inside the block.
What you can't do inside a SubFlow
- Sleep / time-based deferral. The calling flow is waiting synchronously — pausing would stall it. Use Sleep only in the calling flow, before or after the Run-SubFlow step.
- Add a step after the SubFlow Output. It's a terminating step; the publisher rejects the flow if anything follows.
Errors
If the SubFlow throws (Error step or any other failure), the calling Run-SubFlow step fails with an error of the form:
Error in SubFlow "<name>": <original message>
The transaction rolls back, including any DB writes the SubFlow performed. There's no half-applied state to clean up.