AI Customer Service Metrics: Containment, Resolution, CSAT and Cost per Contact

Turn this article into takeaways for your work.

Each assistant summarizes the article only for you and suggests best practices for your work.

AI customer service metrics are the small set of numbers that tell you whether your AI is solving customer problems, at what quality and at what cost. No single number does that. Containment tells you a human stayed out. Resolution tells you the problem went away. CSAT tells you how the customer felt. Cost per contact tells you what it took. Each one can look healthy while another is quietly failing, so the useful unit is a scorecard where every metric has a partner that catches its blind spot.

This guide gives you that scorecard: eleven metrics, a formula for each, a worked example with hypothetical numbers, the pitfalls, and a template table you can paste into your reporting. If you need the long version of how containment, deflection and resolution differ, read AI resolution rate. Here we use those definitions and keep moving. For the wider picture of where AI fits in support, start with the overview of AI in customer service.

Key Facts

  • A healthy AI scorecard has eleven metrics in four groups: outcome (containment, resolution, reopen rate), experience (CSAT, effort, transfer quality), efficiency (cost, handle time) and coverage (escalation, knowledge gaps).
  • Every metric needs a partner. Containment pairs with resolution, CSAT pairs with a human baseline, and cost per contact pairs with cost per resolved issue.
  • Cost per contact moves when you change how a "contact" is counted, even if nothing real changed. Define it as a customer issue and keep it fixed (Gladly).
  • In a large study of customer support agents, AI assistance raised issues resolved per hour by 14% on average, with a 34% gain for novice and low-skilled workers (NBER).
  • Zendesk's own guidance on average handle time warns that a low number does not mean good performance, and says to read it next to CSAT, first contact resolution and customer effort (Zendesk).
  • Report each metric with its denominator written next to it. Changing the denominator is the easiest way to manufacture progress.

The Scorecard at a Glance

Before the detail, here's the whole set. Treat the "pairs with" column as the rule that keeps the metric honest.

Group Metric Formula Pairs with
Outcome Containment rate Conversations with no human involvement ÷ AI conversations Resolution rate
Outcome Verified resolution rate Conversations resolved and not repeated ÷ AI conversations Reopen rate, sampled review
Outcome Reopen / repeat-contact rate Resolved conversations followed by a repeat contact on the same issue ÷ resolved conversations Resolution rate
Experience CSAT, AI vs human Satisfied responses ÷ total responses, split by who handled it Response rate
Experience Customer effort Sum of effort ratings ÷ survey responses CSAT
Experience Transfer quality Handoffs where the agent didn't re-ask ÷ handoffs Escalation rate
Efficiency Cost per contact Total support cost ÷ contacts Cost per resolved issue
Efficiency Cost per resolved issue Total support cost ÷ resolved issues Cost per contact
Efficiency Agent handle time impact Average handle time with AI assist vs without CSAT, reopen rate
Coverage Escalation rate Conversations handed to a human ÷ AI conversations Containment
Coverage Knowledge gap rate Questions the AI couldn't answer from its sources ÷ questions asked Resolution by topic

The list is long, but most teams review five or six of these weekly and the rest monthly. The sections below go group by group.

Outcome Metrics: Did the Problem Go Away?

Containment rate is the share of AI conversations that never reached a human.

Containment = conversations with no human involvement ÷ total AI conversations

It's the easiest metric to compute and the easiest to misread. A customer who gives up is contained. A customer who gets a wrong answer and closes the window is contained. The Consumer Financial Protection Bureau's report on bank chatbots describes customers stuck in "doom loops" of repetitive, unhelpful responses without an offramp to a human, and cites a survey in which 78% of consumers needed to connect with a human after a chatbot failed to serve their needs (CFPB). Some of those customers sit inside someone's containment number as a success.

Verified resolution rate is containment with the failures removed.

Verified resolution = (contained conversations − conversations followed by a repeat contact on the same issue − conversations a reviewer graded as wrong) ÷ total AI conversations

The way you judge "resolved" is a design choice. Intercom, for example, defines its resolution rate as the percentage of conversations its AI agent resolves without human involvement, and counts a resolution when the customer confirms the answer or leaves without asking for more help (Intercom). That is a reasonable operating rule, but it counts silence as success, so run your own repeat-contact check on top of any vendor figure.

