Set up conversation routing rules
Wassla routes conversations in two layers: the AI agent decides when a conversation needs a human using a plain-language escalation policy in its Personality tab, and the Inbox decides which teammate picks it up using manual assign, auto-assign (round-robin by least busy), or transfer. There is no separate visual "rules engine" — channel-based and topic-based routing are expressed inside the agent prompt and through which agent you attach to each channel.
How routing actually works in Wassla
Three building blocks combine to produce the routing behavior most teams want:
- Channel-to-agent binding. Each connected channel (WhatsApp number, Instagram account, Facebook Page, Twilio SMS/voice line, web widget) is bound to exactly one AI agent in the Channels page. That binding is your channel-level routing — if you want WhatsApp handled by your "Layla" persona and SMS handled by your "Adam" persona, you assign them in Channels.
- Escalation policy in the agent prompt. Topic, keyword, and sentiment routing live inside the agent's Personality tab as plain-language rules. The AI follows the policy and opens tickets through its built-in
create_tickettool when a rule fires. - Inbox assignment. Once a conversation is open, you assign it to a teammate manually, let Wassla auto-assign to the least busy teammate, or transfer it between teammates. These actions are backed by the
conversation-routingedge function (assign,auto_assign,transfer).
The rest of this guide walks through configuring each layer.
1. Route by channel — bind the right agent to each channel
This is the simplest and most common routing rule: a different AI persona answers each channel.
- Open the Channels page from the sidebar.
- Click the channel you want to configure (for example "WhatsApp — +966 5X XXX XXXX").
- In the channel detail panel, find the AI Agent dropdown and pick the agent you want to handle all conversations on this channel.
- Click Save. The change is live for the next inbound message — no redeploy.
If you want a Finance-focused agent on a billing-only WhatsApp number and a Sales agent on your marketing line, this is where you wire that up. Each agent carries its own persona, prompt, knowledge bases, and escalation policy, so binding the channel is enough to get topic-appropriate behavior end-to-end.
2. Route by topic, keyword, or sentiment — write the escalation policy
Topic-based and sentiment-based routing live in the agent's Personality tab as plain-language instructions, not as a separate rules UI.
- Open the Agents page and click the agent you want to edit.
- Open the Personality tab.
- In the system prompt, add an Escalation Policy section. Be concrete:
- "If the customer mentions billing, refunds, invoices, or chargebacks, open a ticket with category 'finance' and tell the customer a Finance teammate will follow up within one business day."
- "If the customer asks to speak to a manager, sounds angry or frustrated, or uses profanity, open a ticket with priority 'high' and stop trying to resolve the issue yourself."
- "If the customer asks about enterprise pricing, demos, or partnerships, open a ticket with category 'sales'."
- Save the agent. The AI applies the new policy to the next turn.
When the AI fires its create_ticket tool, the ticket lands in the Tickets page with the conversation linked. Your Finance, Sales, or Support teammates can subscribe to the Tickets queue filtered by category and pick up only the work that belongs to them. See Hand off conversations to human agents for the full handoff lifecycle.
A note on sentiment: Wassla runs background sentiment analysis on every inbound message and feeds the signal into the agent's context. The escalation decision itself is still the AI's — driven by your prompt — so if you want sentiment routing, name it explicitly ("if the customer sounds frustrated, open a ticket").
3. Route open conversations to specific teammates in the Inbox
Once a conversation is in the Inbox, you have three assignment options. All three are available from the conversation header and are backed by the same conversation-routing edge function.
Assign a conversation manually
- Open the Inbox and click the conversation you want to assign.
- Click the assignee chip in the conversation header (it reads "Unassigned" by default).
- Pick a teammate from the dropdown. The assignment is saved immediately and the teammate sees the thread in their personal queue.
Manual assignment requires the assignee to be a member of the workspace with the owner, admin, or customer_support role. Finance and auditor roles cannot be assigned conversations.
Auto-assign to the least-busy teammate
If you do not want to triage by hand, use auto-assign. Wassla looks at all eligible teammates in the workspace, counts each one's currently open assigned conversations, and picks whoever has the fewest. This is round-robin by load, not by alphabetical rotation.
- In the Inbox, open the conversation.
- Click the assignee chip and pick Auto-assign.
- Wassla picks the teammate and the chip updates to show their name.
Auto-assign respects the same role filter as manual assign — only owner, admin, and customer_support roles are in the pool.
Transfer to a different teammate
If a conversation has already been assigned but needs to move (for example, the first responder realizes it is a Finance question), use transfer.
- Open the conversation and click the assignee chip.
- Pick the new teammate from the Transfer to section.
- The previous assignee is removed and the new teammate is notified.
The original assignee remains visible in the conversation history so the audit trail is preserved.
Common patterns
- Channel-segregated teams. Bind your Finance-focused agent to a billing-only WhatsApp number and your Support-focused agent to your main support number. Add a
customer_supportFinance specialist who lives in the Inbox filtered to the billing channel. See Manage your team and roles for role setup. - Sentiment-driven escalation. Add "if the customer sounds upset, open a high-priority ticket and pause AI replies" to every customer-facing agent. Subscribe your senior support teammate to the high-priority ticket queue.
- Out-of-hours fallback. Add "outside business hours (9am–6pm Riyadh time, Sun–Thu), tell the customer a teammate will reply the next business day and open a normal-priority ticket" to the escalation policy.
- VIP routing. Add "if the customer is in our VIP list (see knowledge base entry 'vip-accounts'), open a ticket with priority 'high' and tag it 'vip'." Use the knowledge base to keep the VIP list current without editing the prompt.
What is not yet shipped
To set expectations honestly:
- There is no drag-and-drop visual rules builder. Escalation rules are written in the agent's prompt today.
- There is no per-conversation tagging UI yet — the data model supports tags but the in-thread picker is not shipped. Use internal notes with a
\#tagconvention in the meantime. - Round-robin assignment uses least-open-conversation count, not skill-based or weighted routing.
If you need any of the above, open a ticket from inside your workspace or email [email protected] — your use case helps us prioritize the visual rules builder on the roadmap.