Summarise this article with
TL;DR
- Track 8 KPIs that show whether the agent is working, not just busy.
- Count only real conversations, so spam and silent calls can’t flatter the numbers.
- Check transfers and bookings in your phone system and calendar, not the agent’s own log.
- Judge results against your own pre-launch baseline, not a vendor benchmark.
- At small call volumes, compare four-week totals instead of reacting to one week.
- Use cost per resolved call, not cost per minute, and review weekly with one fix at a time.
Your dashboard says the agent handled most calls. But a customer says the line disconnected, a transfer never reached your team, or an appointment appeared without the right details. Which version should you trust?
Trust the one you can verify against what actually happened on the call. A “handled” count only shows that the agent picked up and responded. It can’t tell you whether the line stayed connected, whether the transfer reached a person, or whether the booking was right. One headline number will always hide those gaps, so you need to measure outcomes, not attempts. These 8 AI voice agent KPIs do that: answer rate, handled-without-staff rate, mid-call hang-up rate, transfers that reached a person, bookings correct and kept, repeat calls within 7 days, cost per resolved call, and listened-call pass rate. Together, they tell you what happened, not merely what the agent attempted.
8 AI Agent Performance Metrics
| KPI | The question it answers | How to calculate it | What can make it look better than it is | Check it against |
| Answer rate | Of the calls that rang, how many got picked up? | Calls answered by the agent ÷ calls that rang your number | Measured from the agent’s own log, which never sees calls that didn’t reach it | Your phone system’s or carrier’s record of every call that rang |
| Handled without staff (stricter than containment) | How many real callers got what they called for with nobody on your team involved? | Calls with a completed outcome and no transfer ÷ real conversations | Counting hang-ups and silent calls as handled | Repeat calls and mid-call hang-ups |
| Mid-call hang-ups | How often do real callers give up before getting an outcome? | Real conversations that end in a caller hang-up with no outcome ÷ real conversations | Hiding short calls inside an average call length | Your weekly listened calls |
| Transfers that reached a person | When the agent hands off, does someone actually pick up? | Transfers answered by a staff member ÷ transfer attempts | The agent’s own log marking a transfer “successful” | Your phone system’s record of the answered call |
| Bookings correct and kept | Are the appointments the agent books real, correct, and attended? | Bookings correct in the calendar and attended ÷ bookings the agent reported | Counting “booking created” as success | Show rate for appointments your staff booked |
| Repeat calls within 7 days | Did the calls it “handled” actually fix the problem? | Handled callers who call back about the same thing within 7 days ÷ calls handled without staff | Not matching callers by phone number | Handled-without-staff rate |
| Cost per resolved call | What does each call that it actually fixes cost you? | Total agent cost for the period ÷ calls handled without staff | Dividing by all calls or by minutes | What the same outcome cost before |
| Listened-call pass rate | Would you be happy if this were your best customer’s call? | Reviewed calls you’d pass ÷ calls reviewed (10–20 a week, picked at random) | Only reviewing calls the dashboard flags as good | Complaints and reviews that mention your phone |
Repeat calls within 7 days is the AI-agent version of first-call resolution (FCR), the measure human teams have used for years. Once you have a few hundred surveyed calls a month, add customer satisfaction (CSAT) on handled calls and compare it with transferred calls.
If the agent answers inbound calls
In the first month, check whether the agent is set up correctly before you judge how well it performs. Most early problems are setup problems, not performance problems, and these three KPIs expose them fastest. Answer rate shows whether calls are reaching the agent at all. Handled-without-staff rate shows whether it has the knowledge and call flows to finish what it starts. Correct, kept bookings show whether it is writing the right details into your calendar. They are also the numbers you bought the agent to move, so if one is off, you know exactly where to fix it.
If the agent makes outbound calls
Swap four rows. Answer rate becomes connect rate, which is calls a person picked up ÷ calls dialed. Handled without staff becomes outcome per 100 connected calls, whether that is bookings, qualified leads, or confirmed renewals. Bookings correct and kept stays as it is.
Then add two compliance numbers. Consent coverage is dialed numbers with recorded prior express consent ÷ numbers dialed. Opt-outs honored on time is opt-outs actioned within 10 business days ÷ opt-outs received.
| Inbound row | Outbound replacement | How to calculate it |
| Answer rate | Connect rate | Calls a person picked up ÷ calls dialed |
| Handled without staff | Outcomes per 100 connected calls | (Bookings, qualified leads, or confirmed renewals ÷ connected calls) × 100 |
| Mid-call hang-ups | Opt-outs honored on time | Opt-outs actioned within 10 business days ÷ opt-outs received |
| Repeat calls within 7 days | Consent coverage | Dialed numbers with recorded prior express consent ÷ numbers dialed |
Count Only Real Conversations, or Every Rate Looks Better Than It Is
Two KPIs in the table are divided by real conversations: automated resolution rate and abandonment rate. Repeat contact rate and cost per resolved call build on them. So how you define a real conversation affects half the scorecard.
A real conversation is an answered call where the caller spoke:
Real Conversations = Answered Calls − Spam − Robocalls − Silent Calls
These calls tell you nothing about the agent, and leaving them in makes your rates inaccurate. In an analysis of 450,702 calls to 503 AI receptionists, Upfirst found that raw hang-up rates reflect a phone number’s spam traffic more than the voice agent. That is vendor data, but it matches what most operators see in their own logs.
Every real conversation then needs one outcome tag.
- Booked
- Question answered
- Message taken because the caller asked to leave one
- Transferred
- Hung up with no outcome
A call without a tag doesn’t count as handled.
Check Transfers and Bookings at the Far End, Not in the Agent’s Log
A transfer succeeds only when your phone system shows a staff member answered. “Transfer started” or “transfer connected” in the agent’s log may only mean the platform dialed the number, even if the call then rang out or went to voicemail.
Once a week, match the agent’s transfer list against your phone system’s answered calls. Then sort the transfers by reason:
Planned: Calls the agent is set up to hand over, such as emergencies, billing requests, or callers who ask for a person.
Forced: Calls the agent couldn’t handle.
Planned transfers are working as intended, as long as someone picks up. Forced transfers show where the agent falls short. If one type of request keeps ending in forced transfers, either improve how the agent handles it or send those calls straight to your team.
Use this transfer script as the test standard:
Transfer script:
“I can help with the basics, but [request] needs [team or role]. May I place you on a brief hold while I connect you? If no one is available, would you prefer a callback or voicemail?”
For bookings, check both accuracy and the eventual outcome. Match each reported booking to the calendar: Correct person, service, date, time, time zone, and contact details. Then calculate the show rate and compare it with appointments booked by staff. A booking that exists but has the wrong service or never triggers a reminder is not a clean success.
Use explicit confirmation rather than a vague “you’re booked”:
Booking script:
“I have [service] for [name] on [weekday, date] at [time and time zone]. I’ll send confirmation to [masked phone or email]. Is every detail correct?”
A short script makes pass/fail review easier because the required fields are audible in the call and visible in the transcript.
Check how an AI voice agent can handle caller requests, transfer calls to your team, and confirm appointments.
Book a demoWhat A Good Number Looks Like For Your Business
| Metric | What published data say | Why they differ |
| Repeat calls | Under 10% within 72 hours (CloudTalk)Under 15% within 72 hours (Balto)Under 8% within 7 days (Twig) | Different time windows |
| Transfers that reached a person | Over 85% (CloudTalk)Over 90% with context passed on (Balto)Over 90% (JustCall) | Some count a connected call; some require the caller’s details to arrive too |
| Response delay | Under 500ms feels natural (Balto)Median under 800ms, slowest 5% under 1.5sec (Twig)Under 1.5sec per turn (JustCall)1.27 to 3.08sec measured across 7 setups (Cekura, cited by JustCall) | Time to first audio vs. per turn, and average vs. slowest calls |
| AI cost per call | Under $1 (CloudTalk)$0.30 to $0.50 per handled call (Balto)$0.50 to $2.50 per resolution (Twig)$0.45 to $0.75 per 3-min call (JustCall) | Per call vs per resolution, and what costs are included |
Ranges as published by each vendor, October 2026. Response delay is the gap between the caller finishing a sentence and the agent starting to reply. The “slowest 5%” figure is the 95th percentile (P95).
What Each Resolved Call Costs You
Cost per minute hides calls that cost money and fix nothing, such as spam, hang-ups, and calls that end in a transfer. Cost per resolved call shows what you pay for each problem the agent solves. Compare it with what the same types of calls cost when staff handled them.
Cost per resolved call = total agent cost ÷ (calls handled without staff − repeat contacts)
Total agent cost includes every minute (including spam, hang-ups, and transferred calls), plan and phone number fees, and the staff time spent reviewing calls.
For Example:
Reusing the funnel, 500 answered calls averaging 2 billable minutes is 1,000min. At Botphonic’s published Pro PAYG rate of $0.12 per talk minute, as of October 2026, that is $120.
| Measure | Math | Cost |
| Per answered call | $120 ÷ 500 | $0.24 |
| Per resolved call | $120 ÷ 220 | Around $0.54 |
The cost per resolved call is about 2.3 times the per-call figure. This example leaves out staff review time, so add yours for the full figure.
Cost per resolved call also treats every resolved call the same, but a booking that becomes a paid job is worth more than an answered question. See Botphonic’s success stories for how the same calls look once you count jobs won.
Scripts To Fix The Most Common Voice Agent Failures
Start with these scripts when the review points to a specific failure:
Short Inbound Greeting:
“Thanks for calling [business]. I can help book, change, or cancel an appointment, answer common questions, or connect you with the team. What can I help with?”
Recovery Script:
“I may have misunderstood. Are you calling about [option 1], [option 2], or something else?”
Human-Request Script:
“Of course. I’ll connect you with [team]. If they cannot answer, would you like a callback?”
For outbound calls, have counsel approve the opening and opt-out language. A plain operational template is:
Outbound Script:
“Hello, this is [agent name], an automated assistant calling for [business] about [specific purpose]. Is now a good time? You can ask me to stop calls at any point.”
Do not treat that wording as proof of TCPA compliance; consent, identification, disclosure, and opt-out requirements depend on the campaign and jurisdiction.
Your First 30 Days: A Week-By-Week Measurement Plan
| When | What To Do | What You’ll Have At The End |
| Before switch-on (or now, if it’s live) | Check 30 days of answer rate, missed calls from your phone system, and calendar. Set your transfer rules and test each one | Your baseline |
| Week 1 | Tag every real conversation with an outcome. Listen to 20 calls | Honest handled-without-staff and mid-call hang-up rates |
| Week 2 | Match transfers against the phone system. Check every booking in the calendar | Transfers that reached a person, and bookings correct |
| Week 3 | Make one fix | A change you can measure |
| Week 4 | Compare four-week totals with your baseline. Work out cost per resolved call | All 8 numbers, and a first verdict |
If you’re just setting up, Botphonic documentation covers call handling, spam screening, and syncing bookings to your other tools.
What Belongs On Your AI Voice Agent KPI Dashboard (Scorecard)
| KPI | Where to check it | Baseline (30 days before launch) | Last 4 weeks | Better or worse? |
|---|---|---|---|---|
| Answer Rate | Phone system or carrier log | % | % | — |
| Handled without staff | Call log plus your outcome tags | % | % | — |
| Mid-call hang-ups | Call log, real conversations only | % | % | — |
| Transfers that reached a person | Phone system’s answered calls | % | % | — |
| Bookings correct and kept | Calendar and attendance | % | % | — |
| Repeat calls within 7 days | Call log, matched by phone number | % | % | — |
| Cost per resolved call | Invoice divided by calls handled without staff | $ | $ | — |
| Listened-call pass rate | Your 10–20 random calls a week | % | % | — |
Conclusion
An AI voice agent dashboard is only as honest as its denominator and its far-end checks. Count real conversations, confirm transfers in the phone system, verify bookings in the calendar, connect containment with repeat calls, and divide total cost by resolved outcomes, not activity.
Then segment the results before diagnosing a problem and change only the layer that failed: Script, workflow, handoff, or scope. Review a small, balanced call sample every week and compare rolling 4-week totals so that normal low-volume variation does not trigger unnecessary rewrites.
These practices give you 8 numbers you can trust and one practical action each week. Start by filling the scorecard with last month’s call log.