Reopen or repeat-contact rate catches the quiet failures.

Reopen rate = resolved conversations followed by a repeat contact on the same issue within your window ÷ resolved conversations

In a ticketing tool, a reopen is a native event. Zendesk defines reopened tickets as those reopened after being solved (Zendesk). With AI, the customer often doesn't reopen anything. They open a new chat, send an email or phone you. So match on customer and topic across channels, not on ticket ID, and pick a window that fits the issue: a few days for a password reset, a few weeks for a billing dispute.

A worked example (hypothetical)

Say 10,000 conversations start with your AI in a month.

  • 6,000 are contained and 4,000 are handed to a human (containment 60%, escalation 40%).
  • Of the 6,000 contained, 900 customers come back through another channel within seven days about the same issue.
  • Verified resolution is (6,000 − 900) ÷ 10,000 = 51%.

The headline says 60%. The defensible number is 51%. Both are true, but only one belongs in a budget case. Add a weekly human review of a random sample and you may shave it further, which is useful information about how optimistic your tool's own count is.

Experience Metrics: How Did It Feel?

CSAT, split by AI and human. The standard calculation is satisfied responses divided by total responses, multiplied by 100. Most teams count the top two boxes on a five-point scale, or the "good" votes on a binary one. The mistake is to publish one blended CSAT. Report the score for AI-handled conversations and human-handled conversations separately, and show the response rate beside each, because customers who just got a bad bot answer are less likely to fill in a survey than customers who spoke to a person. A high AI CSAT on a 4% response rate tells you about the 4%.

If you want to see satisfaction before the survey arrives, predicting CSAT with AI covers modelling it from conversation signals. Treat a predicted score as a prompt to look, not a replacement for asking.

Customer effort. Customer Effort Score measures the effort it takes for a customer to get what they need. On a standard scale, Zendesk writes the formula as the sum of CES ratings divided by the number of survey responses, and notes that a high score indicates low effort (Zendesk). Scales run in both directions across vendors, so write down which end is "easy" before you compare any two reports. Effort is the metric that exposes the long, polite bot that technically answers and takes nine messages to do it.

Transfer quality. When the AI hands off, did the human have to start over?

Transfer quality = handoffs where the agent had the conversation summary, identified the customer and didn't re-ask the question ÷ total handoffs

You measure this by sampling handoffs, not from a dashboard. Read twenty a week and mark each yes or no. The pattern you're hunting is the customer who explains their problem to a bot, then explains it again to a person. That repetition erodes trust faster than a wrong answer. AI agent assist is the capability that makes a clean handoff possible by summarising the thread for the agent.

Efficiency Metrics: What Did It Cost and What Did It Free Up?

Cost per contact is the simplest efficiency number.

Cost per contact = total support operating cost for the period ÷ total contacts handled in the period

Gladly's worked example is a team that spends $100,000 in a month and handles 10,000 contacts, for $10.00 per contact. The same page makes the point that matters: ticket-based systems count every new ticket while conversation-based systems count the whole thread as one, and counting every touch lowers the reported cost without changing the customer experience. Its advice is to define a contact as a customer issue and keep that definition fixed (Gladly).

Cost per resolved issue is the harder, more honest version, because fragmenting the work can't lower it.

Cost per resolved issue = total support operating cost ÷ issues actually resolved (by AI or by a human)

Continue the hypothetical from earlier, with an assumed $120,000 total support cost for the month. The 900 repeat contacts are real contacts, so there are 10,900 in total, giving a cost per contact of about $11.01. Humans resolve 3,600 of the 4,000 escalated issues and all 900 repeat issues, so resolved issues come to 5,100 + 3,600 + 900 = 9,600. Cost per resolved issue is $120,000 ÷ 9,600 = $12.50. The second number is higher because it doesn't let a repeat contact look like a bargain. Track both. When they diverge, your AI is creating extra contacts.

For the cost inputs themselves, such as what belongs in the numerator and how AI platform fees fit, see the cost of AI customer service.

