The agent answers first. Routing decides who on your team owns the conversation after that, and who owns the work it generates. Without rules everything lands unassigned and someone triages by hand.
Rules live at Workspace → Routing as a table: name, type, conditions, who it assigns to, and priority. Each row has an on/off switch, so a rule can be parked without deleting it.
Routing happens on arrival, as part of handling the inbound message. Rules are workspace-wide and apply to every agent. Whether a task is then created is decided per agent.
If nothing matches, the conversation stays unassigned. It is not silently given to whoever is available. Unassigned is a real state, and the inbox lets you pick those up.
| Type | Looks at | Matches when |
|---|---|---|
| Keyword | The customer's message text | Any keyword in your list appears in it, case- and punctuation-insensitive. A rule with an empty keyword list never matches. |
| Channel | The channel the message arrived on | It equals the configured value exactly, so email, whatsapp, and so on. |
| Lead score | The lead's score | The score is greater than or equal to your minimum. A lead with no score counts as zero. |
| Stage | The conversation's current stage | It equals the configured stage exactly. This is an equality check, not 'at or beyond'. |
| Round robin | Nothing | Always, which is why it is handled separately. See below. |
Keyword rules read the message, nothing else
Order specific above general
| Target | Behaviour |
|---|---|
| A person | The conversation is assigned to them directly. |
| A team | The conversation goes to that team's board with no individual assignee, for the team to pick up. |
| A team, assigned to its lead | Same, but the team lead is set as the assignee so someone specific is accountable. |
| Round robin | Rotated through a list of members you choose. |
Round robin remembers its position on the rule itself and advances it inside a locked transaction. Two messages arriving at the same instant get consecutive members rather than both landing on the same person, so the fairness holds under real concurrency and not just in the happy path.
A rule that points at someone who left is silently skipped
| Situation | Result |
|---|---|
| The assignee is no longer a workspace member | The rule is skipped, matching continues. |
| The team no longer exists | The rule is skipped, matching continues. |
| A team rule set to assign to its lead, but the lead has left | The conversation still goes to the team, with no individual assignee. |
| A round-robin list containing departed members | They're filtered out and the rotation continues over who's left. |
This is the usual explanation for "my rule matched but nothing was assigned". Check whether the target is still in the workspace.
There's no dry run
Where the agent has auto-task creation on, what the customer asked for fans out into work: one epic per conversation, one sub-task per distinct request. Both are assigned to whoever routing chose, which is why routing is worth configuring before you turn task creation on.
| Filter | Effect |
|---|---|
| Skip if the conversation is lost | No tasks are created for conversations already at a lost stage. Stops zombie follow-up work. |
| Skip if no routing rule matched | Only create tasks for conversations someone actually owns, so unqualified traffic doesn't fill the board. |
Both are per agent, so a support agent can create tasks for everything while another agent only does so for routed conversations.
For what decides whether a reply sends itself, see Auto-Send & Confidence.