Replies to buttons
On a Send buttons step and on a Send template step, the user’s reply is checked in this order — the first match wins:1
Buttons
A tap on a button takes that button’s branch. A typed reply with the same words does too.Give a button an Also when and a typed reply that matches it goes the same way as a tap:
Yes — Also when: The user types anything positive: yes, ok, haan, sure, 👍
2
Branches the AI decides
For replies that are not a tap. Each has a name (shown on the canvas with an AI tag) and a When in words:
Not interested — When: The user says no, or that they are not interested
Asks the price — When: The user asks about prices, fees or packagesThese are never sent as buttons; the AI uses them to sort what the user typed.
3
Anything else
Everything that matched nothing. Connect it to a step, or leave it empty: the AI then answers the message briefly and sends the same step again.
Condition steps
A Condition has one or more branches, then Otherwise. Branches are checked top to bottom and the first true one wins.Rule (checked by code)
Compares a value with a fixed one:
Code checks a rule and tells the AI the result, so a rule is never guessed:
- Contact rules are checked at the start of every turn.
- Function-result rules are checked the moment the function returns, and the result is attached to what the AI reads from it.
AI judges (prompt)
A condition in words, for anything code cannot check: “The user sounds ready to buy”, “The lead’s latest message is in Hindi”. The AI decides it from the conversation.A language router
A common pattern: three branches that pick a language-specific step.
Put one before every step that has per-language variants (a template in three languages, for example).
A function’s success and failure
A Custom function step has two exits. Failure is taken when the function raised an error, timed out, or returned an error result ({"status": "error", ...}). Connect it — to a retry, an apology, or a call offer — rather than leaving the conversation stuck.
Global intents
A Global intent applies at any point: when its trigger matches, the conversation detours to its branch.
When the branch’s last exit is unconnected, the AI goes back to the step the conversation was on. End the branch with an End step when the detour should close the conversation.
What the AI weighs in a turn
The AI judges these together; written down, the plan reads:- Does a global intent apply to this message? Then take its detour.
- Otherwise, the step the conversation is on: its buttons, then its AI branches, then anything else.
- For a step that does not wait, carry on to the next step — conditions are evaluated on the way through.