Flow control actions
Branch a conversation down different paths, and jump between flows — the actions that give a flow its judgment.
Flow control actions are where a flow stops being a straight line and starts making decisions. Conditional sends different customers down different paths, and Redirect to Flow jumps from one flow to another. Together they let you compose sophisticated behavior from simple, reusable pieces.
Conditional
Conditional looks at what you know and routes the conversation accordingly. It holds one or more condition groups, checked top to bottom; the first one that matches decides the path, and if none match, a default path is taken.
Reach for it when you want to branch on facts you already have — a customer tag, a captured field, a detected intent, a number.
How a condition is built
Each condition compares a variable (something you know) against a value, using an operator (the kind of comparison). Within a group you can combine several criteria:
- Match all — every criterion must be true (AND).
- Match any — any one is enough (OR), great for catching several phrasings of the same thing.
For the everyday guide to designing branches, see Conditions & branching.
The operators
Conditional supports sixteen operators, covering text, numbers, dates, and presence:
| Operator | Checks whether the value… | Best for |
|---|---|---|
| Equals / Does not equal | matches exactly (or doesn't) | any type |
| Contains / Does not contain | appears anywhere inside | text, lists |
| Starts with / Ends with | begins or ends with text | text |
| Is empty / Is not empty | has no value (or has one) | text, lists |
| Is present / Is not present | exists at all | selections, users |
| More than / Less than | is greater or smaller | numbers, list length |
| Between | falls within a range | dates, times |
| After / Before | comes after or before | dates, times |
| Regex | matches a pattern | advanced text matching |
A few notes that save confusion:
- The "presence" operators (Is empty, Is not empty, Is present, Is not present) don't need a value — they just ask whether something exists.
- More than / Less than compare a number for numeric values, but a count for lists — so you can ask "more than 3 items in the cart."
- Regex matches a text pattern, for the advanced cases a simple operator can't express.
When you want to branch on what the customer means rather than a fact you already hold, use User Intent (in AI & data actions) instead. Conditional is for known facts; User Intent is for interpreting messy human phrasing.
Redirect to Flow
Redirect to Flow hands the conversation off to a different flow. It's how you break big flows into smaller, reusable ones and compose them together.
Reach for it when you have a routine — order lookup, returns, lead capture — that you want to build once and reuse from many places.
How it works
You point it at the target flow, and the conversation continues there. The key thing to understand: this is a handoff between flows, not a detour. Once you redirect, the new flow takes over — control doesn't automatically come back to where you left. If you need to return, redirect again explicitly.
That makes Redirect to Flow perfect for "continue the conversation over there" patterns: a main flow that interprets intent and redirects to the right specialized flow for each case.
There's a fuller treatment, with patterns for keeping reusable flows tidy, in Reusable flows & timing.
Composing with flow control
These two actions are what let a handful of small flows behave like one sophisticated agent. A common shape:
Main flow
→ User Intent
"track order" → Redirect to Flow → [Order Lookup]
"returns" → Redirect to Flow → [Returns]
otherwise → Conditional → (VIP? → human : → Agentic AI)Each piece stays small and focused; the flow control actions stitch them into something that feels genuinely smart.