Find any call, read the transcript and AI summary, see the tools and knowledge it used, and control how long transcripts are kept.
Every call a voice agent makes or answers becomes a record: transcript, AI summary, outcome, the tools it called, the knowledge it cited, and — where recording applies — the audio. This is where you find out what the agent actually did, rather than what you configured it to do.
agents:voice:read permission.Per agent — Agents → Agent Types → Voice Agents, then one of:
All three land on the agent's Calls page (/voice/<agent id>/calls), headed
Calls with "Voice agent · <name>" underneath, plus Refresh and
Back to Voice Agents.
Per contact — open the contact and read their Activity Timeline; calls appear alongside their chats, texts and emails.
Recent activity per agent — click an agent's row on the Agents page to expand a peek of its five most recent calls in the selected date range, with Open all N → to the full list.
The page is built for triage, in three layers.
The KPI row across the top summarises the current range and doubles as a filter — click a card to apply it:
| Card | Meaning |
|---|---|
| Total | Calls in range |
| Active now | Calls in progress right now |
| Resolved | Share of analysed calls that resolved, with the counts in the tooltip. A dash means nothing has been analysed yet — never a fake 0% |
| Escalated | Calls that went to a human |
| Needs review | Calls flagged for a person to look at |
The filter bar holds a search box — "Search by number, status, summary, or call ID" — a date range, a sort control, and a status filter with Live · Open · Completed · Ended · Failed · No answer · Voicemail. The result line tells you how many calls match and says (filtered) when a filter is on.
The list shows one row per call, with pagination underneath. Select rows with their checkboxes for bulk actions.
Start from Needs review and Escalated, not from Total. Those two are where the agent's behaviour is worth your attention.
Click a row to open the call (/calls/<call id>).
The header carries the AI-generated call title, a status or outcome badge, and underneath it the call id, the number of turns and the date. To its right:
On wide screens a rail on the left lists the agent's other calls so you can work through them without going back; on narrower screens that becomes previous/next buttons in the header.
The centre column is the transcript, turn by turn, with the resolved contact's name on their side of the conversation. When the call has a recording, the player sits above it and stays in view while you scroll — see Listening to a recording.
| Card | What it tells you |
|---|---|
| Contact | Who the call was with, with task / note / deal actions. Unlinked? Associate it with a contact from here, or accept the identity suggestion shown |
| AI Summary | What happened, generated after the call |
| Recording | The call's length and Play above the transcript, where a recording exists — or why there is none |
| Outcome | The classified result of the call |
| Call info | From, To, Direction, Company, Placed by (for a human-dialled call), Duration, Started, Ended, why it disconnected — and, for a call raised by a helpdesk journey, links to the originating ticket and orchestration |
| Signals | Signals detected in the conversation |
| Tools used | Every tool the agent called, with arguments and results |
| Knowledge used | Which Tenant Brain concepts the answer drew on, and the queries it ran |
| Token usage | Model usage for the call |
Tools used and Knowledge used are the two that answer "why did it say that?". A wrong answer with no knowledge lookup behind it is a different problem from a wrong answer that cited the wrong published concept — the first is your instructions, the second is your Brain.
Which calls carry audio depends on how the call happened:
| Call type | Recording |
|---|---|
| Outbound telephony | Recorded by the platform |
| Inbound telephony | Recorded by the carrier |
| Browser (web delivery) | Always recorded |
| Agent test runs | Recorded |
Where a recording exists, the player above the transcript plays it. Where one was removed under your retention policy, the player's place says so rather than appearing empty.
The player has what you expect from any audio app:
?t= and the
current second. Whoever opens it lands on the same moment (they still need
access to the call).Click the player once and the keyboard works while it has focus — never while you are typing elsewhere:
| Key | Does |
|---|---|
| Space | Play / pause |
| ← / → | Back / forward 10 seconds |
| Shift + ← / → | Back / forward 30 seconds |
| , / . | Slower / faster |
| ? | Show these keys |
Nothing downloads until someone presses Play, so opening a call page does not fetch its audio. The same player appears, smaller, in the call panel of a contact's record drawer, and on a meeting page with uploaded audio — where the transcript line being spoken is highlighted and followed as it plays, and each line's time plays from there.
Recordings play in current versions of Chrome, Edge, Firefox and Safari (Safari 18.4 or later, on Mac, iPhone and iPad). An older browser shows a message instead of the player.
Recording carries legal obligations that vary by jurisdiction, and often require telling the caller. If your agents record, say so in the greeting or early in the instructions.
Transcripts are kept until your retention policy removes them. There are two places to set that:
Workspace-wide — Settings (the gear icon) → Access & security → Transcript Retention. Unconfigured means kept indefinitely. See Transcript Retention.
Per agent — the Transcript Retention section on the voice agent's Telephony tab. Choose Inherit, a Custom window, or Keep forever. The banner there names the workspace's current mode so you can see what you are overriding.
A removed transcript is a distinct state, not an empty one. The call record survives; the transcript view shows a notice naming the policy and the date it was removed, the recording card says the recording was removed, and Copy and Export are hidden. A call showing that notice is your retention policy working, not a fault.
Retention removes the transcript, the tool call detail and — depending on your policy — summaries and quotes, and optionally the recording.
Summaries, outcomes and analytics come from a post-call analysis pass. If it had not run yet when you looked, wait and refresh. Calls from before an analysis change can be re-analysed so old calls are scored on the same basis as new ones.
For patterns rather than incidents, use ⋯ → Performance & insights on the agent's row: scores for accuracy, tone and efficiency, goal attainment against the Goals you set, and voice runtime tiles — Interruptions / call, Response latency, LLM / TTS first byte and Tool success. That is the right surface for "is this agent getting better?", and for tuning turn-taking; see Turn-Taking, Interruptions and Dead Air.