Agents

Agent analytics

Every metric the portal shows for an agent, its exact definition, and what each one leaves out.

Every number on this page is counted while conversations run. None of it is derived from an agent's configuration, from a summary or from a tag. This page gives each metric its exact definition and what it deliberately leaves out, so that two numbers that look like they should agree can be checked instead of guessed at.

Where the numbers appear

Screen What it shows
The agent's Overview tab Five cards about one agent
The agent's Conversations tab Unique users and Resolved, both marked 30d
General Overview on the Agents page Six metric tabs, one chart and four panels, across the whole workspace
A connected channel's detail Five cards about one channel on one agent

The agent overview tab describes the layout of the first of these. This page describes what the numbers mean.

How a number is counted

Every metric is a sum over hours. Each hour is a UTC hour, and the hour an event lands in depends on the event.

Event What it adds Which hour
A conversation opens One conversation The hour it started
A conversation closes One failed conversation when its status is failed, otherwise one resolved conversation. For a call, the seconds from its start to its last turn, or zero when it took no turn The hour it ended
A message is recorded One message in or out, a failed send when an outbound message failed to deliver, and a response time when the message measured one The message's own time
A turn is recorded One turn, its credits, the model's share of them, and its tool calls. On a call only, the model's own time for that turn also counts as a response time The hour the turn happened

Two consequences follow. A conversation is counted as a conversation in the hour it opened and as resolved or failed in the hour it closed, which can be a different hour, a different day or a different window. And a call's measured seconds run from its start to its last turn, never to the moment it hung up, so silence at the end of a call is not counted.

Each turn is counted once. Where a count here and the conversation list disagree, the conversation list is the record.

The agent's five cards

One agent, a rolling window of 30 days by default.

Label Definition Not counted
Voice calls Voice conversations that started inside the window Text conversations. Whether the call ever closed makes no difference
Text conversations Text conversations that started inside the window Voice calls
Unique customers Distinct contacts across conversations that started inside the window Any conversation with no contact id, which is how a call started from the playground is recorded. One person reaching the agent on two channels counts twice, because a contact id belongs to a channel
Avg. call duration Voice seconds in the window divided by the calls that closed in it, rounded to a second. Shown as Ns under a minute and Nm Ns above it Text conversations. Calls still running. The gap between a call's last turn and its hangup. A window that closed no call reads 0s
Credits used Credits charged since the first of the current calendar month, in UTC Everything before this calendar month, including the earlier part of the 30 day window. This is the only card that ignores the window

The same window also gives a resolution rate.

Value Definition Not counted
Resolved on the Conversations tab Conversations that closed without failing, over the conversations that closed either way, as a whole percentage Conversations still open. A window that closed nothing shows a dash. A conversation that ran out of credits counts as resolved, because only failed counts as a failure

The resolution rate is shown on the Conversations tab, not on the Overview tab.

The workspace summary cards

General Overview on the Agents page, over a window you pick, across every agent unless you filter to some. The six metric tabs double as the chart's tabs. A metric with nothing behind it shows --.

Label Definition Not counted
Number of conversations Voice conversations plus text conversations that started in the window Whether any of them closed
Average Call duration Voice seconds in the window divided by the voice conversations that started in it, rounded to a second Text conversations. A window with no call reads --. Note the divisor: the agent's own Avg. call duration card divides by the calls that closed, so the two cards can differ over the same window
Text conversations Text conversations that started in the window Voice calls
Credits used Every credit charged in the window, both session types together, shown as N Credit Credits charged outside the window, including in a conversation that spans its edge
Ave. credits per conversation Credits used divided by conversations, shown in whole credits A window with no conversation reads --
Total LLM cost The model's share of the credits charged in the window. Each turn's share is a whole number of credits, rounded when the turn is charged; they are added up Conversations from before the model's share was measured per turn. A window holding only those reads -- rather than claiming the model was free. This is always shown in credits, never in a provider's currency

The chart

One line chart under the six tabs. Selecting a tab changes the metric it plots.

Tab Chart heading Shape
Number of conversations Number of conversations A count per bucket
Average Call duration Total call duration A total of voice seconds per bucket, not the average the card above shows
Text conversations Text conversations A count per bucket, text conversations only
Credits used Credits used A total per bucket
Ave. credits per conversation Ave. credits per conversation A ratio per bucket, weighted by the conversations in it
Total LLM cost Total LLM cost A total per bucket, omitted where no turn in the bucket measured a share

An empty bucket is treated differently by metric. Number of conversations, Text conversations, Credits used and Total call duration are drawn as zero across every bucket in the window you picked, so the line spans the whole range rather than starting at the first bucket with traffic. The ratio metric and Total LLM cost are not: no conversations means no average, and an unmeasured hour is not a zero, so those buckets do not appear on the line.

Two controls shape it.

