AI Routings — Deep Dive
• AI Routings is the most misunderstood layer of AI in Chatterfy. It seems similar to a regular , но устроен иначе и решает другую задачу. Reference на сами Routings — , but it is built differently an
•
AI Routings is the most misunderstood layer of AI in Chatterfy. It seems similar to a regular Condition — conditional branching, но устроен иначе и решает другую задачу. Reference на сами Routings — AI Routings — semantic routing, but it is built differently and solves a different problem. Reference for Routings themselves — .This article is about when to choose what, how to phrase conditions , and which anti-patterns break the funnel.
Do not mix tasks in one step
If
CRM does not yet have a field for the branch (tag, amount, status), Condition will not help: you need Routings, or you need to enrich the lead data first. Conversely, if the value already exists and is unambiguous, Routings is extra noise and the extra cost of a model call.The main point in one sentence
Condition branches by the exact value of a tag / field / amount. Routings branches by the meaning of the lead’s reply. In a real funnel, both are often used, at different steps.Routings vs Condition
It is easy to confuse them, but they solve different tasks. Comparison:
Parameter | Condition | AI Routings |
|---|---|---|
What it checks | Exact value of a field / tag / Sale Status | Meaning of the lead’s reply (via AI) |
When it triggers | When entering the step | After the lead’s message at the AI Reply step |
What must be in the data | Filled-in Custom Fields / tags / Sale Status | Only the text of the lead’s reply |
Cost | Free (logic without AI) | Paid (AI Summary/Router call) |
Binding | A separate step in a flow | Nodes bound to the AI Reply step |
Decision cheat sheet
Condition — when the branch = an exact value in the data. Routings — when the branch = the meaning of what the lead has just written. In one funnel, both types are usually used, but at different stages of the journey.When to choose Condition
When you already have a ready-made field/tag with an exact value. Examples:
- The vip tag is assigned to a lead via webhook from an affiliate partner → branch for VIP.
CustomField total_deposit > 100 → separate funnel for paying users.
Sale Status= first_touch → initial funnel.
TrackerField source = facebook → different greetings for different channels.
When to choose Routings
When you need to branch based on what the lead WROTE. There is no exact value in the data yet:
- The lead said “too expensive” / “already registered” / “I don’t have time” — objections. Each objection gets its own branch.
- The lead wrote “I am from Italy” — country (without a separate recognition step and writing it to a
CustomField).
- The lead expressed agreement / disagreement / requested additional information — three different paths.
- The lead wrote something off-topic / unrelated — a separate branch to bring them back to the scenario.
How Router thinks
The model sees all Routings on the step and selects the most suitable condition. Therefore, the wording must be mutually exclusive and narrow enough — otherwise the “wrong” one will trigger or it will trigger too often.
When you need both
Often. Funnel example: Condition by tag
vip → different starting steps. Inside the VIP branch — AI Reply with Routings by objections. Inside the branch for the “too expensive” objection — again Condition by total_deposit. It’s not an either/or choice, but both tools in the right places.The
Condition + Routings tandemA typical technique:
Condition splits broad classes (VIP / geo / status), and inside the branch, AI Reply with Routings catches the lead’s semantic responses. This is cheaper and more stable than 10 Routings for everything at once.How to formulate conditions
Each Routing is a node with two required fields:
- Title — a short name for the team, visible in the editor. Germany / Has objection / Asked for price.
- •
AI Routingscondition — wording in English that the AI Summary/Router model uses to decide whether it triggered or not.
About the Title field
Title is for the team in the editor: short and human-readable (Germany / Price objection). It does not affect the lead's response text. Only the wording of the Routing condition matters.
Wording rules
One Routing = one condition. Do not combine “lead from Germany or Poland” into one formula — create two Routings with one goal.
Be specific, not abstract. “User mentioned country as Germany” is better than “User said where they are from”.
Use English — models work more consistently with English instructions.
Use AI Helper. Briefly describe the meaning of the condition in your own words, click AI Helper next to the field — the system generates formal wording, you choose the suitable option, and click Apply.
One Routing — one condition
If you mix “Germany or Poland” in one Routing, the model will have to guess. It is better to use two nodes, or first a
Condition by region, then Routings by objection.


