WhatsApp customer service quality metrics: table with formula, data source and frequency
What this table is for
Almost all customer service dashboards measure the same thing: how many messages came in and how many went out. That tells you volume, not quality. A business can answer 800 conversations per week and be losing customers without knowing it, because the number that matters is not how many it answered but how, how long it took and how many went unanswered. This page is a reference table: 16 indicators organized by category, each with its formula, where the data comes from and how often it should be reviewed. It is not a ranking of tools or a recommendation of which software to use: it is the skeleton for building your own dashboard, with your own numbers.
The rule that governs everything that follows: an indicator without a declared data source is not an indicator, it is an opinion. If you cannot say which table, which field or which report the number comes from, do not put it on the dashboard. And if the data comes from your own database, be careful which date column you use: for any analysis of schedules or times, the date that matters is the event date (when the message was sent or received according to the channel), not when the row was inserted into your database. If you mix the two, any hourly distribution will give you nonsense.
How to read the table
Each row has five columns. The first is the name of the indicator. The second, what it measures in one sentence. The third, the formula to calculate it. The fourth, where the raw data comes from. The fifth, how often it should be measured. The frequency is not arbitrary: volume and workload indicators are reviewed often because they change every day; quality and outcome indicators are reviewed less frequently because they need a sample to avoid false conclusions.
All formulas are calculated on the event date (when the message was sent or received), not on the insertion date in your own database. Mixing the two invalidates any analysis of times and schedules.
| Indicator | What it measures | Formula | Data source | Frequency |
|---|---|---|---|---|
| Conversation volume | How many distinct conversations came in during the period | Count unique conversations with at least one incoming message | Message inbox, grouped by contact and event date | Daily |
| Message volume | How many messages were sent and received during the period | Incoming messages + outgoing messages | Message inbox, by event date | Daily |
| First response time (FRT) | How long the business takes to answer the first message of a new conversation | Average of (date-time of first outgoing − date-time of first incoming) per conversation | Inbox, cross-referencing first incoming and first outgoing by contact | Weekly |
| Resolution time | How long the conversation lasts from the first incoming to the last outgoing | Average of (last outgoing − first incoming) per closed conversation | Inbox, by conversation with closed status | Weekly |
| Response rate | What percentage of conversations received at least one response | (Conversations with at least one outgoing ÷ total conversations) × 100 | Inbox, by conversation | Weekly |
| Unanswered conversations | How many conversations ended with no outgoing message | Conversations with zero outgoing messages | Inbox, filtering by absence of outgoing | Daily |
| Messages per conversation | How many exchanges a conversation needs to be resolved | Total messages ÷ total conversations | Inbox, by period | Monthly |
| Reopening rate | What percentage of closed conversations was reopened | (Reopened conversations ÷ closed conversations) × 100 | Inbox, by status change | Monthly |
| Escalation to human | What percentage of conversations required direct human intervention | (Conversations with human intervention ÷ total conversations) × 100 | Inbox, by agent assignment | Weekly |
| Load per agent | How many conversations each person handles during the period | Assigned conversations ÷ active agents | Inbox, by assigned agent | Weekly |
| Hourly distribution | In which time slots messages come in | (Messages per slot ÷ total messages) × 100 | Inbox, by event hour | Monthly |
| Outside business hours | What percentage of messages comes in outside business hours | (Messages outside business hours ÷ total messages) × 100 | Inbox, by event hour against declared business hours | Monthly |
| Template usage | How many conversations are opened with an approved template | Conversations started with a template ÷ total conversations started | Inbox, by type of initial message | Monthly |
| Campaign response | What percentage of contacts in a campaign responds | (Contacts who respond ÷ contacts reached by the campaign) × 100 | Campaign module, by send | Per campaign |
| Contact reasons | What proportion of conversations is for each reason | (Conversations per reason ÷ total conversations) × 100 | Inbox, by reason tag | Monthly |
| Recontact | What percentage of conversations is from a contact who had already written before | (Conversations from recurring contacts ÷ total conversations) × 100 | Inbox, cross-referencing contacts by identifier | Monthly |
The indicators almost no one measures and that say the most
Of the 16, there are four that rarely appear on dashboards and are the ones that best predict whether support is working: unanswered conversations, reopen rate, escalation to a human, and out-of-hours. All four have something in common: they are indicators of friction, not of productivity. They measure what broke, not what was produced.
- Unanswered conversations: if it rises, it is not a speed problem, it is a coverage problem. It could be that there are not enough people during a time slot, that the inbox is not assigning properly, or that someone is closing conversations without replying.
- Reopen rate: if it rises, the conversation is being closed before it is resolved. A customer who writes again about the same topic is a premature closure, not a new customer.
- Escalation to a human: if it is very high, the first level is not resolving. If it is very low and complaints are rising, nobody is escalating when they should.
- Out-of-hours: it is not a quality indicator in itself, but it defines whether you need auto-replies, on-call staff, or simply to accept that it will be answered the next day. Without this number, any coverage decision is made blindly.
How they combine to read the operation
A single indicator says nothing on its own. These are the combinations that do inform:
The combinations are indicative: they help you know where to look first, not to diagnose without reviewing the raw data.
| If you see this | And this at the same time | This is probably happening | What to check first |
|---|---|---|---|
| Low FRT | High reopen rate | Replies are fast but issues are not resolved | Contact reasons and quality of the first reply |
| High FRT | Stable volume | Not enough people during the peak intake time slot | Hourly distribution and workload per agent |
| High unanswered conversations | High out-of-hours | Messages come in when nobody is there | Business hours and auto-replies |
| High escalation to a human | High messages per conversation | The first level does not resolve and forwards everything | Repeated contact reasons |
| High response rate | High recontact | Everything is answered but the customer comes back anyway | Resolution time and reasons |
| Low template usage | High unanswered conversations | No conversation is being started outside the window | Template opening process |
Frequent mistakes when measuring support on WhatsApp
These are the mistakes that make a dashboard lie. None of them are technical: all are about method.
- Using the record's upload date instead of the event date. Any analysis of schedules or times comes out wrong. The column that matters is the channel's event column.
- Averaging times without excluding open conversations. A conversation that is still open has no resolution time: if you count it as zero, you lower the average artificially.
- Measuring FRT over all messages instead of over the first response of each conversation. If you count every outbound as a response, the number becomes useless.
- Counting conversations by number of messages. A conversation with 40 messages is not worth 40 times more than one with a single message.
- Comparing months with a different number of business days without normalizing. A month with long holidays is not comparable to one without holidays.
- Mixing channels in the same indicator. If you measure WhatsApp, Instagram and Messenger in the same response rate, you don't know which channel is failing.
- Not defining what a closed conversation is. If the criteria changes from week to week, the reopening rate stops making sense.
- Measuring without recording the reason for contact. Without labels, you can't know what breaks; you only know how much.
About WhatsApp template approval times: Meta publishes 'up to 48 hours' as the maximum period. There is no shorter guaranteed period, so any indicator that depends on a new template has to account for that wait in the plan, not in the indicator.
Checklist to build the dashboard
Before looking at the first number, check this off. If something is left unchecked, the dashboard will give you data you won't be able to defend.
- 1Define what a conversation is for your business: a contact with at least one inbound? A thread with an open status? Write it down and don't change it.
- 2Define what a closed conversation is and who closes it: the agent? The system due to inactivity? The customer?
- 3Define what a response is: the first outbound of the conversation, not any outbound.
- 4Confirm that the date you will use for times and schedules is the event date, not the insertion date.
- 5Define the time slots before calculating distribution: if you change them later, the months are not comparable.
- 6Choose from the table the indicators you will look at. Don't look at all 16 from day one: start with volume, FRT, response rate and no response.
- 7Define who is responsible for each indicator. A number without an owner doesn't move.
- 8Set the frequency of each one and respect it. A weekly indicator looked at every day generates noise and rushed decisions.
- 9Record the reason for contact from day one. It is the indicator you will use the most and the one that takes the longest to build history.
- 10Write down the date of each criteria change. If you change the definition of a closed conversation in March, February's data is not comparable.
What is NOT a quality indicator
There are numbers that are used as if they measured quality and they don't. It is worth saying so because they take up space on dashboards and divert decisions.
- Number of messages sent: it measures activity, not outcome. A team can send a lot and resolve little.
- Number of agents online: it measures presence, not coverage. Ten people online at the same time don't cover an empty time slot.
- Total session time: it measures hours, not service. You can be online without answering.
- Number of closed conversations without crossing it with reopening: closing a lot can mean closing badly.
- Number of quick replies sent: it measures template usage, not resolution.
What this looks like in practice
A business that starts measuring with this table usually discovers two things in the first month. First: the average FRT is higher than they thought, because they were looking at the response time of the messages that were actually answered and not that of the entire conversations. Second: one time slot concentrates most of the unanswered messages, and that slot does not match the one the team believes is the busiest. Neither of the two findings requires new software: it requires having properly defined the indicators and having used the correct date.
The Wando inbox shows message and campaign statistics, and lets you tag contacts, which is what you need to calculate contact and recontact reasons. If you want to see what it looks like, the trial is 14 days with no card. But the table above works the same with any tool: what determines whether the dashboard is useful is not the software, it is that each indicator has a declared formula, source and frequency.
Frequently asked questions
What is the most important WhatsApp customer service quality metric?+
There is no single one. If you had to pick two to start with: response rate (what percentage of conversations received a reply) and reopen rate (what percentage was reopened). The first tells you whether conversations are being handled; the second, whether they are being resolved. Together they cover 80% of typical problems.
How often should first response time be measured?+
Weekly. It is a metric that changes with workload and team composition, so looking at it monthly means you find out about problems too late. Daily generates noise: a day with few conversations gives averages that represent nothing.
Can customer service quality be measured without a specific tool?+
Yes. The 16 metrics in the table can be calculated with the message inbox and a spreadsheet, as long as you record the event date and not the insertion date, and as long as you define beforehand what a conversation is and what a closed conversation is. The tool speeds up the calculation, it does not enable it.
Why shouldn't the insertion date in the database be used to measure schedules?+
Because the insertion date is when the record was saved, not when the event happened. If there was a mass history import, that date will concentrate everything on the same day and time, and any time-of-day distribution analysis will give a false result. For times and schedules, use the channel's event date.
What should I do if my reopen rate is high?+
First check the contact reasons of the reopened conversations: if they are all the same topic, the problem is in the resolution of that topic, not in overall service. Second, look at whether the reopens are concentrated in one agent or one time slot. Third, check whether conversations are being closed by automatic inactivity before the customer is done.
Is escalation to a human a bad metric?+
Not necessarily. A high escalation rate can mean the first level is well trained to hand off what is not its responsibility. The problem is when it rises together with messages per conversation: that indicates the first level is not resolving and hands off everything. It has to be read together with other metrics, not alone.
How is template usage measured?+
By counting what percentage of conversations started by the business used an approved template, out of the total conversations started by the business. It is a process metric, not a quality metric: it tells you whether the team is using the available templates or waiting for the customer to write first.
What is a contact reason and why does it matter?+
It is the tag that classifies why the customer wrote: price inquiry, complaint, order tracking, appointment, etc. It matters because without reasons you can know how many conversations you had but not what is breaking. It is the metric that takes longest to build useful history, so it is worth starting to record it from day one.
Answer WhatsApp with AI
Try Wando free. No credit card required.