How Routing Works
  • 24 Jan 2023
  • 18 Minutes To Read
  • PDF

How Routing Works

  • PDF

Understand how Gladly routes and prioritizes. To explain this process better, we'll break down routing into four topics:

  1. Units of Work
  2. Routability
  3. Inbox Assignment
  4. Agent Assignment

Units of Work

The Routing Engine routes two kinds of Work about a Customer to Agents: Conversations and Tasks.

Keep in mind that open Conversations or Tasks that need to be assigned to an Agent are considered "routable."


As you know, Customers can only have one Conversation at any given time, regardless of the Channel the Customer used to reach out to you. Because all communications are contained in a single Conversation in the Customer's Conversation Timeline within their Customer Profile, this allows Gladly to route the Customer's Conversation and allows only one Agent to be assigned to a Conversation at one time.

Important things to keep in mind:

  • Conversations begin and end. (Open > Waiting > Close status).
  • Conversations can have multiple Contacts.

When a Conversation begins or ends

Conversation Start

Conversations begin when: "0"

  • A Customer initiates inbound Contact.
  • An Agent sends an outbound Contact to a new Customer who hasn't had previous Conversations in Gladly.
  • An Agent sends an outbound Contact to an existing Customer and chooses to start a new Conversation.
    Agents are offered the choice to re-open a Conversation or create a new Conversation.


Conversation End

Conversations stay open until the Agent or automation (e.g., a Rule) closes them. Typically, Conversations are closed when:

  • The Agent feels a Customer's issue(s) has been addressed.
  • The Agent sees that a Customer has become unresponsive, and they will not be able to address the Customer's issue(s).
  • The company policy guides Agents to close Conversations.
  • The company sees the message as SPAM (or similar noisy messages) and wants to reduce its impact on metrics by using Conversation Close Rules.

Conversation Re-Open

Closed Conversations cannot be edited, so they are sometimes manually re-opened for some of these reasons:

  • To add Topics.
  • To add a Note.
  • To reassign the Conversation (to an Inbox, or to another Agent).
  • To send an outbound message to the Customer.

A period of time after the Conversation is closed can be set as an automatic through the Conversation re-open window. During this window of time, if the Customer reaches out to the company again, their previous Conversation is opened instead of starting a new Conversation. The new inbound Contacts that re-open a Conversation will be routed as a new Contact and will not necessarily be assigned to the previous Agent, with the exception of the Mail assignment configuration option.

This is an acknowledgment that the issue may not yet be resolved if the Customer is reaching out so soon after a Conversation was closed. Also, it is a way to reduce the number of "Thank you!" replies that create a new Conversation.

Contact Ending

A Contact can end in several ways:

  • Closing a Conversation will end the Messaging or Mail Contact.
  • Chat Contact can be ended by clicking End.
  • Messaging and Mail Contacts can be ended using No Reply Needed action.
  • Messaging and Mail Contacts will auto-end after a period of unresponsiveness from the Customer. The default timing for Messaging is 15 minutes unless otherwise specified. The Mail window is configured and can be controlled on the Channels page by Administrators. The default timing for Mail is 15 minutes.
    • The auto-end timing runs on a recurring basis, so it can sometimes vary between 0 to ~60 seconds after the configured timing.
    • Auto-end message appears in the Customer feed for Agents to see, but only for Messaging Contacts.
  • Chat Contact will auto-end after 24 hours of Agent unresponsiveness. This is not configurable at the moment.

Knowing when a Contact is over is more art than science.

  • If the Conversation is clearly over, Agents can either click "End," "No reply needed," or close the Conversation.
  • If the Agent is unsure whether the exchange is over, they can simply click "Next" to start helping the next Customer. Agents will be notified if the previous Customer responds. Otherwise, the Contact will end without interrupting them.

Conversations with several exchanges of messages

A Conversation can sometimes span many days and multiple exchanges of messages with the Customer.