AI Routing conditionsplaintext
User mentioned they are from Germany
User objected that the price is too high
User asked about pricing or cost
User said they already registered on the platform
User shared that they have no trading experience
User confirmed they want to proceed and register
User sent off-topic message unrelated to our offerFull example: a split with 3 Routings
How to read the example
Go from top to bottom: scenario → Routing conditions → what the lead will see with different wording. Test it in your Demo space using the same phrases.
Scenario: the lead completed the starting step and reached AI Reply with the Goal “Understand the lead’s country and suggest the right onboarding option”. This step has 3 Routings plus one more default branch.
Voronka pseudocodeplaintext
Step: Send message — Welcome
↓
Step: AI Reply — Get country
Goal: Get user's country and respond accordingly
Routings:
├─ Routing «Germany» → Step: Send DE link
├─ Routing «Poland» → Step: Send PL link
├─ Routing «Other EU» → Step: Send EN link
└─ (no match) — лид остаётся, ждём следующего сообщенияRouting conditions:
Conditionsplaintext
Germany: User mentioned they are from Germany or Austria
Poland: User mentioned they are from Poland
Other EU: User mentioned a European country other than Germany,
Austria or PolandWhat happens. The lead writes “Hello, I am from Munich”.
AI Reply replies to the message (for example, “Hi! Munich is great. Let me check what we have for Germany”). In parallel, AI Summary/Router checks 3 Routings: Germany — YES (Munich = Germany). The lead moves to “Send DE link”.If the lead writes “Hi” (without specifying a country), no Routing triggers. The lead stays on the current step and waits for the next message.
AI Reply will run again on the next message and ask about the country again.Anti-patterns
Four common traps
Below are the symptom, why it hurts, and how to fix it. If you recognize yourself, fix the wording instead of “adding one more Routing just in case”.
Conditions that are too broad
Too broad?
If the condition triggers on almost every “yes” and “tell me more”, it is useless as a branch. Narrow it down to the specific wording of the lead’s question.
Routing condition “User wants to know more”. It will trigger on almost any message (“yes”, “tell me”, “how”, “what”). All leads go into one branch. Half the funnel is useless.
Solution — make it more specific. Instead of “User wants to know more” — “User asked specifically about the price” / “User asked about delivery time” / “User asked about safety”.
Overlapping Routings
Branch overlap
If one lead response matches two Routings, the order/choice becomes nondeterministic for you. Make the conditions mutually exclusive.
Two Routings with the conditions “User from Germany” and “User from EU” — Germany matches both. Which one will trigger first? The behavior is unstable.
Solution — mutually exclusive conditions. “User from Germany” / “User from EU country EXCEPT Germany” / “User from non-EU country”.
Too many Routings
Many Routings = noise
10+ branches from one
AI Reply are expensive and unreliable. Cascade them: first a rough split, then the next step with a new set of Routings.10+ Routings from one step — the model makes mistakes more often by choosing an unsuitable condition. The cost of each response is higher (Summary/Router checks all conditions).
Solution — cascade. The first
AI Reply — broad split (country / objection / agreement). From each branch — its own narrow AI Reply with 2-3 Routings inside. Each Summary/Router request works on a narrow set.Empty default branch
No branch triggered
This is fine if the Goal moves the conversation forward. If the lead gets “stuck” without a clear purpose — strengthen the Goal or add a narrow default scenario, not a fifth similar Routing.
If no Routing triggers, the lead remains on the step. This is normal, but if the step does not tell the Goal to “continue the conversation”, the lead may get stuck in confusion (“the bot replied, but I don’t understand what’s next”).
Solution — the Goal must guide the conversation even when Routings have not triggered. “Get user's country, ask again if not provided”.
Routings without AI Reply
Routings are connected to the
AI Reply node. The same mechanism does not carry over directly to Send Message / Condition — don’t waste time looking for “Routings for a step without AI”.Routings — can only be attached to AI Reply. You cannot connect Routings to Send Message — Routings trigger on the lead’s reply, and Send Message does not wait for a reply.
“One-time trigger” option
“One time” flag
Enable it if the lead can return to the same
AI Reply and you do not want the same Routing to trigger again (for example, issuing a bonus again). In normal conversations, it is usually left off.Each Routing has a flag
The condition will only trigger once and will not be considered again. If enabled, a triggered Routing is no longer checked for this lead.When to enable it. If the funnel can return the lead to the same
AI Reply after several steps (via Change flow — transfer to another flow or Operator), and you do not want to handle the same objection again.When to leave it disabled. Standard scenario — a lead may land on the same step multiple times, and the condition must be checked each time.
How to test Routings
After configuration, a check in Demo space is required:
Minimum test checklist
For each Routing, use 3–5 real lead phrases (positive, negative, “silence”, typos). Record which branch was selected and where the flow went. If there is a discrepancy, first narrow the condition.
Check each condition separately. Write 3–5 message variants to the bot that should trigger a specific Routing. All of them should go to the correct branch.
Check edge cases. Messages that could fall into either of two Routings (Munich = Germany?). Record the behavior.
Check the default branch. Messages for which no Routing should trigger (the greeting “Hi”, the question “What time is it?”). The lead should remain on the current step.
After 1–2 weeks of operation, review real conversations in Messenger. Find cases where Routings triggered the wrong branch and adjust the wording.
Frequently asked questions
What’s next
Was this article helpful?