Control Options Behaviour
Granularity Hourly, 4 Hours, Day, Week The portal opens on 4 Hours. A week bucket starts on Monday, in UTC. A chart shows at most 400 points: when the range you pick would need more, the granularity widens one step at a time until it fits, so hourly over a long range is drawn daily or weekly instead
Group by One line for everything, or one per channel, per agent, or per session type It reads All channels when no channel is picked. Grouping by agent with a set of agents chosen draws a line for each of them, including an agent that recorded nothing

The Agent filter lists active agents only. An archived agent gets no entry and no line, although its conversations still count in every total that is not filtered by agent.

The four panels

Panel Definition Not counted
Overall Success Rate Conversations that closed without failing, over the conversations that closed either way, as a whole percentage. The donut legend splits it into Success Rate and Unsuccessful Rate Conversations still open. A window that closed nothing shows No data has been collected
Agent Response Time Total response milliseconds over the number of measurements, as a weighted average across hours A call contributes the model's own time on each turn and a text conversation contributes the latency measured on each outbound message, never both for one conversation. A window with no measurement shows no value
Total Conversation Duration Voice seconds in the window Text conversations, which measure no duration. A window in which no call closed shows no value rather than zero
Average CSAT Rating Customer satisfaction is not measured today, so the panel always reads No data has been collected Every conversation

One channel's five cards

One agent on one connected account, over a rolling window of 30 days by default.

Label Definition Not counted
Conversations Conversations that started in the window on this account Conversations on the same channel type through a different account
Messages Inbound plus outbound messages recorded in the window Nothing is separated out: a failed outbound message is still a message
Unique users Distinct contacts on this account Conversations with no contact id
Failed Failed conversations over the conversations that closed either way, as a percentage A window that closed nothing reads 0%, the opposite of the agent card, which shows a dash in the same situation
Avg. response time Total response milliseconds over the number of measurements, shown as N sec A window with no measurement reads 0.0 sec

The same window also gives the resolved percentage shown as Resolved above that channel's conversation list.

Time ranges

Query How the window is set Bounds
The agent's cards, one channel's cards A days count, 30 by default At least 1 and at most 90. The window starts exactly that many days before now, so it is a rolling window and not a calendar one
The workspace summary, chart and panels A from and a to, both required, both ISO instants, both inclusive No limit on the span. The granularity widens instead

Credits used on the agent's cards is the exception to all of this. It is measured from the first of the current calendar month in UTC and ignores the days value entirely.

The workspace queries also accept a set of agents, a set of channel types and one session type, and every one of them narrows the same counts.

The date control offers Last 1 hour, Last 6 hours, Last 24 hours, Yesterday, Today, Last 7 days, Last 30 days, Last 90 days and a Custom range, and it opens on Last 7 days. It stamps UTC+3 beside the range and its calendar footer reads Africa/Cairo (UTC+3), but the range you pick is applied in UTC hours. A day on the chart is a UTC day.

Get it right

Two cards with a similar name can use different divisors and different windows. Compare a number against the same card over the same window.

Recommended

  • Compare this month's Credits used on the agent card with last month's on the same card.
  • Compare Average Call duration on General Overview across two windows of the same length.

Less effective

  • Comparing the agent's Avg. call duration, divided by calls that closed, with the workspace's Average Call duration, divided by calls that started, and expecting them to match.
  • Comparing the agent's Credits used, which counts from the first of the month, with the workspace's Credits used over Last 30 days.

What is not counted

  • Conversations with no contact id in Unique customers and Unique users.
  • The tail of a call, from its last turn to the hangup, in every duration metric.
  • Text conversations in every duration metric.
  • Archived agents in the workspace Agent filter, although their conversations stay in every total.
  • Conversations from before the model's share was measured per turn. They show -- for Total LLM cost rather than zero.
  • Summaries, tags and transcript text. No metric reads them. See Transcripts and summaries.
  • Customer satisfaction. Nothing measures it.

When a number fails to load

The workspace dashboard shows Unable to load agent analytics. with a Retry, and each panel that has no data of its own reads No data has been collected. A failed load and an empty window look different on purpose: a panel that failed reads Analytics are currently unavailable instead.

On the agent's Overview tab, a failed load replaces the cards and the recent conversations together with a retry.

FAQ

Why does Credits used on the agent ignore the 30 day window?

It is measured from the first of the current calendar month in UTC, so it matches the month's bill rather than the rolling window the other four cards use.

Do playground sessions count?

Yes. A Chat test counts as a text conversation and a Call test as a voice call, with their credits. A Call test has no contact id, so it does not count as a unique customer.

Why is a day on the chart not my local day?

Buckets are UTC hours and a day is a UTC day. The date control shows UTC+3 beside the range, but the range is applied in UTC.

Why does an agent I archived still count?

Its conversations stay in every total. Only the Agent filter leaves it out, because the filter lists active agents.

Why does a conversation that ran out of credits count as a success?

Only a conversation that closed with the status failed counts as a failure. A conversation cut off by an exhausted balance closed without an error, so Resolved and Overall Success Rate both count it as resolved.