For example, a Customer can call on Monday, send an email on Tuesday, and follow up by SMS on Friday. In this example, those exchanges might happen between the Customer and different Agents at the company. While the Conversation is only assigned to one Agent at one time, Conversation can be passed around throughout the week — sort of like passing a baton from one runner to the next.


Similar to Conversations, a Task can only have one Agent assigned to it. There are no limits to the number of Tasks that can be created for a Customer. If a Customer does have many Tasks, those Tasks can be assigned to various Agents without needing to be assigned to the same Agent as the Customer's Conversation.

Task Routing Window

Through the Task Window Routing setting, you can set a time period (e.g., 2 days) so that Tasks are only routed during that period before the due date. For example:

  1. It's October 1.
  2. An Agent wants to create a New Years card reminder Task, which is due on December 29.
  3. The company has set the Task Routing Window as two days.
  4. Therefore, the Task will not appear to be routed until December 27.
  5. Between October 1 to December 26, the Task is not routable. It becomes routable on December 27.
Tip - Collaborating on Conversations or Tasks
A Conversation and Task can have several collaborators or Agents who are helping the assigned Agent. However, the Routing Engine is focused primarily on the assigned Agent.


To be "routable" means the Routing Engine tries to find a Conversation or Task to assign to an Agent.

Routable Conversation

