Agent Metrics

See how Agent Metrics tracks workload, response and resolution times, availability and activity for every human and AI agent, and how to read it.

Overview

Agent Metrics shows how each human agent and AI agent on your team handles conversations: how much work they take on, how fast they respond and resolve, how long they are online, and what actions they take in Revora.

To open it, go to Reports in the left sidebar and select the Agent Metrics tab. The report has three sub-tabs:

Sub-tabWhat it answers
PerformanceHow much did each agent handle, and how fast?
EngagementHow long was each agent online, away or offline?
HistoryWhat exactly did each agent do, and when?

Filters at the top of the page

FilterWhat it doesApplies to
Channel selector (e.g. All Channels)Limits the data to conversations from one or more channels, such as WhatsApp, Messenger or Email.Performance
Date rangeSets the period for the report. Summary cards compare it with the previous period of the same length.All sub-tabs
Business Hour OnlyWhen on, only activity inside your workspace’s configured business hours is counted.Performance, Engagement

Performance: summary cards

Four cards at the top of the Performance tab give a team-wide view for the selected date range and channels.

CardWhat it shows
Avg. First Response TimeAverage wait between a conversation being assigned to an agent and that agent’s first reply.
Avg. Resolution TimeAverage time from an agent’s latest assignment on a conversation to that conversation being resolved.
Avg. Response TimeAverage time agents took to answer each customer message.
Total SalesConversion rate: the share of conversations that led to an order.

Reading the % change

Each card compares the current period with the previous period of the same length (for a 7-day range, the 7 days before it). The percentage is signed by improvement, not by whether the number went up or down:

  • Green / + means performance got better.
  • Red / − means performance got worse.

For time metrics, lower is better. For Total Sales, higher is better.

Example cardThis periodPrevious periodShown asMeaning
Avg. First Response Time5m 30s4m 30s−22.22% (red)Agents took longer to reply.
Avg. Resolution Time2h 00m4h 00m+50.00% (green)Conversations were resolved faster.
Total Sales2.40%2.00%+20.00% (green)More conversations led to an order.

Performance: Agent Performance Metrics table

The table lists every human agent and AI agent with one row each, so you can compare workload, speed and outcomes side by side. Scroll right to see all columns. A -- means there was no activity of that type in the period.

Example view (demo data):

AgentAssignedRepliedResolvedHandoverReassignedReopenedAvg. First Response TimeAvg. Response Time
Support AI Agent2,1402,095310402——5s6s
Sara Khan5206106453821434m 12s2m 40s
Omar Haddad4805525902219066m 05s3m 18s
Lina Farouk12——4————

Numbers in a row don’t have to add up. For example, Resolved can be higher than Assigned, because an agent also resolves conversations they received by transfer (Reassigned) or that belong to a teammate.

Column definitions

Count columns count events. Time columns are averages. Total Sales is a sum. An event is included when it happened inside the selected date range.

