Skip to content
Product
PlatformPricingDimensionsIntegrationsSecurityCompare
Solutions · by use case
Customer, guest and fan experienceProduct feedback and prioritizationRevenue, churn and retentionAgenciesContact center performanceAI agent and chatbot analyticsMulti-location performanceReviews and competitive benchmarking
Solutions · by industry
Hotels and hospitalityRestaurants and food serviceFitness and leisureRetail and e-commerceSports and live entertainmentInsuranceBanking and financial servicesSoftware and SaaSAutomotiveConsumer products and CPGContact centers and BPOsPublic sector and nonprofitReal estateGaming and betting
Learn
Artifacts GalleryCustomer storiesResearchBlogThought leadershipLessons Log in Start now
Blog

How to Find Complaint Root Causes in Recorded Contact Center Calls

A method for finding why customers complain and call back, using every recorded call: what to label, how to link repeat calls, and how to rank causes, on labelled sample data.

To find the root causes of complaints in recorded calls, label every call with three things from fixed lists: whether the customer complained, what caused the problem (a policy, a process, a system, the agent), and whether it was resolved. Then link each call to the customer's next contact, and rank causes by the repeat calls and escalations they produce, not by how often they come up. When that has to run on every call, alongside the chats, emails and tickets the same customers send, with findings the owning teams can act on, Dimension Labs is the strongest choice: it is omni-channel, enriches every call with Dimensions written for your business, and builds the reports for you.

Below, each step is worked through on sample data from a fictional regional bank: one month, 40,000 recorded calls. If you are still choosing between a conversation intelligence platform and a feedback analytics tool for this, conversation intelligence vs customer feedback analytics covers that choice.

Why don't call reasons and disposition codes show root causes?

A call reason says what the customer called about: a fee, a card, a login. A root cause says why the problem existed in the first place: the fee was charged without the notice the customer expected, the card was mailed to an old address, the lockout rule fires after three attempts. Two calls with the same reason can have different causes and different owners.

Disposition codes are picked by agents at the end of a call, usually one per call, from a list built for routing and staffing. They tell you the mix of call types. They rarely say whether the customer complained, and they never say whether the problem came back.

The transcript holds all of it. The customer says what went wrong, often says what they were told last time ("they said it would be five days"), and the agent's reply shows whether anything was fixed on the call.

How do I find root causes of complaints across every recorded call?

1. Get transcripts out with the fields you will join on