A Conversation is considered "routable" when:

  • An inbound Contact that opens a Conversation.
  • An inbound message that starts a new Contact in an already open Conversation if no other Contacts are ongoing.
    • Note – For ongoing email Contacts (like an email that hasn't been responded to) assigned to an Agent, and that Customer then chats in, that Conversation will not automatically be re-routed. Some set up Rules using the "New Contact" Condition to make sure that certain kinds of new Contacts make the Conversation routable again.
  • Inbound phone calls even if a Conversation has ongoing Contact and is already assigned.
  • The Conversation is unassigned from an Agent.

Below are examples of situations that fit this definition for Conversations is "routable":

  1. A Customer calls in.
  2. A Customer contacts in, and that message starts a new messaging Contact.
    • Subsequent messages in an ongoing messaging Contact are not routable. Once the first SMS, Chat, etc., message is routed, the subsequent messages sent by the Customer are not routed — instead, they stay with the same Agent.
  3. A Customer emails in, and that email starts a new mail Contact.
    • Similar to messaging contacts, subsequent messages in an ongoing mail Contact are not routable. Once the first email message is routed, the subsequent messages sent by the Customer during the open mail Contact are not routed — instead, they stay with the same Agent.
  4. A Customer emails in and the ongoing/re-opened Conversation is not assigned to an Agent already. This depends on the mail routing settings.
  5. A phone Conversation is "cold transferred" (i.e., transferred without a specific Agent assigned) to an Inbox.
  6. A messaging or Mail Conversation is reassigned to an Inbox manually (without a specific Agent assigned).
  7. A messaging or Mail Conversation is reassigned to an Inbox by Reassignment Rules (without a specific agent assigned).
  8. A Customer is merged with another Customer who has no agent assigned.
  9. Conversations not yet routed with an existing Contact could be reassigned to a different Inbox when the Customer reaches out through a new Channel set (Voice, messaging, Mail) that is directed to a different Inbox than the Conversation is currently in.

Routable Tasks

A Task is considered "routable" when:

  • A Task is created with no Agent assigned.
  • An open Task is reassigned to an Inbox manually (without a specific Agent assigned).
  • An open Task is reassigned to an Inbox by Reassignment Rules (without a specific Agent assigned).

Inbox Assignment

All Conversations and Tasks in Gladly need to be in an Inbox. While they can move between Inboxes, a Customer is only ever in one Inbox at a time, but their Tasks can be in the same Inbox or in other Inboxes.

Once something (like a Conversation or Task) is in an Inbox, it can be reassigned manually.


Conversations are assigned to Inboxes based on the Entry Point. These are configured in the Entry Points setting page.

IVR and Inboxes

For voice Customers, navigating through the IVR can eventually get to an Exit node where the phone call is sent into an Inbox. Along the way, things like Customer input and Data Dips can help guide the Customer to the right exit node. For example, a Data Dip can pull information about a Customer's VIP status and then guide them to an Exit node for VIPs. An Administrator can set up their Channels so that the VIP Exit nodes point to a VIP Inbox.

If a phone number has an IVR, the Administrator will see the phone number (what the Customer initially dials) and the Exit node (the final selection the Customer makes before transferring them to an Agent), which looks like the configuration on the Entry Point below.

Note the IVR Exit nodes "_dial" and "_value," which are separated from the phone number by a comma.


Inbound communications are first placed in the Inbox specified on the Entry Points setting. After that, the Rules are evaluated, and if the Conversation matches a Rule that specifies a different Inbox, then the Customer will be moved to that new Inbox.

In situations where a Conversation matches multiple Rules, the highest priority Rule decides which Inbox the Conversation goes to.

Initial Routing rules

Rules can be applied to inbound communications on various Channels.

  • Assign Inbox Rules moves the Customer to a different Inbox.
  • Assign Agent Rules assigns a specific Agent. The Conversation is assigned, and the Routing Engine will not look to assign a different Agent at that time.
  • Mark No Reply Needed Rules, if applied, will end the Contact, and stop the Routing Engine from looking for an Agent to assign. These Rules will not close the Conversation.
  • Mark Conversation as Closed Rules, if applied, Closes a Conversation, and stops the Routing Engine from looking for an Agent to assign.


Tasks are assigned to an Inbox upon creation. Tasks in any Inbox are routed to Agents.

Agent Assignment

Once Work is placed in an Inbox, the Routing Engine will look to assign it to an Agent in that Inbox. The Routing Engine is looking for the right Agent to match with the right Customer.

To find the right Customer, it will look to:

  • Prioritization (of Conversations and/or Tasks)

To find the right Agent, it will look to:

  • Channel Availability
  • Capacity/Workload
  • Agent Ordering (if there are many agents who could help the same Customer)
  • Prioritization (through People Match)

Once a pair is established, that's not always a guarantee that they will become the assignee who helps that Customer. Keep in mind that sometimes, Agents need to accept the offered Contact before it is assigned.

Assignment exceptions

There are two exceptions to the Agent Assignment model:

  • Dedicated Hero is an exception to the Agent Assignment.
  • Another exception is for email, depending on the mail routing setting.
    • In the situation where a Conversation is open (or re-opened), and an Agent is already assigned, when the Customer sends a new email, it will be immediately assigned to the same Agent. It will be placed in their My Customer list as an "unread email." This assignment will happen regardless of whether the Agent is busy with other Customers or even logged out of Gladly. Review the mail routing setting to learn more.

And remember that Contacts are somewhat of an "exception" here because inbound messages in an ongoing Contact don't cause that Customer to be re-routed.


If the Agent is assigned but does not help the Customer in a timely fashion, their Work can be unassigned, making the Work routable to another Agent. This can happen manually, but more often than not will happen through automated Reassignment Rules.


Customers are prioritized based on a Channel tier:

  1. Voice: phone calls
  2. Messaging: chat, SMS, FB Messenger, etc.
  3. Mail and Tasks: email, voicemail, and Tasks

These categories correspond with the Availability controls.

Let's look at an example where Voice is prioritized.

Transfers and Priority

Within those Channels, transferred voice calls are prioritized because Customers who are "cold transferred" have already waited to be helped the first time and shouldn't have to wait back at the end of the line just because the first Agent couldn't help them.

The priority of transfers for Messaging and Mail Channels is controlled through People Match, though the default setup is configured to prioritize Transfers. Transferred Conversations in this context refer to Conversations that have been assigned to an Agent already, then moved to an Inbox without a specific Agent assigned. This applies to Reassignment Rules (for messaging) as well.

Unread Work and Priority

In the case of Mail and Tasks, when the Agent clicks Next for more Work, they'll first be reminded of any unread mail or Tasks that are already assigned to them in their My Customers list. This includes any email replies that were immediately assigned to them,  as well as any unread emails or Tasks that were assigned to the Agent by other Gladly users.

If the Agent has read all the Mail and Tasks in their My Customers list,  then they will be given new Mail or tasks when clicking Next (as long as there is new Work to be assigned).

People Match and Priority

People Match still respects the Prioritization tier described above. In addition:

  • In the Messaging Channel, People Match is used to prioritize Customers with messaging Contacts. If the top Contacts have the same total boost score, or if no Contacts have a score, then Due Date is used to determine priority.
  • In the Mail + Tasks Channel, due dates are used to determine first whether to assign a Task or Mail item. For example, if the oldest email is overdue by 24 hours, and the oldest Task is overdue by 2 hours, an email will be routed. However, the email that is routed is not necessarily the most overdue email.
    • For Mail, People Match is used to prioritize Customers. Similar to messaging Contacts, the due date is used as a tiebreaker between Customers with the same total boost score or if no Customers have a score.
    • For Tasks, the due date is used to prioritize Tasks.

Due Dates and Priority

As mentioned above, the due date can be set for Tasks and is calculated for Conversations. If there is only one piece of Work that requires routing, then the decision of priority is easy. Otherwise, People Match and/or due dates are used to compare routable Work. Due dates are measured down the millisecond, so there's normally no ambiguity about which Work to prioritize.

The diagram below describes how due dates are compared across Customer communications within a Channel when the People Match scores are the same.

Remember, the Routing Engine is looking for the earliest due date.

Tip - SLA proportionality across different Conversations
Let's say you have one Inbox with a 2-minute SLA, and a Conversation in it is 10 minutes overdue (5x the SLA). And another Inbox with a 4-minute SLA and a Conversation in it is 12 minutes overdue (only 3x the SLA). Which one is a higher priority?

The priority of overdue Work is not proportional to the SLA. Every minute before and after the "due date" is counted as a minute. So in this example above, the 12-minute overdue Conversation is a higher priority (12 > 10) because it has an earlier due date. However, People Match boosts can be used to create different bands of SLA. See time-based boosts to learn more.

Channel Availability

Agents in Gladly can have one of three main statuses:

  1. Logged Out
  2. Away
  3. Logged In

With the exceptions of Mail replies Dedicated Hero Mail, ongoing Contacts, manual assignment, and Rules-based assignment, statuses 1 & 2 (Logged Out and Away) automatically disqualify the Agent from getting routed new Work.

When Agents are logged in (status 3), they will need to be available for a Channel set in order to be routed Work by the Routing Engine. Keep in mind that this is for automatic assignment of Work, so Agents can be manually assigned Work even if they aren't available for a Channel.

Type of Work Agents can receive based on their Channel availability

Channel availability is not a guarantee of getting Work, however. The first reason is that there may not be Work to distribute. The second reason is that working on Conversations in some Channels will preclude the Agent from getting routed new Work in other Channels (even if the Agent has their availability set to green). Specifically, those interactions are:

  • If an Agent is available on Messaging:
    • They can be routed a voice call from internal routing activities (e.g., warm transfer, manual assignment, joining a conference call) but not from the Routing Engine (i.e., Customers calling in waiting for assistance).
    • They won't be routed any new messaging; however, the Agent can request more. Clicking Next will route new messaging Contacts until they reach the ceiling. If the Agent is at the ceiling for messaging, or there aren't any messages left, then they'll be routed Mail & Tasks.
  • If an Agent is available on Voice:
    • They won't be routed any new messaging Contacts from different Customers.
    • They won't be routed any new Mail from different Customers or Tasks.
  • If an Agent is available on Mail & Tasks:
    • They can be routed a voice call from internal routing activities (e.g., warm transfer, manual assignment, joining a conference call) but not from the Routing Engine (i.e., Customers calling in waiting for assistance).
    • They can be routed new messaging Contacts.

Note that while Agents are on a voice call, they aren't able to change their availability.


Capacity is the number Work an Agent can take on at one time.

For Voice, an Agent can only be pushed one call at a time.

For Messaging, the Routing Engine will try to push Work up to the Agent's general threshold. Once there, the Agent will need to request/pull additional messaging Work by clicking Next. Remember that active Contacts are what count towards the Agent's messaging capacity, so new Work will not be pushed until a Contact is ended.

For Mail and Tasks, there is no limit to the Agent's capacity at the moment. It's important to note that Agents will be pushed one piece of Work when they set their availability to green, provided that there's Work to be distributed.

After that, the Agent will need to click Next to get new Mail or Tasks. One exception, however, is this:

  • If the Agent is available for Mail & Tasks, and there is no new Work to distribute, and the Agent clicks Next but doesn't receive any Work; when new Mail or Tasks come in, the Agent will be pushed that Work (without having to request it) if the Routing Engine selects them.

In terms of routing capacity, the Routing Engine will count a cross-channel Conversation (one in which the Customer is using multiple Channels to communicate) as one Conversation. The "heaviest" Channel (Voice > Messaging > Mail & Tasks) will be counted so that:

  • A Conversation via voice and messaging is counted as Voice.
  • A Conversation via email and messaging is counted as Messaging.

When we talk about an Agent's capacity, we're talking about what the Routing Engine will assign to an Agent. Agents can still be manually assigned Work (by themselves or others) that will make them go beyond their configured capacity.

Joining or participating in Work that is assigned to other Agents counts towards the Agent's capacity.

Agent routing prioritization when many Agents are eligible

When many Agents are eligible to be routed a Conversation or Task, the Routing Engine will use a round-robin approach. The Agent who has been available the longest for a certain Channel is routed the Conversation or Task.

In the case of Voice, if the previously assigned Agent is among those Agents who are eligible, then they will be routed the phone call.

Assignment Scenarios

Once the Routing Engine finds an Agent to assign, it's not always guaranteed that the Agent will be assigned to that Work. The way Work gets assigned varies by Channel, and in some cases, can be changed by certain settings.


  • For Gladly Voice, Agents are offered the call, and they can choose to accept or decline the call. They can also "miss" the call by not accepting or declining within a configurable window (a configuration handled by Gladly). If they decline or miss it, the call is offered to the next available Agent.
  • For some Customers' voice setups, Agents do not have the choice to accept or decline and are instead automatically assigned.


  • Administrators can choose between two options:
    • Option 1 is to show the Accept/Decline banner. This will work much like Voice, where Agents can choose to accept or decline the message. They can also "miss" the message by not accepting or declining within a configurable window (a configuration handled by Gladly). If they decline or miss it, the message is offered to the next available Agent. Administrators can choose to hide the message preview if they feel that Agents will cherry-pick Work by reading the preview text before choosing to accept or decline.
    • Option 2 is to assign messaging Conversations directly. If the Administrators toggle the Accept/Decline banner off, then the Agents will be automatically assigned as soon as the Routing Engine pairs them with a Customer.

Mail and Tasks

  • Agents do not have the ability to accept or decline. As soon as the Routing Engine finds Work for the Agent, they will be assigned.

When directly transferring messaging or phone calls to a specific Agent, the receiving Agent will get the ability to accept or decline (depending on the settings for messaging mentioned above). If the receiving Agent chooses to decline the message or call, the sending Agent will remain assigned.


Sometimes, after Work has been assigned to an Agent, it needs to be reassigned. Manual transfer of Work from one Agent to another will bypass the Routing Engine — in this case, the assigning Agent performs the act of routing.

When Work is reassigned to an Inbox (when the current Agent is "unassigned"), either manually or automatically, this begins the routing process again. The Routing Engine will begin looking for an Agent to assign.

Was this article helpful?