Skip to Content
CraftBot Docs v1 — internal preview

Sub-flow Call

The Sub-flow Call node invokes another published recipe as a sub-flow. The current conversation pauses on the call node, the child recipe runs from its Sub-flow Entry to a Sub-flow Exit, then control returns to the parent and the flow continues from the call node’s on_return port.

Use Sub-flow Call to share common building blocks across recipes — identity verification, eligibility checks, payment captures, repeated menus.

Configuring the node

  1. Drop the Sub-flow Call node from the Integration category onto the canvas.
  2. Open the configuration drawer.
  3. Set Target recipe ID — the UUID of the published recipe to invoke. The target must be a published recipe in the same tenant.

Input and output variable mappings — which parent variables are copied into the child’s scope on entry, and which child variables are flushed back to the parent on exit — are part of the node configuration but the canvas UI does not yet expose a mappings editor. For now they must be authored via the raw JSON tab of the configuration drawer.

Output ports

  • on_return — fires when the child sub-flow completes through its Sub-flow Exit and control returns to the parent.
  • fallback — fires when the sub-flow fails to start (target recipe unpublished, missing Sub-flow Entry, or the recursion-depth cap is reached).

Where it’s used

  • Reuse identity-verification logic across multiple recipes.
  • Encapsulate a complex sub-process so the parent flow stays readable.
  • Compose recipes from team-owned building blocks.

Best practices

  • Always wire the fallback port to a graceful path (a Message + Close, or a Transfer to agent). A sub-flow that fails to start is easy to miss otherwise.
  • Keep target recipes truly reusable — design sub-flows for a single, well-named purpose, not as catch-all junk drawers.
  • Avoid deep recursion. The runtime caps sub-flow depth to prevent infinite loops; deep call chains also become hard to debug.

See also

  • Sub-flow Entry — the entry boundary of the recipe being called.
  • Sub-flow Exit — the exit boundary of the recipe being called.
  • Return — early-return inside a sub-flow without going through Sub-flow Exit.
Last updated on