Agent handle time impact. Average handle time is typically written as talk time plus hold time plus follow-up work, divided by the number of contacts handled (Zendesk). With AI in the mix, two things change. First, the AI absorbs the simple contacts, so the humans' remaining queue is harder and their average handle time can rise even when the system is working. Second, assist tools should shorten the time on each contact. Measure both: handle time by contact reason before and after, and issues resolved per agent hour.

Outside evidence for the assist effect exists. A study of customer support agents using a generative AI assistant found a 14% average increase in issues resolved per hour, a 34% improvement for novice and low-skilled workers, and minimal impact on experienced workers (NBER). Those are that study's results, not a target for your team, but they show why you should read handle time by experience level: the gain isn't spread evenly. Zendesk's guidance on the metric also cautions that a low handle time doesn't mean good performance, because pushing agents to shorten contacts can hurt quality, so read it beside CSAT and effort (Zendesk).

Coverage Metrics: Where Does the AI Stop?

Escalation rate.

Escalation rate = conversations handed to a human ÷ AI conversations

There's no ideal number. A rate near zero can mean the AI is excellent or that it hides the exit. Split escalations into two kinds. Designed handoffs happen because you configured a rule, such as every refund over a set amount goes to a person. Failure escalations happen because the customer asked for a human, showed frustration or hit something the AI couldn't handle. Intercom's documentation draws a similar line between a handoff a configured procedure triggers and an escalation that occurs under default behavior or workspace rules, such as a customer asking for a person (Intercom). Your goal isn't to minimise escalation. It's to make failure escalations rarer and designed handoffs smoother. This is the decision at the heart of automate or assist.

Knowledge gap rate.

Knowledge gap rate = questions the AI couldn't answer confidently from its sources ÷ questions asked

HelpCrunch's documentation, for one, defines an unresolved question as any query the AI agent couldn't answer confidently based on the connected data sources, and uses the report to find blind spots (HelpCrunch). Whichever tool you use, the practice is the same: rank gaps by volume, and write or fix the article behind the biggest one each week. Resolution rate is often a content problem in disguise. A tidy, current source is worth more than a better model, which is why preparing support data for AI comes before most tuning.

Real Examples by Function

The same scorecard reads differently depending on the queue.

Customer support, Tier 1. Password resets and order lookups should show high verified resolution and low effort. If they don't, the problem is integration, not intelligence.

Billing and finance operations. Containment can look great while reopen rate climbs, because the AI explains the invoice but can't see the account. Watch reopen rate and cost per resolved issue here, not containment.

IT help desk. Employees repeat questions when steps change. Track repeat contacts per person and knowledge gap rate, since stale articles are the usual cause.

E-commerce. "Where is my order?" is a lookup and resolves cleanly. The risk is the late parcel: the AI reports "in transit" and the customer phones the next day. Reopen rate by contact reason shows it.

Onboarding and customer success. Silence is dangerous here. A new customer who asks how to import contacts and never replies has not been helped. Pair resolution with an activation signal from the product.

How to Build the Scorecard Step by Step

  1. Define a contact and a resolution in writing. One sentence each. Contact = a customer issue, not a system event. Resolution = correct answer or completed task, no human reply, no repeat contact within the window.
  2. Pick the denominators. Decide whether you divide by all AI conversations, attempted conversations or in-scope conversations. Put the choice in a footnote on every report.
  3. Tag every conversation with a contact reason. Without topic tags, you can't segment, and an overall average hides the topics where the AI fails.
  4. Wire the repeat-contact check. Match customer ID and topic across chat, email and phone. This is the single highest-value addition.
  5. Set up the sample review. A reviewer reads a random set of "resolved" conversations each week and grades them right, partly right or wrong. Feed the wrong ones to your quality assurance process.
  6. Split CSAT and effort by handler. AI-only, human-only and AI-then-human are three different populations.
  7. Compute cost both ways. Cost per contact and cost per resolved issue, side by side, every month.
  8. Set thresholds per topic, not globally. A blanket target pushes the AI into subjects it shouldn't touch, such as refunds, legal and safety.
  9. Review the definitions quarterly. New channels, new tool actions and vendor rule changes all move what counts.

