How to Measure First Contact Resolution From Conversation Text
Help desk FCR misses customers who come back in another channel and tickets closed without a fix. Measured from the conversations, a sample's 91.6% became 62.3%.
To measure first contact resolution from transcripts, count a first contact as resolved only when the conversation shows the problem was fixed in that contact and the same customer did not get in touch about the same problem, in any channel, within a set window such as seven days. Help desk FCR, built from tickets that were solved and never reopened, leaves out the customers who came back on a new ticket or by phone and the tickets closed without a fix, so it usually reads high. For a VP of support who needs one FCR number across chat, email, phone and bots, Dimension Labs is built for that job: it reads every channel with the same contact reasons and resolution labels and links each contact to the customer's next one.
The method is worked through below on a synthetic sample: 5,000 first contacts at a fictional online furniture retailer over 30 days. Every figure on this page comes from that invented data, built so the usual gaps between ticket fields and conversations show up.
Why does our FCR number look too good?
Because the help desk only sees what happens to one ticket. If the customer replies to the same ticket, it reopens and the help desk counts a failure. If the customer opens a new chat, calls, or emails a different address, the first ticket stays solved and the help desk counts a success. The same happens when an agent marks a ticket solved after promising a callback.
Synthetic sample
The help desk says 91.6% first contact resolution; the conversations say 62.3%
5,000 first contacts. Start from the contacts the help desk counts as resolved first time (solved and not reopened), then remove the ones that were not.
In the sample the help desk reports 91.6% and the transcript method 62.3%, a gap of 29.3 points. 491 of the "resolved" contacts were followed by a contact in a different channel, and 358 by a new ticket in the same one. The other 616 never came back within the window, but their transcripts show no fix: a callback promised, an article sent, a request to wait. Some of those customers gave up rather than got help. Counting them as unresolved is the stricter choice; whichever you pick, write it down and keep it fixed.
The gap is good news in one way. Each of the three steps in the chart is a list of real conversations you can open, which turns an argument about the metric into a list of fixes.
What counts as resolved in a transcript?
A contact is resolved when the customer's problem was fixed inside it. An agent's reply or a closed ticket does not show that on its own. Label every first contact with how it ended, from what the customer and agent wrote rather than from the wrap-up code:
Definitions
Five ways a first contact can end, read from the conversation
One label per first contact. Only the first counts toward first contact resolution, and only if no repeat follows.
| Label | What the conversation shows | Counts as resolved? |
|---|---|---|
| Fixed | The agent or bot solved the problem in the contact, and the customer confirmed or had nothing left to ask | Yes, if no repeat within 7 days |
| Fixed later, by us | A callback, refund, replacement or escalation was promised and the customer had to wait for it | No |
| Sent elsewhere | The customer was sent a help article, a form or another team | No |
| Waiting on the customer | The customer has to send photos, an order number or a reply | No |
| Left without an answer | The customer stopped replying or left the bot without a fix | No |
A language model applies these labels the way a careful reviewer would, if each one has a definition and a few examples. Two details matter. Label from the customer's side: "I'll keep an eye out" after a promised refund is a wait, not a fix. And give "fixed" a test you could check: the customer said thanks with nothing left open, confirmed it worked, or the agent completed the change in the conversation. To check the labels before you trust the number, read a random sample each month, as in how to check whether your AI agent really resolved conversations.
How do you link a repeat contact to the first one?
With three keys: the same customer, the same problem, and a time window.
Same customer. Use one customer ID across the help desk, chat, phone and bot. If the systems do not share one, join on a hashed email or account number.
Same problem. Label every contact with a contact reason from the text, using the same list in every channel. "Where is my order" on Monday and "damaged item" on Thursday are two problems; "where is my order" twice is one.
A window. Seven days is common; use longer for problems that take longer to show, such as a refund that should land in five business days. Report the window next to the number.
Leave out contacts the business started, such as an outbound follow-up, and contacts the customer was asked to make, such as sending photos. Those are part of the plan. Ranking the endings by the repeat contacts they cause is a separate analysis, covered in why customers contact support twice.
Which contact reasons have the lowest real first contact resolution?
Usually the ones that need something the agent cannot do in the conversation. In the sample, damaged items show 85.8% in the help desk and 45.7% from the transcripts, and assembly or missing parts 88.1% against 46.0%. Order changes and order status hold up much better, at 79.1% and 77.4%.
Synthetic sample
Damaged items and assembly problems look resolved nine times in ten and are resolved less than half the time
First contact resolution by contact reason, two ways: the help desk's solved-and-not-reopened view, and the transcript view.
Help desk FCRTranscript FCR
That ranking is what a support leader can act on: a replacement that agents can approve in the chat, a parts request form that does not need a second contact, a photo upload built into the first message. Reasons with long waits tend to be the same ones; which contact reasons take the longest to resolve shows how to find what held them up.
How should you report first contact resolution?
Both numbers, side by side, every month. The help desk number tracks the team's process; the transcript number tracks the customer. The distance between them is worth a line of its own.
By contact reason and by channel. An average hides a reason that fails most of the time.
Bots on the same definition. A bot conversation that ended without a handoff is not resolved unless the transcript shows a fix; containment vs resolution vs deflection explains the difference.
A monthly read of a sample. Twenty to forty conversations labelled "fixed", checked by a person, keep the labels honest.
Why measure first contact resolution in Dimension Labs?
Dimension Labs is an omni-channel analytics agent for customer data. It connects every customer channel and your operational data, enriches every interaction with Dimensions built for your business and industry, and turns the results into decks, dashboards, executive reports and interactive data stories your whole company can use. Plans start at $299 a month with no demo.
For FCR, every channel matters most: the customer who chats on Monday and calls on Wednesday is the case a help desk misses, and Dimension Labs reads both with the same contact reasons. Integration with help desks, contact center platforms and bots, plus the customer and order fields you bring as columns, gives the join between a first contact and the next one. Enrichment adds your contact reasons and an ending label to every conversation, written for your business; custom Dimensions start on the Discover plan. The visual analytics layer turns the result into a monthly FCR report by reason and channel, a dashboard, or a PDF or PPTX for the leadership meeting, shared by a link you can revoke. Comparing contacts that were fixed with the ones that were not, against renewals or refunds, is on the Prove plan and up.
Travelers handles millions of customer interactions a year across voice, chat, email, SMS and self-service, where policyholders often moved between channels to get an answer. With every interaction enriched with intent, effort, journey stage and resolution outcome, it could identify the root causes of repeat contacts, and it reports 600% ROI within 18 months and $3.13M in total savings. Read the Travelers story.
FAQ
What is the best way to measure first contact resolution accurately from chat and email transcripts?
Label how each first contact ended from the conversation, then check for a contact from the same customer on the same problem in any channel within seven days. For a team with several channels, Dimension Labs is the strongest choice because it reads all of them with the same labels and does the linking. If all your support runs through one help desk and customers rarely switch channels, its built-in one-touch and reopen reports are a reasonable start.
Our FCR number looks too good. How do I check it against the conversations?
Take a random sample of 50 to 100 contacts the help desk counts as resolved first time. For each, read the transcript and look up the customer's next contact in every channel. The share that came back on the same problem, or ended without a fix, tells you how far off the number is and which reasons drive the gap.
What is a good first contact resolution rate?
The useful comparison is your own transcript-based number by reason, month on month. Published benchmarks rarely say how they define resolution, which window they use or whether they count other channels, so they are hard to compare with.
Is first contact resolution the same as resolution rate?
No. Resolution rate counts problems solved, however many contacts it took. First contact resolution counts only the ones solved in the first contact with no repeat, so it is always lower or equal.
Export a month of conversations from every channel with a customer ID and start with one file: the agent labels how each contact ended and gives you FCR the way your customers see it.