ColumnWhat it meansExampleCredited to
AssignedNew conversations given to the agent. Transfers are not included.Agent A is assigned a new conversation → Assigned +1 for A. An unassigned conversation that A assigns to themselves → Assigned +1 for A. A transfers it to B → B’s Assigned does not change (B gets Reassigned +1 instead).The agent the conversation was assigned to
RepliedConversations the agent replied to, counted once per agent per conversation. Private notes don’t count.A replies to a conversation → Replied +1 for A. A sends 5 more messages → no change. A assigns it to B and B replies → Replied +1 for B.The agent who replied
ResolvedConversations the agent closed, whoever they were assigned to.A resolves their conversation → Resolved +1 for A. Supervisor S resolves B’s conversation → Resolved +1 for S, not B.The agent who resolved
HandoverConversations the agent passed to another agent or group.A transfers a conversation to B → Handover +1 for A. An AI agent escalates to A → Handover +1 for the AI agent.The agent who gave it away
ReassignedConversations the agent received by transfer from someone else.A transfers to B, or an admin moves A’s conversation to B → Reassigned +1 for B. B transfers it back to A → Reassigned +1 for A, Handover +1 for B.The agent who received it
ReopenedResolved conversations that were opened again.A resolves a conversation. The customer comes back and S reopens it, assigning B → Reopened +1 for B. If S reopens it with no assignee → Reopened +1 for S. In both cases A, who resolved it, gets no Reopened count.The agent picked at reopen; otherwise the user who reopened it
Avg. First Response TimeAverage wait from the agent getting a conversation to their first reply.A is assigned at 10:00 and replies at 10:02 → 2m. A transfers to B at 10:10, B replies at 10:11 → 1m for B. A replies to a second conversation in 30s → A’s average = (120 + 30) ÷ 2 = 1m 15s.The agent who replied
Avg. Response TimeAverage time the agent took to answer each customer message.Customer writes at 10:00, A replies at 10:01 → 60s. Customer writes at 10:05, A replies at 10:05:20 → 20s. A sends another message at 10:05:40 → not timed. A’s average = (60 + 20) ÷ 2 = 40s.The agent who replied
Avg. Resolution TimeAverage time from the latest assignment to resolution, for conversations the agent closed.A is assigned at 10:00 and resolves at 10:30 → 30m. Another conversation is transferred to B at 10:20 and B resolves at 10:30 → 10m for B.The agent who resolved
Avg. CSATAverage customer rating on the agent’s conversations, using the latest rating per conversation.A’s two conversations are rated 4 and 5 → 4.50. A customer rates 2, then changes it to 4 → only 4 is used.The agent assigned when the rating was given
Total OrdersOrders placed while the conversation was assigned to the agent.A customer orders while assigned to A → +1 for A. After a transfer to B, the customer orders again → +1 for B.The agent assigned when the order was placed
Total SalesMoney value of those orders.A’s conversations bring a $25 order and a $15 order → Total Sales = 40 for A.The agent assigned when the order was placed

Narrowing and exporting the table

  • Agents: show only the agents you pick.
  • Groups: show only agents in the groups you pick.
  • Aggregation: choose how rows are broken down.
    • Default: one row per agent with totals for the whole period.
    • Daily Aggregation: one row per agent per day, to track daily trends.
    • Hourly Aggregation: one row per agent per hour, to see performance within each hour.
  • Export: download the table as it is currently filtered and aggregated.

How response and resolution times are measured

Every reply and resolution records a duration. Each average in the table is the mean of those durations. Human agents and AI agents are timed slightly differently for the first response.

EventHuman agentAI agent
First reply (Avg. First Response Time)Reply time − the time the conversation was assigned to the agentReply time − the time the conversation was created. Only counted for the conversation’s very first response.
Reply (Avg. Response Time)Reply time − whichever is later: the customer’s last message or the agent’s assignment timeSame rule as human agents
Resolve (Avg. Resolution Time)Resolve time − the agent’s latest assignment timeSame rule as human agents

Two things follow from this:

  • A human agent’s clock starts when the conversation reaches them, not when the customer first wrote. Time spent with the AI agent or in a queue is not counted against them.
  • Only the first reply to each customer message is timed. Follow-up messages sent before the customer writes again don’t lower the average.

Engagement tab

The Engagement tab shows how long agents spent in each availability status, so you can check coverage and attendance. The channel selector does not apply here, because status belongs to the agent rather than to a channel.

StatusMeaning
ActiveThe agent’s status was Online.
AwayThe agent set themselves to Away, for example to take a break.
OfflineThe agent was logged out or set to Offline.

Summary cards

Total Active Duration, Total Away Duration and Total Offline Duration add up the time across all agents in the period. Because they are totals across agents, they can exceed the length of the date range: 10 agents online for 8 hours each on one day add up to 3d 8h. Each card shows the change against the previous period of the same length.

Engagement Reports chart

The line chart plots total Active, Away and Offline time per day across the date range, in minutes. Hover over a day to see its exact totals. Use Export to download the chart’s data.

Agent Engagement Overview table

One row per agent shows their time in each status for the period. Example view (demo data):