For rollout sequencing, including which metrics to baseline before launch, see implementing AI in customer service.

A Scorecard Template You Can Copy

Fill in the target and owner columns with your own numbers. The "red flag" column is the pattern that tells you the metric is being gamed or misread.

Metric Cadence Owner Target (yours) Red flag
Containment rate Weekly Support ops Set per topic Rising while CSAT falls
Verified resolution rate Weekly Support ops Set per topic Gap to containment widening
Reopen / repeat-contact rate Weekly Support ops Below your baseline Same customer, new channel
CSAT (AI) vs CSAT (human) Weekly Support lead AI within range of human Low response rate on AI
Customer effort Monthly Support lead Per topic High message count per resolution
Transfer quality Weekly sample QA Most handoffs clean Customers repeating themselves
Cost per contact Monthly Finance + support Trend, not a promise Drops with no resolution change
Cost per resolved issue Monthly Finance + support Trend, not a promise Diverges upward from cost per contact
Handle time by reason Monthly Support lead Per reason Falls while reopen rate rises
Escalation rate (designed vs failure) Weekly Support ops Failure share falling Near zero with no visible exit
Knowledge gap rate Weekly Knowledge owner Falling Top gap unchanged for a month

Pitfalls to Avoid

Celebrating containment alone. It's the metric most likely to look good while customers suffer. Never show it without verified resolution next to it.

Blending AI and human CSAT. The blend hides whichever side is struggling. Split it.

Letting the denominator drift. Moving from "all conversations" to "in-scope conversations" in a later quarter raises every rate without any real improvement.

Optimising handle time for its own sake. When the AI takes the easy work, the remaining human contacts are longer. Judge the team on resolution and satisfaction by contact reason.

Counting contacts, not issues. Cost per contact rewards splitting one problem into several touches. Use cost per resolved issue as the check.

Trusting the vendor dashboard as the whole truth. Platforms define resolution differently, so compare your own trend under one fixed definition. Keep a manual sample, since a model grading a model can share its blind spots.

Ignoring risk. Metrics describe quality, not harm. A wrong refund promise can pass every dashboard. Read the risks of AI customer service alongside the scorecard and add a count of flagged incidents.

Frequently Asked Questions about AI Customer Service Metrics

What are the most important AI customer service metrics?

Start with five: containment, verified resolution, reopen or repeat-contact rate, CSAT split by AI and human, and cost per resolved issue. Together they show whether the AI avoided a human, solved the problem, held up afterwards, satisfied the customer and cost less than the alternative.

How do I calculate containment rate?

Divide the number of AI conversations that never involved a human by the total number of AI conversations. Then subtract the conversations followed by a repeat contact on the same issue to get a verified resolution rate. Containment alone can't tell you whether the customer was helped.

What is the difference between cost per contact and cost per resolution?

Cost per contact divides total support cost by the contacts handled, so splitting one issue into several touches lowers it. Cost per resolved issue divides by issues actually solved, so it can't be lowered that way. Track both and investigate when they drift apart.

Should AI and human CSAT be reported separately?

Yes. They are different populations with different response patterns, and a blended score hides the weaker side. Show the response rate next to each score, because a high score on very few responses says little about the customers who stayed silent.

How often should I review these metrics?

Review outcome and coverage metrics weekly, since they change fastest and drive content fixes. Review cost, effort and handle time monthly. Revisit your definitions quarterly, or any time you add a channel, give the AI new actions or change vendor settings.

What is a knowledge gap rate?

It's the share of customer questions the AI couldn't answer confidently from its connected sources. Rank the unanswered questions by volume and fix the biggest gap each week by writing or updating the underlying article. A falling gap rate is the earliest sign that resolution on that topic is about to improve.

About the author

Linh Ngo

Linh Ngo

Customer Success Operations Manager

Linh Ngo is Customer Success Operations Manager at Rework, focused on AI-led process automation for operations teams, especially order fulfillment and finance workflows. Linh writes about process management and the AI productivity tools that take manual steps out of daily operations, so teams can see where work stalls and fix the process before adding headcount.