For each call: the call ID, start time, the customer or account ID your telephony passes from the CRM (or the caller's number when there is none), queue, agent, and whether it was transferred. Keep the speakers separate. Reasons and complaints come from the customer's turns, because agents use words such as "dispute" and "refund" to describe the fix.

2. Decide what counts as a complaint

Write the rule down before anything is labelled. A workable one: the customer says they are unhappy with something the business did or failed to do, or asks for it to be put right. A question about a fee is a call reason. "I was never told about this fee and I want it back" is a complaint. In the sample month, 7,200 of the 40,000 calls, 18.0%, met that rule.

If you are in a regulated industry, your regulator's definition of a complaint may be wider than this, and it decides what goes in the complaint register. Keep a second flag for it.

3. Label the root cause from a fixed list

Give every complaint call one root cause from a list of causes someone can fix, each with an owner. The sample bank used seven:

  • Fee charged without notice (product and pricing)

  • Online banking lockout (digital team)

  • Replacement card delayed (card operations)

  • Dispute status never updated (disputes team)

  • Transferred between departments (routing and IVR)

  • Agent gave wrong information (training and QA)

  • Long hold before reaching anyone (workforce planning)

Add a free-text field for causes that fit none of them, and read it each month; that is where the next item on the list comes from. A language model can do the reading on every call, which is how we do it, but only once the list and the complaint rule are fixed. Check a random sample of its labels against a person's before you count anything; how to check AI tagging accuracy has the method.

This is the step that turns a list of complaints into a ranking. For every call, look for the same customer contacting you again about the same issue within a fixed window. Seven days is common; pick yours and keep it. Count a chat or an email as a repeat contact too, since a customer who calls, then chats, has one unresolved problem.

In the sample, 28.8% of complaint calls were followed by a repeat call on the same issue within 7 days, against 8.0% of calls without a complaint.

Sample data, fictional bank

18.0% of calls carried a complaint, and those calls came back 3.6 times as often

One month of recorded calls, 40,000. A repeat call is the same customer calling about the same issue within 7 days.

40,000
All recorded calls
7,200
Calls with a complaint
2,075
Complaint calls with a repeat call
Synthetic sample data written for this post. Repeat rate 28.8% after a complaint call against 8.0% after other calls.

How do I see why customers call back a second time?

Read the second call against the first. The repeat call usually says what the first one failed to do: the customer was promised a callback that never came, was told the card was on its way, or was told the dispute was "in review" with no date. Label the repeat call's reason too, and two patterns become visible: causes where the first call could not fix the problem (a process or system problem), and causes where it could have and did not (a training problem).

Then rank root causes by the repeat calls they create above the normal level. For each cause, take the number of complaint calls and multiply by the difference between its repeat rate and the 8.0% rate after calls without a complaint.

Sample data, fictional bank

The most common complaint adds only 27 repeat calls above normal; the fourth most common adds 404

Seven root causes of complaint calls, ranked two ways. Left: number of complaint calls. Right: repeat calls above the rate for calls without a complaint.

By complaint callsBy extra repeat callsFee charged without notice1,900 callsOnline banking lockout1,400 callsReplacement card delayed1,100 callsDispute status never updated900 callsTransferred betweendepartments800 callsAgent gave wrong information600 callsLong hold before reachinganyone500 callsDispute status never updated404 extra repeat callsOnline banking lockout374 extra repeat callsReplacement card delayed347 extra repeat callsAgent gave wrong information179 extra repeat callsTransferred betweendepartments157 extra repeat callsFee charged without notice27 extra repeat callsLong hold before reachinganyone11 extra repeat callsBy complaintcallsBy extra repeatcallsFee chargedwithout notice1,900 callsOnline bankinglockout1,400 callsReplacementcard delayed1,100 callsDispute statusnever updated900 callsTransferredbetweendepartments800 callsAgent gavewronginformation600 callsLong holdbefore reachinganyone500 callsDispute statusnever updated404 extrarepeat callsOnline bankinglockout374 extrarepeat callsReplacementcard delayed347 extrarepeat callsAgent gavewronginformation179 extrarepeat callsTransferredbetweendepartments157 extrarepeat callsFee chargedwithout notice27 extra repeatcallsLong holdbefore reachinganyone11 extra repeatcalls
Synthetic sample data. Extra repeat calls = complaint calls x (repeat rate for that cause minus 8.0%, the rate after calls without a complaint).

Fees without notice are the most common complaint, in 1,900 calls, and the rate of repeat calls after them is 9.4%, close to normal: the agent can usually explain or refund the fee on the call. Dispute status is fourth by count, with 900 calls, and first by repeat calls: 52.9% of those customers called again within a week, about 404 calls above normal. The agent cannot see the dispute's progress, so the customer has nothing to wait for and calls back.

The top three causes by repeat calls, dispute status, card delays and lockouts, account for 75.1% of the extra repeat calls. All three are fixes outside the contact center: a status the agent can see, a tracking number, a different lockout rule. That is the usual finding, and the reason root cause work has to reach the teams that own the process.

Sample data, fictional bank

Half of the customers whose dispute status was never updated called again within a week

Share of complaint calls followed by a repeat call on the same issue within 7 days, with 95% intervals. The dashed line is the rate after calls without a complaint.

Calls without a complaint: 8%

Dispute status never updated900 calls
53%
Replacement card delayed1,100 calls
40%
Agent gave wrong information600 calls
38%
Online banking lockout1,400 calls
35%
Transferred between departments800 calls
28%
Long hold before reaching anyone500 calls
10%
Fee charged without notice1,900 calls
9%
0%20%40%60%
Synthetic sample data. Intervals are Wilson 95% intervals on each proportion.

The intervals matter when causes are close. Lockouts and wrong information from an agent have overlapping intervals, so this month's data does not say which of the two is worse per call. It does say both are well above normal.

Which causes should go first, and to whom?

Repeat calls are one cost. A full ranking puts each cause next to what it does to the outcomes you track, which usually needs data from outside the phone system:

  • Cost to serve: repeat calls times your cost per call, plus transfers and handle time.

  • Escalations: complaints that reach a supervisor, a written complaint or a regulator.

  • Attrition: accounts closed or balances moved in the following months, joined from your core system. Compare customers who had the problem with similar customers who did not; how to estimate what a customer complaint costs in revenue walks through that estimate.

Send each team its own causes with the calls behind them, the trend since last month, and the number it is expected to move. A disputes team that sees its repeat-call count every month, with a link to ten example calls, has something to work on. A slide that says "customers are frustrated with disputes" does not.

Approaches compared

Three ways to look for root causes in recorded calls

What each approach reads, what it can tell you, and who it fits.

ApproachWhat it readsWhat it answersBest for
Dimension Labs: every call labelled with complaint, root cause and resolution, linked to the next contactEvery call, plus chats, tickets, emails and reviews from the same customersWhich root causes create repeat calls and complaints, and what they cost once joined to account data (Prove)A support leader who needs causes ranked across every channel and reported to the teams that own the fixes
Sampled QA reviewA small share of calls, scored by handWhether agents followed the process on the calls reviewedCoaching individual agents
Keyword or phrase search in a speech analytics toolEvery call, matched against phrases you chooseHow often a phrase you already suspect comes upTracking a known issue or a compliance phrase
Disposition codes chosen by agentsEvery call, one code per callA rough mix of call reasonsStaffing and queue planning
Our description of each approach. Many contact center platforms do several of these; check what yours includes.

What does Dimension Labs do for a support team with every call recorded?

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 root cause work on recorded calls, that comes down to four things:

  • Calls sit with every other channel. Transcripts from NICE CXone, Genesys Cloud or Amazon Connect are read next to chats, emails, tickets and reviews, so a repeat contact counts whichever channel it arrives on.

  • Integration covers the operational side too. Calls come in through the contact center integrations, and on the Prove plan each call can be joined to CRM, account and billing data to rank causes by attrition and cost.

  • Every call is enriched the same way: complaint flag, root cause, resolution, repeat contact and the customer's own words. The pre-built Dimensions library is on every plan, and custom Dimensions such as your own root cause list start on Discover.

  • The visual analytics layer builds each owning team its report, deck or dashboard, scheduled monthly, downloadable as PDF or PowerPoint, and shared by a link that can be revoked.

Concentrix, a CX partner to some of the world's best-known brands, used Dimension Labs on a retail client's chatbot to see where customers hit friction and why escalations occurred. The same labels apply to calls. "The partnership with Dimension Labs has been instrumental in supporting our improvements in self-service performance and customer journey optimization." (Jenny Burr, Speech Science & Analytics, Concentrix)

See contact center and agent performance for what the setup covers. Our NICE CXone, Genesys Cloud and Amazon Connect pages list the call fields we read.

FAQ

We record every call. How do we find root causes of complaints across them?

Transcribe every call with the customer ID, label each one with a complaint flag, a root cause from a fixed list and a resolution status, and link it to the same customer's next contact. Rank causes by the repeat contacts and escalations they create, then send each owning team its causes with example calls.

How do I analyze call transcripts to see why customers call back?

Match each call to the same customer's next contact on the same issue within a fixed window, such as 7 days. Compare the root cause of the first call with the reason given on the second. The second call usually says what the first one failed to do.

Is keyword search in speech analytics enough?

For tracking an issue you already know about, often yes. It finds the phrases you choose. Root cause work needs the cause behind each complaint, including ones nobody has named yet, so labels from a fixed list plus a free-text field work better.

How many calls do I need?

Enough that each cause you rank appears a few hundred times in the period, or its repeat rate will have a wide interval. In the sample, the smallest cause had 500 calls and its interval was about 5 points wide; with 50 calls at the same rate it would be about 17 points wide.

When does a support team need more than its contact center platform?

When the answer needs data from outside the phone system: the chats and emails the same customers send, account closures, or a report for teams who never log in to the contact center tools. That combination is where Dimension Labs is built to help.

Dimension Labs reads every recorded call, labels each complaint with its cause and links it to what the customer did next. See pricing, or start with one file of call transcripts. Every plan from Explore to Scale starts with a 14-day free trial.

Dimension Labs/Start with one file From $299 a month

Stop reporting. Start understanding.

Start with one file. Ask why a number moved. Plans from $299 a month, no demo and no contract on monthly plans.