AgentTotal active durationTotal offline durationTotal away durationTotal breaks takenOccupancy
Sara Khan2d 4h 10m4d 19h 05m45m398.58%
Omar Haddad1d 22h 05m5d 1h 55m0 mins—100.00%
Support AI Agent7d 0h 00m0 mins0 mins—100.00%
ColumnWhat it means
Total active durationTime the agent was Online.
Total offline durationTime the agent was logged out or Offline.
Total away durationTime the agent was set to Away.
Total breaks takenNumber of times the agent switched to Away.
OccupancyShare of the agent’s logged-in time spent Online: Active ÷ (Active + Away). Offline time is not included.

In the demo row above, Sara’s occupancy is 3,130 min ÷ (3,130 + 45) min = 98.58%.

As on the Performance tab, you can filter by Agents, switch between Default, Daily and Hourly aggregation, and Export the table. Use the page controls at the bottom to move through longer agent lists.

History tab

The History tab is an activity log of what each agent, human or AI, did in Revora, newest first. Use it to trace who changed a conversation, when, and from where.

Example view (demo data):

AgentDate TimeConnectorActionConnector TypeEventRemarksIP AddressBrowser Details
Omar HaddadOct 14, 2026, 10:29 AM—readcontentexportDatalab entries for lab_id: 1045 from 2026-10-01 to 2026-10-14 sent to [email protected]——
Support AI AgentOct 14, 2026, 10:19 AMticketupdateagent—[email protected] assigned to agent [email protected]203.0.113.10Python/3.13 aiohttp/3.13.5
Sara KhanOct 14, 2026, 9:46 AMticketupdatecontenthidehidden comment: “Please DM us your order number”——
ColumnWhat it means
AgentThe human or AI agent who performed the action.
Date TimeWhen the action happened.
ConnectorThe item the action was performed on, such as a ticket (conversation).
ActionThe kind of operation, such as read or update.
Connector TypeWhat part of the item was affected, such as the assigned agent or the content.
EventThe specific event, such as export or hide, where one applies.
RemarksA plain-language description of what happened, such as who a conversation was assigned to or what was exported and where it was sent.
IP AddressThe IP address the action came from, when recorded.
Browser DetailsThe browser or client used. Actions made through an API or integration show the client library instead of a browser.

Filtering and sharing

  • Filter the log with Agents, Connector, Actions, Connector type and Event to find a specific change quickly.
  • Send Metrics via Email sends the log for the current filters to your email address.

Reviewing one agent’s performance: a supervisor’s guide

To judge one agent fairly, read their workload, speed, quality, sales and availability together rather than any single column. This section shows which columns answer which question and how to combine them.

Set up the view

  1. Pick the date range you want to review, for example last week.
  2. On the Performance tab, use the Agents filter to select the agent. To compare them with peers, also select their teammates or use Groups.
  3. Turn on Business Hour Only if you want to judge them only on the hours they were expected to work.
  4. Keep Default aggregation for the period’s totals and averages. Switch to Daily or Hourly to spot bad days or slow hours.
  5. Open the Engagement tab with the same agent and date range to see how long they were available.
  6. Use the History tab to look into a specific conversation or action.

Which columns answer which question

QuestionColumns to readHow to read them
How much work did they take on?Assigned + ReassignedAssigned is new conversations; Reassigned is conversations transferred to them. Together they are the agent’s total incoming workload. They never overlap, so you can add them.
How much did they actually work on?RepliedConversations they replied to at least once. Compare with their incoming workload to see if anything went untouched.
How much did they close?ResolvedIncludes conversations they closed for teammates, so it can be higher than their incoming workload.
How much did they pass on?HandoverConversations they transferred away. A high number can mean correct routing or avoiding hard cases; check History to tell which.
How fast did they pick up?Avg. First Response TimeTime from assignment to their first reply. Measures how quickly customers hear from them.
How fast did they keep the conversation going?Avg. Response TimeTime to answer each customer message. Measures responsiveness during the conversation.
How fast did they finish?Avg. Resolution TimeTime from their latest assignment to resolution.
Were customers happy?Avg. CSAT, ReopenedCSAT is the customer’s rating. Reopened shows reopened conversations handed to this agent, not reopens of their own resolved work.
Did they drive sales?Total Orders, Total SalesOrders and order value placed while the conversation was assigned to them.
Were they available?Engagement tab: Total active duration, Total away duration, Total breaks taken, OccupancyContext for all of the above: an agent online 20 hours can’t be compared directly with one online 40 hours.

