Calls & transcripts
Review every call - read the transcript, see what the agent captured, and use it to make your agent better.
Every call your agents make or answer is saved, word for word. This is where you go to actually hear what happened - not a number on a dashboard, but the real conversation: what the caller said, how the agent replied, what got captured, and how it ended.
Think of it as your call recording book, except you don’t have to listen to anything. Each call is written out as a readable transcript, so you can skim a hundred of them in the time it would take to listen to one. It’s the single best tool you have for spotting what your agent gets right, catching what it gets wrong, and fixing it.
You’ll find it under Analytics → Calls.
Why this page matters more than it looks: dispositions and dashboards tell you what your numbers are. This page tells you why. When a campaign underperforms, the answer is almost always sitting in three or four transcripts.
The calls list
The main screen is a table of every recent call, newest first. Each row is one call, and clicking it opens the full detail on the right. The columns are deliberately kept to the ones you actually scan for:
- Number - the other party’s phone number (or just “Inbound” / “Outbound” when there’s no attributed contact, like a test call). A small coloured dot sits next to it - green for a good outcome, amber for something worth a look, red for a failure or opt-out, grey for neutral - so you can eyeball the health of a whole list without reading a word.
- Agent - which agent handled the call.
- Outcome - the result bucket (“Meeting booked”, “Not interested”, “Callback booked”, “No answer”). If the call has no outcome yet, this falls back to its status. More on outcomes in Dispositions & outcomes.
- Length - how long the call lasted, as
m ss. A string of five-second calls is usually a sign something’s wrong (wrong number, dead air, instant hang-ups). - Cost - what the call cost your wallet, in your base currency. See Billing & wallet.
- Sentiment - a post-call read of the caller’s mood: positive, neutral, or negative. Shown as a “ - “ when a call was never scored. Great for filtering a bad batch down to the calls that actually went sideways.
- When - how long ago the call happened (“12m ago”, “3d ago”).
Calls load 25 at a time; hit Load more at the bottom to pull in older ones. The count on the right (“48 calls”) always reflects whatever your filters have narrowed the list down to.
Filtering and searching
Above the table are three controls to zero in on the calls you care about:
- Search - a free-text box that matches the number, the agent name, and the transcript text itself. This last part is the quietly powerful bit: type “refund” and you’ll surface every call where anyone - caller or agent - said the word “refund”. Type a competitor’s name, a product, an objection (“too expensive”) - if it was said on a call, you can find it.
- Any outcome - narrow to a single result bucket. Show me only the “Meeting booked” calls, or only the “Not interested” ones.
- Any direction - inbound vs outbound. (This only appears once you actually have both kinds of calls.)
The filter dropdowns only offer outcomes and directions that genuinely exist in your data, so you’ll never pick an option that returns nothing.
A useful move: filter to your worst outcome, then sort by reading a few. If “Not interested” is 60% of a campaign, five transcripts will usually tell you whether it’s the list, the pitch, or the opening line.
Exporting
The Export button (top-right) downloads exactly the calls currently on screen - respecting your active filters - as a CSV file. So “export all my booked meetings from this campaign” is: filter to that outcome, click Export. The file includes the call ID, number, contact, agent, direction, channel, outcome, status, duration, cost, sentiment, how many fields were captured, and the start time - ready to drop into a spreadsheet or hand to your team.
For anything programmatic - pulling calls into your own systems on a schedule - use the API or webhooks instead. See CRM & tools for automatic push-out.
A/B results
If any of your agents run two opening lines (an A/B test on the first message), a small A/B results panel appears at the top of the page showing the connect rate for each variant side by side - “Variant A: 22/50 connected (44%)”. This is how you find out which greeting actually keeps people on the line. Openers are set up in the agent builder.
Opening a single call
Click any row and a panel slides in from the right with everything about that one call, split into three tabs: Transcript, Captured, and Details.
The transcript
This is the heart of it - the full back-and-forth, written out turn by turn. Each line is clearly labelled so you always know who’s talking:
- Agent turns are the AI speaking.
- Caller turns are the person on the other end.
Reading top to bottom, it plays out exactly as the conversation did. Beyond the two speakers you’ll occasionally see two other kinds of line woven in:
- Tool lines (shown in italics) - a note that the agent did something mid-call, like booking a meeting, sending a WhatsApp, or handing the call to a human. So when a warm transfer happens you’ll see the moment it stepped out, marked right in the thread. See Tools & actions.
- Citation lines (italic, highlighted) - a marker that the agent looked something up in its knowledge base to answer, so you can tell a grounded answer from an improvised one.
If a call never produced any speech (a no-answer, an instant hang-up), you’ll simply see “No transcript captured for this call” - honest, not a blank guess.
A note on what the transcript covers: this is the conversation between the caller and your AI agent. If a call is warm-transferred to a real person, you’ll see the handoff marked in the thread, but the part of the conversation the caller has with your human colleague isn’t part of this written view.
Captured - the fields your agent pulled out
The Captured tab shows the structured data the agent extracted from the conversation: the things you told it to listen for in the agent builder’s “What to capture” step. Each one shows up as a clean key-and-value pair:
interested yes
callback_at Tuesday 4pm
budget 50000
objection wanted to compare with competitor
This is the difference between “somewhere in a 4-minute call the person mentioned a callback time” and data you can act on. These same fields flow out to your CRM and are what dispositions and reports are built from. If nothing was configured to capture, or the call didn’t surface anything, you’ll see “Nothing was captured on this call”.
Tip: if a field you expected is missing here, the fix is upstream - go back to the agent’s capture settings and make sure it’s actually asking for that value. See Create an agent.
Details - the facts of the call
The Details tab is the metadata: the who, what, and how of the call at a glance.
- Call ID - the unique reference (handy when talking to support or matching against the API).
- Number and Contact - the phone number dialled and the contact’s name if we could resolve it.
- Agent - which agent ran the call.
- Direction - inbound or outbound.
- Channel - how the call was placed, when relevant.
- Status - how the call ended. This is your end-cause: Completed (it ran its course), No answer, Busy, Failed (it couldn’t connect), or Test (a free test call, never counted as a real success or failure). When you’re trying to work out whether a bad batch was people saying no or people never picking up, this is the field that tells you.
- Outcome - the result bucket (the disposition), when one was set.
- Sentiment - the caller’s mood, positive / neutral / negative.
- Variant - which A/B opening line this call used, if it was part of a test.
- Length - the duration, measured from when the call actually started to when it ended.
- Cost - what it cost your wallet.
- Campaign - the campaign it belonged to (blank for inbound or test calls).
- Started - the exact date and time.
About recordings
The record you review day to day is the transcript - the written conversation - because it’s faster to read, searchable, and easy to share. Audio recording is a separate, optional capability that’s off by default: unless recording is turned on for your workspace (and storage is set up), calls simply aren’t recorded, which is why the calls list has no audio column.
Where it is enabled, recordings appear on their own page under Analytics → Recordings - a list with a Play button per call (available once a recording is fully processed) and a Retain until date so you can see when each one is scheduled to be deleted. Recording notices and AI disclosure are handled automatically and spoken in the caller’s language whenever recording is on - see Compliance & data. If you need call audio for your account, talk to us about enabling it.
Using transcripts to make an agent better
This is the payoff. A voice agent is never “done” - it gets good by you reading its calls and tightening its brief. A simple loop that works:
- Filter to a weak outcome. Pick your biggest disappointing bucket - “Not interested”, lots of short calls, a run of negative sentiment.
- Read five transcripts, not one. One call is an anecdote; five is a pattern. You’re looking for the same thing going wrong repeatedly - the agent fumbling the same question, missing the same objection, opening in a way that makes people hang up.
- Name the pattern. “It never handles ‘send me an email instead’.” “It keeps quoting a price we told it not to.” “The opener is too long and people bail before it gets to the point.”
- Fix it in the right place. A recurring objection → add handling in Additional info. A rule it keeps breaking → add a Guardrail. A weak opener → rewrite the First message, or A/B test a new one. All of these live in Create an agent.
- Republish and watch the next batch. Then read those transcripts and see if the pattern’s gone.
The search box is your shortcut here. Instead of reading at random, search the transcript text for the phrase you’re worried about (“email me”, “not now”, “already have one”) and read only the calls where it came up. You’ll find the fix ten times faster.
For calls with real branching - qualify, then pitch, then book - the same reading loop applies, but you tune the individual nodes in the Prompt & flow builder.
Retention & privacy
Call data isn’t kept forever, and it’s not kept against a person’s wishes:
- Retention - transcripts (and recordings, where they exist) are held for as long as your workspace’s retention window says - you choose it in Account → Workspace settings (30 days, 90 days, 180 days, or 1 year; 90 by default). A sweep runs automatically and clears out anything past that window, so you’re never holding call data longer than you intend.
- Erasure - to honour a data-subject request under DPDP, you can erase a specific contact’s personal data, from the console or over the API. It redacts that person’s transcripts and personal details while keeping the aggregate, non-personal numbers intact.
Both are covered in full on Compliance & data.