The short answer: Omni-Channel pushes work to agents based on capacity and priority rather than letting them pick from a queue. An agent gets nothing when their capacity is full, their status does not accept that work type, or the routing configuration’s queue has no members. Those three explain almost every “why is nobody getting this case” report.
The pieces, and how they connect
- Service Channel maps an object to routing. One per object type you route.
- Routing Configuration holds priority, routing model, and how much capacity one item consumes.
- Queue holds the work and the members who can receive it. The routing configuration is attached to the queue.
- Presence Configuration sets an agent’s total capacity and which statuses they may use.
- Presence Status says which channels the agent is accepting right now.
Work flows: a record enters a queue, the queue’s routing configuration decides priority and cost, and Omni finds an agent whose presence status accepts that channel and who has capacity left.
Capacity is the part to get right
An agent has a capacity number, say 5. Each work item consumes an amount set on its routing configuration. A chat costing 1 and a case costing 3 means an agent can hold one case and two chats, or five chats.
Two mistakes are common. Setting every work item to cost 1 makes capacity a simple count, which ignores that a live chat demands more attention than an email case. And setting capacity too high produces agents holding twelve items and working none of them, which looks like throughput on a dashboard and is not.
Start with capacity 5 and weight items by how much attention they need. Adjust from the queue wait times, not from how busy people say they are.
The three routing models
Least Active gives work to the agent with the most spare capacity. The sensible default.
Most Available gives work to the agent with the greatest difference between capacity and current load. Similar in effect, different in edge cases.
External Routing hands the decision to another system through the API, for orgs that already have a routing engine.
Priority on the routing configuration is a number where lower wins, and it decides which queue is drained first when an agent becomes available. Two queues at the same priority are drained by age.
Why an agent is getting nothing
Check in this order, because each is cheaper than the last:
- Their presence status. Available for one channel and not another is invisible unless you look. The Omni Supervisor tab shows it.
- Their capacity. Full, including items they accepted and never closed. Stale accepted work is the usual culprit.
- Queue membership. They must be a member of the queue, directly or through a group or role. Adding a permission set does not add them to a queue.
- The presence configuration assigned to them permits the status they need.
- The work item actually reached the queue. Ownership has to be the queue, and an assignment rule that fired differently is a common reason it did not.
Declining and timeouts
Push Time-Out sets how long an agent has to accept before the item goes back for re-routing. Without it, an item pushed to someone who stepped away sits there indefinitely.
Set it. Thirty to sixty seconds is typical, and the item returning to the pool is far better than one agent silently holding the queue’s oldest case.
Declining is separate and off by default. Allowing agents to decline is reasonable in a skills-based setup and becomes a way to avoid work in a simple one.
Skills-based routing changes the model
Queue-based routing sends work to a queue’s members. Skills-based routing sends work to whoever has the required skills, regardless of queue. The two work differently enough that mixing them in one org needs a clear rule about which is used where, written down, because the debugging is different for each.
Frequently asked
Does Omni work without a console? The utility bar needs a console app. Agents in a standard app do not get the Omni widget.
What happens when an agent logs out holding work? It stays assigned to them until their status changes or an administrator reassigns it. A daily check for work assigned to offline agents is worth having.
Can I route custom objects? Yes, with a service channel pointing at the object. The object needs to be queue-enabled.
