How do you measure whether a voice agent works?

Containment rate, transfer rate, task completion, and what actually happens after the call end up mattering more than call volume or a generic satisfaction score.

An admin approves every new account by hand. Nothing is created until then. We reply by email; no newsletter, no sequence.

Want to see it first? Book a demo

app.salescrew.io/inbox
The unified reply inbox with classified threads

The short answer

  • Containment rate is the share of calls the agent resolves without passing them to a human. Most vendors lead with it. It only means something next to task completion, because a contained call that didn't solve the caller's problem is a false positive.
  • Transfer rate is not automatically bad. What matters is whether transfers happen for legitimate reasons, an explicit request, a genuinely out-of-scope topic, low confidence, rather than the agent failing on things it should be able to handle.
  • Task completion asks whether the call did its job: booked, answered, or resolved. It's the metric closest to business value, and you have to check outcomes, not only how the talk flowed.
  • What happens after the call is the part most dashboards don't show. Does the booking stick? Does the promised callback happen? Does the issue stay fixed? That's often the real test of whether the agent works.

Why volume and star ratings are not enough

A dashboard showing call volume and a satisfaction score feels like measurement, but neither number says much about whether the agent is actually doing its job well. Volume just says calls are coming in and getting answered, which was already true before the AI agent existed if a human or voicemail was picking up. A satisfaction score from a short post-call survey tends to show how pleasant the voice sounded. It says less about whether the caller's problem got solved.

The more useful metrics require looking past the call itself and into whether it accomplished something. Containment rate (how often the agent handles the call without a human) is a fair place to start. Read alone, though, it rewards an agent that ends calls fast even when it didn't help, since a call that ends without a transfer still counts as "contained." Pair it with task completion. Did the caller get what they called for? That catches the gap.

What to actually track

MetricWhat it tells youWhat it misses alone
Containment rateHow often the agent avoids a human transferWhether the contained call was actually resolved
Transfer rateHow often the agent hands off to a humanWhether the transfer was for a legitimate reason
Task completionWhether the call's actual purpose was achievedWhat happens after the call ends
Post-call outcomeWhether a booking sticks, a promise is keptRequires tracking beyond the call itself

How to actually build this measurement

Start by defining a good call for each call type your agent handles: a booking confirmed, a question answered, a clean transfer. Don't use one generic success rule for every call. Then review a sample of calls now and then, mainly transfers and calls marked as contained. Check that the logged outcome matches what a person reading the transcript would call a success.

Disclosure: SalesCrew is our product. Each SalesCrew agent action is written to an action log, and external sends wait in one approval queue. The framework here, containment paired with task completion, applies to evaluating any vendor's voice agent.

A high containment rate can hide a low-quality agent

An agent that avoids transferring but also fails to actually resolve the caller's issue looks good on containment and bad on the outcome that matters. Always pair containment with task completion, never read it alone.

Questions

What is containment rate?
The share of calls the agent handles fully on its own without transferring to a human. A high containment rate is only good if the calls being contained were actually resolved correctly, which is why it needs to be read alongside task completion, not alone.
Is call volume a useful metric?
Volume tells you the agent is answering calls, not whether those calls went well. It is worth tracking as context but is not evidence of quality by itself.
How do you know if a transfer happened for a good reason?
Now and then, review a sample of transferred calls. Check that the trigger (a direct request, an out-of-scope topic, low confidence) matches what really happened on the call. Don't assume every transfer was needed.