Omnichannel routing with unified agent status allows you to direct tickets from email (including web form, side conversations, and API), calls, and messaging to agents based on their availability and capacity. On Professional plans and above, tickets can also be routed based on priority and skills. Using omnichannel routing means agents can set a single unified status for all channels, and important tickets are assigned to the agents who are most available to work on them. This provides the following benefits:
- Agents can respond to tickets faster
- You can prioritize work from high-value customers, including calls
- Agents are automatically assigned tickets and don’t have to go looking for them
- Agents can’t "cherry pick" the tickets they want to work on
- Agents can work on multiple ticket channels at once
- You can route calls to specific groups of agents based on the caller's country code of callers or other attributes
You can use capacity rules to limit the amount of work that’s assigned to agents at one time. However, regardless of these rules, agents can assign themselves work in excess of these limits if they want to (see Creating capacity rules to balance agent workloads).
With omnichannel routing, instead of setting status individually by channel, agents can set a single unified status for Support, Talk, and Messaging. On Professional plans and above, admins can also define their own custom statuses such as “Out to lunch” or “In a meeting.” This can assist you when deciding how you want to route work items (calls, tickets, and messages) based on the agent status and capacity. See Adding unified agent statuses.
To use omnichannel routing, you have to turn it on and configure it. If you decide to stop using it, you can turn it off.
This article contains the following sections:
Requirements and limitations of omnichannel routing
There are a few requirements for using omnichannel routing, as well as some limitations you should consider before enabling the feature.
Requirements
- The Agent Workspace must be activated for your account.
- If your account has a Chat subscription, native messaging or Sunshine Conversations must also be activated.
- You can't be using live chat.
Limitations
Omnichannel routing with unified agent status currently has the following limitations:
- Omnichannel routing can't be enabled if you’re using live chat. Only Messaging is supported.
- Broadcast and hybrid modes for messaging aren't supported.
- Focus mode isn't supported.
- The ability to set an agent's status if they don't accept a number of message assignments, known as automatic idle, isn't supported yet.
- When using agent statuses, operating hours won't automatically set an agent's status.
- Light agents can't be assigned tickets and can't set a status.
- The ability to change a Talk agent’s status from the Talk dashboard, mobile apps, or by using the Talk APIs isn't supported. Integrations that use Talk APIs to change agent statuses might also be impacted.
- The ability to set up multiple call routing fallback groups in Talk settings for a single line or IVR keypress isn’t supported with omnichannel routing. However, if you use skills with omnichannel routing, you can achieve something similar by configuring the skills timeout settings. When using skills, calls are routed to an agent with matching skills first and, only if the skills timeout is reached, "overflows" to other agents in the same group without the skills.
- Tickets are created for all calls as soon as they enter the queue. The setting “Create tickets for abandoned calls” is no longer available.
Tip: You can create a workflow to automatically close tickets created for abandoned calls.
- If call forwarding is enabled and the status of an agent is automatically set to offline because the agent has been disconnected, calls to the agent will no longer be forwarded to the agent’s phone.
- Explore dashboards will show per channel agent statuses but not unified custom statuses.
- At the time omnichannel routing is activated, agent statuses can get into an inconsistent state. It is important to manually set every agent's unified status to offline initially, then allow them to set their own status after that. For more information, see Agent statuses are changing to online when enabling omnichannel routing.
- When using priority phone numbers in Talk, call tickets are assigned High priority but aren't necessarily put directly at the top of the queue.
- Talk Partner Edition isn't supported. The way you route calls for Talk Partner Edition depends on the integration you're using.
How omnichannel routing works
When you use omnichannel routing, tickets are generated for all channels of work when they enter the queue, enabling you to run triggers on them, including incoming calls. For brevity, channels of work are labeled as Email (including tickets generated from email, web form, side conversations, and API), Messaging, and Talk. Email tickets enter the omnichannel routing queue only after the routing tag is added to them; messaging conversations and calls enter the queue as soon as they are received.
Omnichannel routing routes work to agents based on the following:
- Availability. This is defined by the single unified status the agent sets across channels.
- Capacity for each work channel. You define the maximum capacity for each channel and decide which tickets are eligible for routing.
- Skills. This is defined by the skills assigned to agents and tickets and applies to all channels.
Then triggers are used to assign the tickets to groups, assign a ticket priority, and add a routing tag to the ticket. The following table shows the order in which tickets are routed to agents:
Plan | Order in which tickets are routed |
---|---|
Suite Team and Growth |
Tickets are assigned to agents in the order they are added to the queue. |
Suite Professional and Enterprise |
The ticket with the highest priority and oldest timestamp for entering the queue is routed to an agent within the assigned group with matching skills (if using), an eligible status, and the most spare capacity. |
More specifically, tickets are assigned to agents based on the following:
- Agent's status for the channel:
- Email tickets: An agent must have a status of online or away to receive email tickets.
- Messaging conversations: An agent must have a status of online to receive messaging tickets. See Setting your agent status with omnichannel routing.
- Calls: An agent must have a status of online to receive incoming call tickets.
If an agent forgets to set their status to offline, the status of the agent is automatically set to offline or away, as defined by an admin, when one of the following events is detected:
- An agent closes the Agent Workspace without signing out (by closing down their computer or browser window or putting their computer to sleep)
- An agent’s connection is lost due to a network outage
- An agent is idle for longer than the idle status threshold defined by admins
See Setting your unified agent status with omnichannel routing.
- Agent's spare capacity for that channel:
- An agent must have fewer open tickets or messaging conversations than the defined maximum capacity for that channel to have spare capacity. See Creating capacity rules to balance agent workload.
- If more than one agent has an eligible status and spare capacity, the agent with the highest spare capacity for the relevant channel is assigned.
- If more than one agent has an eligible status and the same spare capacity for the relevant channel, the ticket is assigned to the agent who hasn't been assigned a ticket in the longest time.
- To be assigned an inactive messaging ticket (more than 10 minutes without a reply), an agent must have spare capacity. Whether inactive messaging tickets count towards an agent's capacity depends on your routing configuration.
- Agent's skills:
- An agent must have the same skills as the ticket in addition to having an eligible status and spare capacity.
- If you select Skills timeout, tickets will be assigned without regard to skills if an agent with the matching skills is unavailable for a specified duration after a ticket reaches the top of the queue. If this option isn't selected, tickets will sit in the queue until an agent with the matching skills becomes available or a call reaches the maximum time in queue and is sent to voicemail.
Here's an example of a scenario for omnichannel routing:
- An important VIP end user has an urgent issue that needs to be resolved.
- They submit a ticket using the email channel.
- The account admin has set up a trigger for the account to add the auto-routing tag to these tickets and then assign a group, priority, and skills.
- As a result of this trigger, the end user's ticket automatically routes to a specific group with an urgent priority and the skill German.
- Omnichannel routing now assesses the ticket based on agent skills, status, and capacity.
- The routing system first understands that three agents are available for work.
- Second, it identifies that two of the agents have the skill (German language) required for the ticket.
- Finally, it finds which of those two agents has the most spare capacity for emails and assigns the ticket to this agent.
Reassigning messages and calls in omnichannel routing
Messaging conversations and calls require time-sensitive responses. Therefore, omnichannel routing has special reassignment logic for each.
Reassigning messaging conversations
With reassignment timing, a message can be reassigned to another agent in the group if the original agent does not take the message within a specific time threshold. The default threshold is 30 seconds. On Enterprise and above, that threshold can be customized.
The reassignment timing setting must be turned on during setup to reassign messages automatically if they aren’t accepted within the specified time. If that setting isn’t enabled, the routing engine will keep trying the same agent.
Reassigning incoming calls
When a call is offered to an agent, they can choose to accept or decline it. If the agent declines the call or doesn't answer within 30 seconds, the call is returned to the queue and assigned to another available agent. The call will continue to be offered to available agents in a round-robin fashion until the maximum queue waiting time expires. When using skills-based routing for calls, you can leverage the skills timeout settings to "overflow" the calls to agents without the matching skill when needed.
- Hours since created > (calendar) Less than >1
- Status > Less than >Solved
- Channel > is > Phone call (incoming)
Summary of features
Omnichannel routing has a broad scope, so here's a quick reference of features and functionality.
Channels supported by omnichannel routing
At a high level, omnichannel routing can be used to route tickets from email, messaging, and calls. However, in business rules, these categories of tickets are broken down into via
types. The following lists show the supported via types (referred to as channels) as they appear in Admin Center business rule conditions.
- Web form
- Web service (API)
- Closed ticket
- Ticket sharing
- Facebook post
- X (formerly Twitter)
- Web widget
- Mobile SDK
- Side conversation
- Merge
- Any channel
- Native messaging
- LINE
- SMS
- Facebook Messenger
- Telegram
- X (formerly Twitter) Direct Message
- Google RCS
- Apple Business Chat
- Google Business Messages
- KakaoTalk
- Instagram Direct Messenger
- Sunshine Conversations API
- Phone call (incoming)
- Phone call (outgoing)
Summary of features by plan
The availability of omnichannel routing features varies by plan level. The following applies to your Zendesk Suite plan level, or to the plan level of all individual products:
Team | Growth | Professional | Enterprise |
---|---|---|---|
Routing email, messaging and call tickets |
Routing email, messaging and call tickets |
Routing email, messaging, and call tickets |
Routing email, messaging, and call tickets |
Routing based on capacity and agent status |
Routing based on capacity and agent status |
Routing based on capacity, agent status, and skills |
Routing based on capacity, agent status, and skills |
Default unified agent statuses |
Default unified agent statuses |
Default unified agent statuses |
Default unified agent statuses |
Routing based on priority |
Routing based on priority |
||
Up to 5 custom statuses |
Up to 100 custom statuses |
||
Message reassignment |
Customizable reassignment time |
Related articles
See the following articles for more information to help you get up and running with omnichannel routing and agent statuses:
190 Comments
Eduardo Escobar: when a messages is assigned to a group with omnichannel routing, and an agent is available in that group then the Accept button should flash and a ding should be heard. If not, can you raise a ticket with our customer advocacy group?
Is there some sort of dashboard where an admin can view the status of all the analysts? Currently I have to go into a ticket and select the assignee to see who is available and who is not
Amos C
Yes, in Explore you can see the realtime status of your agents on the live dashboard
Barry
I turned on chat, not live chat as we do not use. We primarily use web form or email and I do not see the options to use omni channel, we do have a professional account.
I would like to explore this, any ideas on why it's not available for us? Also, we will not be using Round Robin so it's not an option.
Hi Taysha
Have you enabled messaging? If you have a chat subscription , messaging must be enabled.
Barru
Hi Barry Neary,
Today I was testing omnichannel. Lots of positive things that I love and really excited about the upcoming updates. I witnessed strange behaviour today though:
Two agents are online:
I started an anonymous conversation and let it be ignored by both agents for 10 minutes. I expected it to be assigned to agent 2 based on the following:
It was however assigned to agent 1. Not sure what inactive longest here means in this case.
I know you are working on an option to treat inactive and active tickets the same way. An ideal implementation for me would be as follows:
Secondly, this may not be directly under your product, but it would be great to expose the active/inactive property for messaging tickets in triggers and views. This workaround is not ideal as in this use case. If a new conversation is updated and is unassigned it does not necessarily mean it became inactive, it can very well be updated by an integration like a ZIS flow. I also can't see the active and inactive conversations in separate views.
All the best to you and your team.
Hi Team,
In "Agent's spare capacity for that channel" the 3rd sceniaro:
How do we define the "inactive longest" here? Is the time from their last message? Thank you.
Natasha
Hi Natasha Fu (cc:Jacquelyn Brewer)
inactive longest means the agent that has not been assigned a ticket from that channel for the longest time
Hi,
is there any news when Talk API will be released?
Also regarding "Agent Status" in Live Dashboard (Drill-In) can I get the "Drill-In" Version on Dashboard directly?
Thanks.
Tobias
Hi Tobias Hermanns
Thank you for your interest in our APIs! Regarding your question, we are thrilled to announce that we will soon be launching a new set of APIs called "Agent Availability APIs". These APIs will allow you to retrieve and update unified and custom agent statuses across Zendesk channels, including Talk, Native Messaging, and Support. We're currently in the EAP and planning to release the APIs for GA in Q2. Stay tuned for updates!
Thanks,
Volkan
Hi Isobel Petty
Do you have messaging enabled now? If so, you can use omnichannel routing....
Barry
Im testing omnichannel routing, it appears to be working in all channels except in Side Conversations.
Even if I add the routing tag, it still does not auto assign. Is there a configuration that needs to be done on our end? A button to switch? or if Side conversation is not included in the auto assign is there a way for us to get the SC's auto assigned?
Hi Arthur
Currently omnichannel routing doesnt route side conversations
You could perhaps use triggers to assign a side conversation to a particular group?
Barryhttps://support.zendesk.com/hc/en-us/articles/4408832448410
Hi Barry Neary,
Is there any certainty when Zendesk is releasing new features like routing of re-opened chats based on agent status (online, offline, etc.) and routing of so-called inactive chats?
Hi Slava Skorbezh
We are planning to launch a feature in June which will reassign reopened support tickets and messages if the agent is offline
We have an EAP now that treats inactive messages the same as active ones, i.e. they dont time out after 10 mins and dont automatically get assigned without taking up capacity. If you are interested in this EAP, let me know
Barry
Barry Neary Yes I'm interested. Please check your email 👻
Barry Neary Can I also enter on the EAP?
Thanks
Elsa
Hi @Barry Neary
We are experiencing some issues with inactive message (Whatsapp) tickets.
From zendesk documentation we know that:
"To be assigned to inactive message tickets (more than 10 minutes without a reply), an agent must have spare capacity, but the ticket doesn’t use up any of that capacity."
When queue is formed and several message tickets are set to inactive omnichannel routing assigne too many inactive tickets to agents with spare capacity, more disturbing than helping.
We understand that the maximum capacity is for active message tickets, but we also belive that auto assign for inactive tickets should be limited by paramer.
It is not something that happens everyday, but when it happens is very annoying. Please, can you check this?
Situation where 15 tickets were assigned to one agent:
Also having similar issues as the posting above with agents getting assigned a bunch of tickets through the EAP. It almost seems like tickets are being assigned without the agents clicking the accept button but want to confirm behavior as designed.
Are there any plans to add a way to exclude certain conversations from omnichannel routing such as by tag or status? Our agents are scheduled in live chat (sync) or tickets (async) and we are switching to Messaging from an in-house chat software. This missing option is giving us routing headaches as any conversations that start synchronously from Messaging cannot be switched to async tickets without being routed back to agents if/when the user replies.
We've tried changing the via channel by API (not possible per support) and a custom on-hold status (auto-assigned). Right now we are likely going to have to ask our agents to accept conversations using Play mode (not ideal for a number of reasons including requiring more clicks and not maximizing our capacity) or having to close Messaging conversations and create a separate followup, which was one of the big benefits of switching all of our interactions to Zendesk.
Hello there!
we're using omnichannel routing for a couple of months now and it's working great! I am more than happy that agents cannot cherry pick tickets anymore and the important ones are being assigned straight away.
However, I've got a question about the stack being used to assign tickets. If my team's capacity is 25 tickets but we've got 30 tickets that need assigning then how the other 5 are going to be assigned? Is it `first in first out` or `first in last out`? Or just randomly?
Hi Artur Olchowik
The 5 will be assigned first by Priority (Urgent first, then High etc.) and then by date created . So if you have two Urgent tickets, then whichever the oldest one is will be the first to be assigned
Barry
Hi Kris
Could you have the agent answer the message, then when it is over the agent could set the ticket status to Solved, then have a trigger that if they are reopened the assignee is set to NULL so the message ticket is reassigned to someone else?
I am not sure if the above addresses your issue...
Hi,
I am really looking forward using the omnichannel routing but I wanted to check with you if you are planning to solve this limitation:
It is very important for us to route a call to another group if the assigned group is not available.
Thanks fro your answer.
Elsa
Barry Neary We are going to use something along those lines for "active" chats but we essentially need a method to remove a conversation from routing and only serve it from a view. Our currently planned workaround is to Solve conversations and create a follow-up, which won't have the Messaging channel, but it removes one of the main benefits of Messaging of having both sync and async conversations on one ID.
Is Omnichannel routing available for Voicemails? I want voicemail tickets to be routed the same as email
Thanks Eduardo Escobar for the feedback, currently only live calls from Talk persective are routed via the omnichannel routing engine. Voicemails, abandoned calls or post call tickets assigned to a group are not routed by the engine at the moment. But they can be organised in views and picked up by agents.
We have a written request in the backlog to solve for this use case, but it's not on the short term.
We are trying to use Omni-Channel routing to solve the issue of agents not getting the notification when an active messaging ticket gets routed or re-assigned to a new group. It works great for new tickets and I was hoping this would solve that. Well, it kinda does but causes a few other issues.
Prakruti Hindia
Hi Jason Walker-C
We do have an EAP at present to switch off the feature of inactive messages (those in which there has been no conversation for 10 mins or more) being auto assigned to agents. See here for more information on that.
Barry
Barry Neary That link is broken. Getting the following message. Please advise
"oops
You're not authorized to access this page"
Please sign in to leave a comment.