Ratios worth calculating

The report shows raw counts. These ratios make agents with different workloads comparable.

RatioFormulaWhat it tells you
Incoming workloadAssigned + ReassignedTotal conversations that reached the agent. Use this as the base for the ratios below.
Reply coverageReplied ÷ incoming workloadShare of their conversations they responded to. Low coverage means conversations were left waiting or passed on unanswered.
Handover rateHandover ÷ incoming workloadShare of their conversations they transferred away.
Resolution rateResolved ÷ incoming workloadHow much they close relative to what they receive. It can exceed 100% when they close teammates’ conversations.
Reopened shareReopened ÷ incoming workloadShare of the agent’s workload that came from reopened conversations. It does not measure the quality of their own resolutions: when a conversation they resolved is reopened, the count goes to whoever picks it up, not to them.
Average order valueTotal Sales ÷ Total OrdersTypical value of orders from their conversations.
Conversations per active hourReplied ÷ active hours (Engagement tab)Throughput adjusted for how long they were online.

Combining rows correctly

With Daily or Hourly aggregation, or when you export several periods, you may want one total for the agent.

  • Add up count columns: Assigned, Replied, Resolved, Handover, Reassigned, Reopened, Total Orders, Total Sales, and the Engagement durations and breaks.
  • Don’t add up or simply average the average columns: Avg. First Response Time, Avg. Response Time, Avg. Resolution Time and Avg. CSAT. A quiet day with one reply would count as much as a busy day with 100. To get the true average for a period, set that date range and use Default aggregation instead.
  • Don’t add Resolved to Assigned or Reassigned: Resolved overlaps with both, so adding them double-counts conversations.

Worked example (demo data)

Sara Khan, 7 days, Default aggregation:

AssignedReassignedRepliedResolvedHandoverReopenedAvg. First Response TimeAvg. CSATTotal OrdersTotal SalesActive time
5202146106453834m 12s4.60423,15052h 10m
  • Incoming workload: 520 + 214 = 734 conversations.
  • Reply coverage: 610 ÷ 734 = 83%. About 1 in 6 conversations that reached her got no reply from her; check whether they were handed over (38) or left waiting.
  • Handover rate: 38 ÷ 734 = 5%.
  • Resolution rate: 645 ÷ 734 = 88%.
  • Reopened share: 3 ÷ 734 = 0.4% of her workload came from reopened conversations.
  • Average order value: 3,150 ÷ 42 = 75.
  • Conversations per active hour: 610 ÷ 52.2 = about 11.7.

Together: Sara handled a heavy load, closed most of it, took on few reopened conversations, and kept customers satisfied. The one thing to follow up is the 17% of conversations she didn’t reply to.

FAQ

Why is an agent’s Resolved count higher than their Assigned count? Assigned only counts new conversations. Resolved also includes conversations the agent received by transfer, and ones they closed on behalf of a teammate.

Why does the AI agent’s first response time show only a few seconds? The AI agent replies almost as soon as a conversation is created. Its first response is timed from creation, and only for the conversation’s very first reply.

Does time spent with the AI agent make my human agents look slower? No. A human agent’s response and resolution clocks start when the conversation is assigned to them.

Why does an AI agent show Handover but no Assigned? An AI agent that only escalates conversations to humans records a Handover each time, but may not be assigned conversations directly.

Why don’t the summary cards match an average of the rows? The cards average every individual reply or resolution across the team. Agents who handled more conversations carry more weight than in a simple average of rows.

Why is Total Active Duration longer than my date range? It adds up the active time of every agent. Divide by the number of agents for a rough per-agent figure, or use the Agent Engagement Overview table.

Why is the channel selector greyed out on the Engagement and History tabs? Availability and activity logs belong to the agent, not to a channel, so they can’t be split by channel.

Why doesn’t a reopened conversation count against the agent who resolved it? Reopened is credited to the agent the conversation is assigned to when it’s reopened (or to the person who reopened it, if no one is assigned). The agent who originally resolved it gets no Reopened count.