Routing report
Last Update: Sep 2025 • Est. Read Time: 5 MINThe Routing report lets you see your queues and how well they perform, monitor agent availability, and monitor customer wait time. This report also provides a simple way to see how many agents are online and their current status. You can see how many conversations are queued and waiting for the agent to accept. Here, you can view all your queues rolled up into a single report or on each individual level and easily group individual queues together.
We also report on the wait time of a conversation in a queue, which can be presented to chat users as a means of channel deflection.
Who can access this feature? | |
User types | Managers or users with custom permission set access to reporting can access this feature. |
In this article:
- Current Agent Statuses chart
- Current Conversations Statuses chart
- Routing report metrics
- Historical queue reporting
- Live Dashboards
- Filter results
- Metric calculations
To access the Queue report, select Reporting, and then select Routing.
Current Agent Statuses chart
This chart displays the current status of all agents that are online. If you create custom unavailable statuses they will display by name, but follow the unavailable definition.
The following statuses are available:
- Available - Full Capacity Reached
The available users in the queue who have reached their current conversation capacity. - Available - With Capacity
The available users in the queue who are not yet at their conversation capacity. - Unavailable
Users who are unavailable to receive routed conversations from a queue. - Busy
Users who are available, but in a call.
Current Conversation Statuses chart
This chart shows the status of conversations in the queue. Snoozed conversations are excluded.
The following statuses are available:
- Assigned
Conversations that have been routed and assigned to a user. - In queue
Conversations that have been assigned a queue but not routed yet. - Wrap-up
Conversations that have been assigned, and ended, but not marked done.
Routing report metrics
The report shows eight metrics that let you quickly see how your queues are performing.
The following metrics are shown:
- Available Agents
Total number of agents in the queue in an available status. - Unavailable Agents
Total number of agents in the queue in an unavailable or busy status. - Total Conversations
Total number of conversations in the queue that are not routed or assigned. Snoozed conversations are excluded. - Conversations Per Available Agent
Total number of assigned conversations currently in an Open or Wrap-up status divided by the total number of agents currently in an Available status. - The longest Wait
The time the conversation has spent waiting in the queue the longest during the current 24-hour day. - Latest Wait
The wait time of the last conversation to be routed to a user. - Average Wait
The average of all wait times in the queue for the current 24-hour day. - Average Handle Time
The average time a conversation routed from a queue was assigned to a user in an open status. This metric includes snoozed time.
Historical Queue reporting
On top of seeing queue performance in real-time, organizations can get a clear historical view of each queue. With this report, you can monitor how long customers wait in a queue to be assigned to an agent and how long it takes an agent to handle their conversation. You can also see how skill-based queues performed by selecting the Skill Metrics tab.
The following metrics are shown:
- Agent Handle Time (Total & Average)
The time an agent is assigned to a conversation from open to close, including snoozed. - Wrap-up Time (Total & Average)
The time a conversation spends in wrap-up status between ending and closing. - First Routed Response time (Total & Average)
The time from when a work item was accepted to when an agent sends the first reply. - Total Conversations
The total number of conversations that entered a queue. Snoozed conversations are excluded. - Max Wait Time (Total & Average)
The longest time a conversation waits in a queue. - Average Queue Time
The time a conversation waits in the queue before being routed to an agent.
Organizations can also track how much time their agents spend in each status while working in queues. The time is broken down into Available, Unavailable, and Busy statuses. You can also see how many conversations were assigned to them in that timeframe.
The following agent metrics are shown:
- Available Time Total
The total amount of time a user spends in an Available Status. - First Routed Response time (Total & Average)
The time from when a work item was accepted to when an agent sends the first reply. - Unavailable Time Total
The total amount of time a user spends in any Unavailable Status. - Busy Time Total
The total amount of time a user spends in the Busy Status (Voice on Call). - Agent Total Handled Items
The number of conversations assigned to the user. - Wrap-up Time Total
The total amount of time a conversation assigned to the user was in wrap up. - Queue Time Total
Sum of all caller wait times in Kustomer Voice queues before being connected or abandoned. Represents the total queueing burden across the reporting period. - Missed Calls Total
Kustomer Voice calls that fully exhausted the queue timeout duration without being answered, often leading to voicemail or caller abandonment. - Abandoned Calls Total
Kustomer Voice calls where the customer hung up while waiting in the queue, before reaching the timeout threshold. Indicates early-stage customer abandonment.
Live Dashboard
For organizations that make their queue metrics available to their agents via TV or computer monitors, the Live Dashboard can be expanded for everyone to see. Select the [ ] icon from within the Queue report screen to expand the Kustomer interface for a full-screen view.
The Live Dashboard data refreshes every 15 seconds and includes a "Night Mode" option, accessible by selecting the icon in the top-left corner.
Note: The Live Dashboard is only available on Ultimate plans.
Filter results
This report offers four attributes in its filter component: Channels, Queues, Teams, and Users. It's important to understand how these filters will impact the data displayed.
- Channels will filter to work-items where the selected channel or channels is present.
- Queues will filter to a work item's most recent queue, as items can move from queue to queue within their lifecycle.
- Teams will filter to data whose Team relationship is the value selected, not to data where the assigned team is equal to the value selected.
- Users will filter the data where the assigned user is the selected value.
Metric calculations
Below, you'll find descriptions of the calculations for each metric, including the attributes used in their formation. These can be beneficial when rebuilding standard report metrics in your custom reports or referenced when building metrics or performing analysis outside the Kustomer platform with data sourced from our APIs or data services, such as Kinesis.
The Date Anchor is the attribute linked to the date range picker in each report's header that determines whether or not any objects that fit the calculation criteria will appear in your chart or table.
Metric | Calculation | Date Anchor |
Current Agent Statuses | Filtered to work sessions where work_session.signedOutAt is not present, grouped by status Available - Full Capacity Reached: capacityRemaining <= 0, statusId = available Available - Partial Capacity: workItemCount > 0, routable = true Unavailable (and custom unavailable statuses): routable = false | N/A; handled by signedOutAt filter |
Current Conversation Statuses | Filtered to work items where lastRevision.queueId exists, work_item.status is not 'completed', and work_item.paused is not 'true' | work_item.createdAt |
Available Agents | Filtered to work sessions where work_session.signedOutAt is not present, matching either: Available - Full Capacity Reached: capacityRemaining <= 0, statusId = available or Available - Partial Capacity: workItemCount > 0, routable = true | N/A; handled by signedOutAt filter |
Unavailable Agents | Filtered to work sessions where work_session.signedOutAt is not present and routable = false | N/A; handled by signedOutAt filter |
Total Conversations | Filtered to work items where lastRevision.queueId exists, work_item.status is one of 'ivr', 'queued', and work_item.paused is not 'true' | work_item.createdAt |
Conversations Per Available Agent | Distinct work_item.id where work_item.status is one of `assigned`,`wrap-up` divided by distinct work_session.id where statusType = `available` | N/A |
Longest Wait | Max of work_item.lastRevision.queueTime | work_item.lastRevision.acceptedAt |
Latest Wait | First item of work_item.lastRevision.acceptedAt sorted in descending order | work_item.lastRevision.acceptedAt |
Average Wait | Average of work_item.lastRevision.queueTime | work_item.lastRevision.acceptedAt |
Average Handle Time | Average of work_item.handle.businessTime | work_item.lastRevision.acceptedAt |
Queue metrics table | ||
Agent Handle Time Total | Sum of work_item.handle.businessTime grouped by lastRevision.queueId | work_item.handle.completedAt |
Agent Handle Time Average | Average of work_item.handle.businessTime grouped by lastRevision.queueId | work_item.handle.completedAt |
First Routed Response Time Total | Sum of firstRoutedResponse.businessTime, grouped by lastRevision.queueId | work_item.firstRoutedResponse.createdAt |
First Routed Response Time Average | Sum of firstRoutedResponse.businessTime, grouped by lastRevision.queueId | work_item.firstRoutedResponse.createdAt |
Wrap-Up Time Total | Sum of wrapUp.businessTime, grouped by lastRevision.queueId | work_item.wrapUp.enteredAt |
Wrap-Up Time Average | Average of wrapUp.businessTime, grouped by lastRevision.queueId | work_item.wrapUp.enteredAt |
Total Conversations | Distinct work_item.id with resourceType: 'conversation', grouped by lastRevision.queueId | work_item.firstEnterQueueAt |
Max Wait Time | Max of lastRevision.queueBusinessTime, grouped by lastRevision.queueId | work_item.lastRevision.acceptedAt |
Average Queue Time | Average of lastRevision.queueBusinessTime, grouped by lastRevision.queueId | work_item.lastRevision.acceptedAt |
Agent Total Handled Items | handledItemCount, grouped by lastRevision.queueId | work_item.handle.completedAt |
Agent Metrics Table | ||
Agent Total Handled Items | handledItemCount, grouped by userId | work_item.handle.completedAt |
Agent Handle Time Average | Average of work_item.handle.businessTime grouped by userId | work_item.handle.completedAt |
Agent Handle Time Total | Sum of work_item.handle.businessTime grouped by userId | work_item.handle.completedAt |
First Routed Response Time Total | Sum of work_item.firstRoutedResponse.businessTime grouped by userId | work_item.firstRoutedResponse.createdAt |
First Routed Response Time Average | Average of work_item.firstRoutedResponse.businessTime grouped by userId | work_item.firstRoutedResponse.createdAt |
Wrap-Up Time Total | Sum of work_session.wrapUp.businessTime grouped by userId | work_session.wrapUp.enteredAt |
Available Time Total | Sum of work_session.totalAvailable.businessTime grouped by userId | work_session.totalAvailable.statusAt |
Unavailable Time Total | Sum of work_session.totalUnavailable.businessTime grouped by userId | work_session.totalUnavailable.statusAt |
Busy Time Total | Sum of work_item.totalBusy.businessTime grouped by userId | work_session.totalBusy.statusAt |