Every voice AI deployment I have worked on eventually develops two dashboards.
One belongs to engineering. It has p95 latency, word error rate, tool-call failures, endpointing accuracy. It is correct, it is detailed, and no executive has ever read it twice.
The other belongs to the business. It has containment rate, cost per call, CSAT, and a number labelled “annualised savings” that someone computed in a spreadsheet in month one and has been quoting ever since.
The gap between those two dashboards is where voice AI programmes quietly fail. Engineering ships a latency improvement nobody credits. Finance celebrates a containment number that is actually a customer hanging up in frustration. Six months later the renewal conversation goes badly and nobody can say precisely why.
This post is the bridge: the full set of voice AI agent metrics worth capturing in production, organised in five layers, with formulas, published target ranges, and — importantly — how each one gets gamed. I write this from the seat of running deployed engineering for voice agents in home services, where a missed call is not a support ticket, it is a lost job worth several hundred dollars. That framing changes which metrics matter.
If you want the testing and observability side of this — simulation, LLM-as-judge, tracing — I covered that separately in Evals, Testing, and Observability for Voice AI Agents. This post is about what you put on the scorecard after the agent is live.
The Five-Layer Stack
Voice metrics form a causal chain, and reading them out of order is how teams misdiagnose everything.
| Layer | Question it answers | Who cares | Cadence |
|---|---|---|---|
| 1. Mechanics | Does it feel like a conversation? | Engineering | Real-time alerting |
| 2. Comprehension | Did it understand and do the right thing? | Engineering + Ops | Daily |
| 3. Experience | How did the caller feel about it? | Ops + CX | Weekly |
| 4. Compliance | Can this survive an audit? | Legal + Risk | Continuous, 100% audit |
| 5. Money | Is it worth doing? | Finance + Exec | Monthly / quarterly |
The rule: a metric in layer N is only interpretable with the layer below it in view. Containment without repeat-contact rate is a vanity number. CSAT without abandonment is survivorship bias. Cost per contact without resolution is a cost that moved, not a cost that vanished.
Layer 1 — Conversation Mechanics
This layer decides whether the caller experiences a conversation or an interrogation. It is entirely technical and entirely felt.
Turn latency (the one that matters most)
Measure mouth-to-ear: from the moment the caller stops speaking to the moment your agent's audio reaches their ear. Not model time. Not time to first token in isolation. The whole gap, including endpointing delay, ASR finalisation, LLM inference, TTS synthesis, and network transit.
- Human inter-turn gaps in natural conversation sit around 200ms.
- Bluejay reports delays past 800ms associate with roughly 40% higher abandonment.
- Report p50 and p95. Never the mean. The mean hides the 5% of turns where a slow tool call left three seconds of dead air, and those are the calls people remember.
Decompose it into spans so a regression is diagnosable: endpoint_detect → asr_final → llm_first_token → llm_complete → tts_first_byte → audio_out. Nurix calls this response assembly latency, and it is the difference between “the agent got slower” and “our CRM lookup p95 tripled after their deploy.”
End-of-turn detection accuracy
Two failure modes, opposite symptoms, same root metric:
- Premature endpointing — the agent interrupts a caller mid-thought. Feels rude.
- Late endpointing — the agent waits after the caller finished. Feels slow or broken.
Track both as separate rates, not one accuracy score, because the fixes point in opposite directions. This gets far worse with callers who pause mid-sentence to read a card number or check an address — exactly the moments where an interruption is most costly.
Barge-in and stop time
When a caller interrupts, how fast does the agent actually stop talking, and does it retain the context of what it was saying? Cekura notes agents typically resume within about two seconds. An agent that plows through an interruption is the single fastest way to make a caller hang up.
Pace and talk ratio
- Words per minute. Production agents cluster around 200 WPM; Cekura's evaluation found more than half of agents pace above 190 WPM, at the top of natural conversational range. Fast reads as robotic and hurts comprehension for older callers and non-native speakers.
- Talk ratio — agent speaking time over total speaking time. Past 0.80 the agent starts to feel domineering. A high talk ratio usually means over-long confirmations and prompt bloat, both fixable.
Dead air / silence rate
Percentage of calls containing a silence gap over a threshold. Retell suggests alerting on silences over 3 seconds. In practice I would alert lower — 2 seconds of unexplained silence on a phone call already reads as a dropped line, and callers say “hello? hello?” which then becomes a spurious turn your ASR has to handle.
Composite scores like Bluejay's Voice Agent Quality Index — a 0–100 blend of interruptions, missed response windows, and latency — are useful for trend lines and vendor comparison. They are useless for debugging. Keep the composite for the exec deck and the components for the on-call.
Layer 2 — Comprehension and Correctness
Mechanics decide whether the caller stays. This layer decides whether staying was worth it.
Transcription accuracy — but weighted
Word error rate is the standard ASR measure, and it is close to useless unweighted. Cekura puts it well: 99% WER is not enough if the missed word is “cancel” rather than “confirm.”
Track critical-token error rate alongside raw WER: errors on names, addresses, dates, monetary amounts, phone numbers, and the small set of decisive verbs in your domain. Weight those fully; weight filler words at zero. For tonal or morphologically rich languages, character error rate is the better base measure.
Intent recognition accuracy and coverage
Two different numbers that teams constantly conflate:
- Accuracy — of the intents you support, how often do you pick the right one? Published targets: CloudTalk suggests 90%+ on top intents, 80%+ on the long tail; Bluejay puts enterprise launch expectations at 80–85%.
- Coverage —
(calls landing in a fully supported intent ÷ total calls) × 100. This is the ceiling on containment. You cannot automate what you have not modelled, and no amount of prompt tuning raises it.
Coverage is the metric that tells you what to build next. If 12% of calls are “reschedule an existing appointment” and you do not support it, that is a roadmap item, not a model problem.
Semantic accuracy
Distinct from both WER and intent classification: did the agent grasp the meaning, including implication and correction? Nurix's formulation is (correct intent or workflow selections ÷ audited utterances) × 100, with launch expectations in the 80–85% band and 90%+ as the mature target.
The failure this catches: a caller says “I need someone out tomorrow, actually make it Thursday.” Perfect transcription, correct intent, wrong date. WER says 0%. Intent accuracy says pass. The customer gets a truck on the wrong day.
Task success rate
The metric I trust most in this layer, and the one that requires real engineering to capture: did the thing the caller wanted actually happen in the system of record?
Not “the agent said it booked the appointment.” Did the appointment appear in the CRM, with the right customer, at the right time, and did the confirmation send? Nurix calls this outcome-verified — verify against downstream state, not against the transcript. Every voice team I know overestimates its success rate until it starts doing this, usually by 10–20 points.
Hallucination rate
Percentage of calls where the agent asserted a fact, policy, price, or capability not supported by its knowledge source. Bluejay cites research finding roughly 1% of audio transcriptions containing entirely fabricated phrases — and that is at the transcription layer, before the LLM adds its own.
In regulated or price-quoting contexts this is a release blocker, not a KPI. Grade it per node, not per call, so you know which part of the flow invents things.
Workflow adherence and instruction following
Did the agent follow the prescribed flow — collect consent before recording, verify identity before disclosing account details, offer the required alternatives before closing? Cekura reports that more than 20% of runs flag some form of workflow adherence gap, and that instruction-following failures at multi-step gates dominate the flagged categories.
That number should be sobering. Aggregate quality scores routinely look fine while the agent is quietly skipping steps.
Context retention
Does the agent remember what the caller said four turns ago? CloudTalk names forced repetition as “the single most consistent complaint” about voice AI. Measure it as the rate of calls where the agent re-asks for information already provided. It is a simple transcript-level check and it correlates brutally well with CSAT.
Fallback rate — read carefully
The share of turns where the agent asks the caller to repeat or rephrase. Some fallback is healthy: an agent that asks for clarification instead of guessing is behaving correctly. A fallback rate of zero next to a mediocre task success rate means your agent is confidently wrong. Read fallback against task success, never alone.
Layer 3 — Customer Experience
These are the metrics your customers would recognise as being about them.
CSAT, CES, NPS — and how to not fool yourself
- CSAT — post-call satisfaction. Must be segmented by intent, by outcome, and by time of day. A single blended score hides the fact that your agent is excellent at appointment lookups and terrible at billing disputes.
- CES (Customer Effort Score) — how hard was it to get the thing done. CloudTalk argues this is the most apt measure for voice AI specifically, because the entire promise of automation is easier, and I agree. If I could only keep one survey metric, it would be this one.
- NPS — brand-level, slow-moving. Useful as a before/after guardrail for the deployment as a whole, not as an operational metric.
The trap in all three is survivorship. Surveys only reach people who stayed on the line. Your angriest callers hung up at turn two and will never take your survey. Always report survey scores next to abandonment.
Abandonment and disconnection reason
Percentage of calls the caller ends before resolution — and critically, where. Bucket disconnections by turn index and by preceding event:
- Abandoned in the first 3 turns → your greeting, your latency, or the fact that they wanted a human immediately.
- Abandoned mid-flow after a long pause → a mechanics problem, look at layer 1.
- Abandoned after a repeat question → context retention.
Retell's framing of tracking disconnection reason is right: the raw abandonment rate tells you that you have a problem, the bucketing tells you which team owns it.
Sentiment trajectory, not sentiment
A snapshot sentiment score is nearly meaningless — people who call support are already annoyed. What matters is the slope. Nurix frames this as sentiment trajectory; CloudTalk as sentiment shift score. Negative-to-positive is genuine de-escalation and is worth celebrating. Neutral-to-negative at a specific turn index is a bug with a line number.
The high-value derived metric: percentage of calls with a negative sentiment slope after a specific event type (a transfer offer, an authentication step, a hold). That is a prioritised fix list generated automatically.
Frustration signals
The voice equivalent of Pendo's “rage prompting”: repeated reformulations, raised volume, profanity, and the universal tell — a caller saying “agent,” “representative,” or “human” repeatedly. That last one deserves its own counter. It is the cleanest signal of automation rejection you will ever get, and it needs no model to detect.
Time to first help
How long before the caller receives actual value rather than greeting, disclosure, and menu. Early friction is where callers bail. If your compliance disclosure runs 14 seconds before the caller can say anything, that is a measurable, negotiable cost.
Repeat contact rate
Percentage of callers who contact again within 72 hours about the same issue. CloudTalk targets under 10% and calls it “the audit trail,” which is exactly right. This single metric is what keeps containment honest, and it belongs on both the CX and the finance dashboard.
Layer 4 — Compliance and Risk
These are pass/fail, not KPIs to optimise. Treat any non-zero value as an incident.
| Metric | What it measures | Target |
|---|---|---|
| Disclosure adherence | Required statements (recording notice, AI disclosure, mini-Miranda, consent) delivered correctly | 100%, 100% auditable |
| PII handling failures | Sensitive data masked in logs, excluded from training, correctly scoped in transcripts | Zero |
| High-risk escalation catch rate | Fraud signals, vulnerable callers, safety/self-harm language correctly routed to a human | 100% catch |
| Hallucination in regulated flows | Fabricated policy, pricing, eligibility, or legal statements | Zero |
| Recording & retention conformance | Storage duration, jurisdiction, deletion-on-request honoured | 100% |
Cekura reports safety and compliance evaluators flagging more than 20% of calls in regulated verticals. If your compliance dashboard shows zero, the most likely explanation is that you are not measuring, not that you are clean.
One practical note: disclosure adherence is one of the few voice metrics where you can and should audit 100% of calls rather than sampling. It is a deterministic string-and-position check, it is cheap, and “we sampled 5%” is not a defence anyone accepts.
Layer 5 — The Money
Here is where most voice AI reporting goes wrong, so let me be blunt about the central failure.
Containment is not savings. Resolved containment is savings.
Containment, honestly
Raw containment rate is (calls handled end-to-end by AI ÷ total calls) × 100. Published ranges: CloudTalk puts mature deployments at 50–70%, Bluejay puts leaders above 70%.
Raw containment is also the easiest metric in this entire post to game. An agent that simply refuses to transfer contains 100% of calls. So does an agent so unpleasant that callers hang up — those count as contained, because no human touched them. The honest version:
Resolved containment = (AI-handled calls − abandoned calls − repeat contacts within 72h) ÷ total calls
Report both. The gap between raw and resolved containment is the most diagnostic single number on the finance dashboard. In deployments I have seen, a 70% raw containment can resolve to 55% honest containment, and the 15-point gap is precisely the work still to do.
First call resolution
(issues resolved on first contact with verified downstream action ÷ total calls) × 100. Published benchmarks converge: 70–85% for mature deployments, 80%+ as world-class (CloudTalk, Retell, Bluejay all land in this band).
The word doing the work is verified. FCR computed from “the agent did not transfer” is containment wearing a nicer name.
Escalation, split two ways
CloudTalk's split here is the most useful thing in any of these sources:
- Planned escalation — the flow is designed to hand off (complex quote, legal issue, VIP account). This is a feature. It should not be minimised.
- Forced escalation — the agent failed. Target under 10%.
Reporting them as one number means every product decision to add a deliberate handoff looks like a regression. Split them on day one.
Then measure transfer success rate — escalations where the human resolved it with full context carried over. CloudTalk targets 85%+. A transfer where the human says “can you tell me what this is about?” has destroyed most of the value of the AI leg and doubled the caller's effort. Also track time to handoff: a forced escalation at turn 2 costs 20 seconds; one at turn 12 costs the caller's patience and your margin.
Handle time — with a caveat
AHT should fall relative to the human baseline; Retell suggests effective agents reduce it 20–30%, and Cekura cites a customer case at 40% lower handle time. But CloudTalk's caveat is the one to internalise: “a 90-second average that resolves the issue beats a 60-second average that ends in a transfer.”
Never optimise AHT directly. Optimise resolved containment and let AHT fall out. AHT as a target produces agents that rush callers off the phone.
Cost per contact vs cost per resolved contact
Cost per contact is total operational cost ÷ contacts handled. Typical figures cited: AI-handled calls under $1, human-handled $5–15 (CloudTalk); Deloitte Digital's figure via Bluejay is a 9–25% cost-per-contact reduction within 3–6 months.
But the metric to actually run the business on is cost per resolved contact:
Cost per resolved contact = (AI platform + telephony + LLM/ASR/TTS usage + integration & tuning labour + human cost of escalations and repeat contacts) ÷ resolved contacts
That denominator change is the whole game. A cheap agent that resolves half its calls has a cost per resolved contact roughly double its cost per contact, plus the human cost it pushed downstream. I have watched a deployment report an 80% cost reduction while the contact centre's headcount did not move — because the failed calls came back as second contacts, and second contacts are handled by humans on longer, angrier calls.
The revenue side — the half everyone skips
Cost reduction is the default frame for contact-centre AI, and for a home-services business it is the less interesting half. When a plumbing company misses 30% of its inbound calls because the office is on a job site, the voice agent is not a cost-reduction tool. It is a revenue-capture tool.
- Answer rate — inbound calls answered ÷ inbound calls received. Pre-AI baselines of 60–75% are common in SMB service businesses. Going to ~100% is the single largest financial effect of deployment and it never shows up on a cost-per-contact chart.
- Booking / conversion rate per answered call — the AI agent's close rate on qualified demand. Compare against your human baseline honestly, segmented by intent.
- Revenue per answered call —
(bookings × average job value × show rate) ÷ answered calls. This is the number that makes a CFO care. - After-hours capture — revenue from calls outside business hours that previously went to voicemail. Usually pure incremental.
- Lead qualification accuracy — of leads the AI marked qualified, how many actually were? An agent that books unqualified jobs is generating negative revenue via wasted truck rolls.
- Recovery rate — for collections use cases, contactability, promise-to-pay rate, and value recovered per call (Rootlenses covers this pattern well).
The ROI equation, written out
Most published ROI formulas are just (gains − costs) ÷ costs, which is true and unhelpful. Here is the version with the terms teams actually forget:
Monthly value = [ resolved_AI_calls × (loaded_human_cost_per_call − AI_cost_per_call) ]
+ [ incremental_answered_calls × booking_rate × avg_job_value × margin ]
− [ failed_containments × (rework_call_cost + churn_risk_cost) ]
− [ monthly_tuning_and_ops_labour ]
Three notes on using it:
- Loaded human cost means salary plus benefits, supervision, QA, training, attrition, and idle time — not hourly wage. Contact-centre labour typically runs 60–70% of total cost, so this term dominates.
- The rework term is not optional. It is what converts a moved cost into an honest one. If you cannot measure it, use repeat contact rate as a proxy.
- Tuning labour is real and ongoing. Someone reviews flagged calls, adjusts prompts, adds intents. Budget it or your ROI is fiction. Published payback claims — Bluejay cites vendor figures of 200–300% ROI in 12–18 months and 60–90 day payback targets — are achievable but assume this work is happening.
Treat all vendor-published benchmark numbers in this post, mine included, as calibration ranges rather than promises. Every one of them comes from a company that sells voice AI, measured on deployments that succeeded.
The One-Page Scorecard
If you steal one thing from this post, steal this table. It is what I would put on a wall.
| Metric | Formula / definition | Target | Read against |
|---|---|---|---|
| Turn latency (p95) | Caller speech end → agent audio out | < 800ms | Abandonment |
| Interruption rate | Turns where agent cut caller off ÷ turns | Trend down | Endpointing config |
| Talk ratio | Agent speech time ÷ total speech time | < 0.80 | CSAT, prompt length |
| Critical-token error rate | Errors on names/numbers/dates ÷ critical tokens | As low as achievable | Task success |
| Intent coverage | Calls in supported intents ÷ total calls | Ceiling on containment | Roadmap |
| Intent accuracy | Correct intent ÷ classified intents | 90%+ top, 80%+ tail | Fallback rate |
| Task success (verified) | Downstream state correct ÷ attempted tasks | Highest-trust metric | Repeat contact |
| Hallucination rate | Calls with unsupported assertions ÷ calls | ~0 in regulated flows | Knowledge coverage |
| Workflow adherence | Calls following required flow ÷ calls | > 95% | Compliance audit |
| Abandonment | Caller-ended before resolution ÷ calls | Trend down, bucketed by turn | Latency, CSAT |
| Customer Effort Score | Post-call ease rating | Beat human baseline | Abandonment |
| Sentiment slope | Change start → end, by event | Non-negative | Turn-level events |
| Repeat contact (72h) | Same-issue recontacts ÷ resolved calls | < 10% | Containment |
| Raw containment | AI-only calls ÷ total calls | 50–70%+ | Always with the next row |
| Resolved containment | Contained − abandoned − recontacts | The real number | Cost model |
| Forced escalation | Failure handoffs ÷ calls | < 10% | Planned escalation |
| Transfer success | Escalations resolved with context ÷ escalations | 85%+ | Handoff payload quality |
| Cost per resolved contact | All-in cost ÷ resolved contacts | Beat loaded human cost | Repeat contact |
| Answer rate | Answered ÷ offered inbound | → 100% | Revenue per call |
| Revenue per answered call | Bookings × job value × show rate ÷ calls | Grow | Qualification accuracy |
| Disclosure adherence | Compliant calls ÷ calls | 100% | Audit sampling = 100% |
Instrumenting It Without Building a Data Team
Four things make this tractable:
1. One trace per conversation, spans per stage. Every call gets an ID that survives into your CRM, your ticketing system, and your billing records. Without that join key you can compute layer 1 and 2 forever and never reach layer 5. Getting this right on day one is worth more than any individual metric.
2. Verify outcomes downstream, not in the transcript. After the call ends, check the system of record. Did the appointment exist? Did the payment post? This is a background job, it is not hard to write, and it is the difference between measuring what your agent claimed and what your agent did.
3. Automated grading with a calibrated human sample. LLM-as-judge scales to 100% of calls for subjective metrics. It also drifts. Keep a weekly human-audited sample — 30 to 50 calls is enough — and measure agreement between judge and human. If agreement falls, your dashboard has been lying for however long it has been drifting. I go into calibration in more depth in the observability field guide.
4. Segment everything by intent. A blended dashboard tells you the agent is “85% good.” A segmented one tells you it is 96% on appointment lookups, 91% on rescheduling, and 48% on billing disputes — which is an actionable sentence and a decision about where to route.
The Metrics That Lie
A short list of traps, because most of the damage in voice AI reporting comes from a handful of repeat offenders.
- Raw containment. Gamed by refusing to transfer, and inflated by callers hanging up. Always with repeat contact.
- Average latency. Hides the tail that ruins calls. Use p95.
- Unweighted WER. A 2% error rate concentrated on account numbers is a catastrophe; the same rate on filler words is nothing.
- CSAT alone. Survivorship bias. The people who hated it left before the survey.
- AHT as a target. Rewards rushing. Make it an output, not a goal.
- Blended anything. One score across all intents is the statistical equivalent of an average temperature across all your customers' houses.
- Cost per contact. Right denominator, wrong one. Resolved contacts is the honest denominator.
- Month-one savings extrapolated to a year. The tuning cost is front-loaded and the failure cost is back-loaded. Both bite later.
How I Would Sequence This
You do not instrument twenty metrics on day one. Order of operations:
- Week 1 — trace ID, p95 latency, abandonment, transfer rate, and a 100% disclosure-adherence check. This is enough to know if you are hurting anyone.
- Weeks 2–4 — verified task success and repeat contact rate. Now you can tell resolution from deflection.
- Month 2 — intent coverage and per-intent segmentation. This generates your roadmap.
- Month 3 — the money layer: resolved containment, cost per resolved contact, revenue per answered call. Only now do you have a defensible ROI number.
- Ongoing — sentiment slope, CES, workflow adherence, judge calibration.
Anyone who quotes you an ROI number in week 1 is quoting containment. That is the whole trick.
A Closing Rule
The best voice AI scorecard I have seen fit on one screen and had a strict rule attached: every business metric had to be traceable to a conversation-level metric that engineering could move. If cost per resolved contact went up, you could click through to the intent, then to the flow, then to the turn where callers started leaving.
That traceability is the entire point of measuring five layers instead of one. Containment tells you what happened. Latency, comprehension, and sentiment tell you why. The money layer tells you whether to keep going.
Measure all five, keep the honest denominators, and never let a number reach the board that you cannot follow back down to a single bad call.
Sources & Further Reading
The published benchmark ranges cited above come from these vendor and analyst write-ups. They are the best public compilations available, and every one of them is written by a party with an interest in the answer — read them as calibration, not as ground truth:
- Nurix — AI voice agent metrics for customer service (semantic accuracy, intent coverage, response assembly latency)
- Bluejay — Metrics every voice AI team should track (turn latency thresholds, VAQI, hallucination and cost benchmarks)
- Pendo — Essential KPIs for measuring AI agent performance (adoption, retention, rage prompting, time to complete)
- Cekura — Voice AI evaluation metrics (WER weighting, workflow adherence, multilingual test matrices)
- Retell AI — Top voice agent customer service metrics (silence detection, handoff typing, disconnection reason)
- CloudTalk — AI voice agent KPIs (planned vs forced escalation, transfer success, cost per resolved call, compliance metrics)
- Rootlenses — KPIs you should measure for an AI voice agent (conversion and collections recovery patterns)
And from this blog, the adjacent pieces: Evals, Testing, and Observability for Voice AI Agents for the pre-production side, What Are Evals? for the plain-English introduction, A Dummy's Guide to Evals for AI Agents if you are starting from zero, and Bayesian and Sequential A/B Testing for how to decide whether a metric actually moved.
~ Comments & Discussion ~
Have thoughts on this post? Join the discussion below! Comments are powered by Disqus.