Skip to Content
AutomationsRouting Rules

Routing Rules

A routing rule decides who handles a conversation. Without rules, everything lands unassigned and someone has to triage manually. With rules, you can route by skill, language, tier, channel, sentiment, time of day, or any combination of those.

Anatomy of a routing rule

ComponentExamples
Triggerconversation.created, message.received, transfer.requested
ConditionsChannel, language, customer tier, agent skill, sentiment, time, custom field
ActionsAssign to agent / team / queue, set priority, set SLA, tag, transfer to AI, notify

Common routing patterns

Skill-based routing

Trigger: conversation.created Condition: conversation contains "billing" Action: route to team "Billing Support"

Language routing

Trigger: conversation.created Condition: detected language == "de" Action: route to team "DACH Support"

Tier routing with overflow

Trigger: conversation.created Condition: customer.tier == "gold" AND team("Senior").available_count > 0 Action: assign to team "Senior" Trigger: conversation.created (lower-priority rule) Condition: customer.tier == "gold" Action: assign to team "Tier 2", priority "high"

Sentiment-based escalation

Trigger: scorecard.created Condition: scorecard.sentiment_end == "negative" AND scorecard.empathy < 3 Action: notify supervisor, tag "needs-coaching"

Conditions can reference any field on conversations, contacts, agents, and scorecards β€” including custom fields. The condition builder autocompletes available fields as you type.

Build a rule

Open Automations

Automations β†’ Routing rules β†’ New rule.

Pick a trigger

Most rules use conversation.created. Other useful ones: message.received (for ongoing conversations), ticket.created, scorecard.created.

Add conditions

Combine with AND / OR. The rule fires only when all AND-grouped conditions pass and any OR-grouped conditions pass.

Add actions

ActionNotes
Assign to agentA specific agent β€” useful for VIP routing.
Assign to teamThe team’s queue picks it up by capacity.
Assign to AI agentHand off to a specific AI agent.
Set prioritylow, normal, high, urgent. Drives SLA.
Set SLA policyOverride the default SLA.
Add tagFor reporting and downstream rules.
NotifySlack / email β€” see Notifications.
Call webhookPOST to your endpoint.
TransferMove to a different channel or team mid-conversation.

Test

Use Test against last 100 conversations to see what would have happened. Adjust conditions until the test results look right.

Activate

Toggle the rule on. It applies to new triggers from that point β€” it doesn’t retroactively re-route existing conversations.

Capacity and skill matching

When you route to a team, Omniflow picks an agent based on:

  • Online status β€” only online agents.
  • Capacity β€” agents under their concurrent-conversation limit.
  • Skills β€” only agents with matching skills (if the rule specifies any).
  • Workload balance β€” round-robin within the eligible set.

Configure skills under Settings β†’ Skills and assign per-agent.

Stop on match vs continue

By default, the first matching rule wins. To layer rules (e.g. always tag, then route), set the upstream rule to Continue.

PatternSetup
Pure routingStop on match.
Tag β†’ route β†’ notifyThree rules, first two continue, last one stops.
Default fallbackLast rule with no conditions, continue off.

Don’t build catch-all routing rules at the top of the list. They’ll match everything and short-circuit your specialized rules. Keep specific rules first, generic last.

Open in Omniflow

If you want to…Go to
Set SLA timersSLA & Business Hours
Send routing alertsNotifications
Use CRM data in conditionsCRM integrations