Formula to calculate the rate of conversations that exceed the target wait time (SLA breach rate)
What exactly the SLA breach rate measures
The SLA breach rate (the rate of failing to meet the target wait time) is the percentage of conversations that waited longer than what the business defined as acceptable before receiving a first human response. It does not measure how long it took: it measures how many times the promise was broken. It is the difference between saying "we take 40 minutes on average" and saying "in 1 out of every 4 conversations we take more than 15 minutes." The second statement is the one that is useful for managing, because the average hides the tail.
It is a binary indicator per conversation: each conversation either breaches the SLA or does not breach it. That makes it easy to calculate and hard to gloss over. If instead you measure the average wait time, a week with many fast responses and a few abandoned conversations can produce an average that looks good while the customer's actual experience gets worse.
This indicator is different from the average queue wait time. The average tells you how a typical case feels; the breach rate tells you how many cases fell outside the acceptable range. They are read together, never one alone.
The formula, step by step
The base formula is a simple division: conversations that exceeded the target time, over the total conversations that entered the measurement window, times one hundred.
| Step | What is calculated | How it is calculated | Typical pitfall |
|---|---|---|---|
| 1 | Define the target time | Choose a single number in minutes for business hours (for example, 15 minutes) and another for outside business hours | Define three different SLAs depending on the channel and then be unable to compare weeks |
| 2 | Mark the start of the clock | The timestamp of the customer's first inbound message in that conversation | Use the time the record was inserted into the database instead of the message timestamp: it distorts the entire analysis |
| 3 | Mark the end of the clock | The timestamp of the first human response in that conversation | Count an auto-reply for business hours or an automatic acknowledgment as a response |
| 4 | Classify each conversation | Breached the SLA (waited longer than the target) or within the SLA | Exclude the conversations that breached from the denominator: the number looks nice and is useless |
| 5 | Calculate the rate | (Conversations that breached the SLA ÷ Total conversations measured) × 100 | Calculate based on a total of 12 conversations and draw conclusions |
Step 2 is the one that generates the most errors. If your messages table has a column with the timestamp sent by the channel and another with the row insertion date, always use the channel one: the insertion one reflects when the system processed it, not when the customer wrote.
With that, you have the number. The rest of the page is about how to make that number useful for something.
Before calculating: the minimum case threshold
A breach rate calculated over 15 conversations says nothing: a single broken conversation moves the number by almost 7 points. Before publishing the indicator internally, define a case floor below which the data is marked as "inconclusive" instead of being compared against the previous week. The following table is a reading guide, not a statistical rule: it helps ensure no one celebrates or panics over noise.
| Conversations measured in the week | How to read the result | What can be done with the number |
|---|---|---|
| Fewer than 30 | Inconclusive | Look at cases one by one, not the rate |
| 30 to 80 | Indicative | Detect a trend over 3 or 4 weeks, don't compare week against week |
| 80 to 200 | Reliable for management | Compare weeks and set an internal goal |
| More than 200 | Reliable for service agreements | Use it in a commitment with the team or with a client |
The ranges are an operational guide for deciding when a number is actionable, not a statistical calculation.
Weekly tracking table (to copy and fill in)
This is the spreadsheet worth maintaining: one row per week, always with the same columns and always with the target time noted. If the target changes along the way, note the change and cut off the backward comparison: don't compare a week with a 15-minute SLA against another with a 30-minute SLA.
| Week | Conversations measured | Outside business hours (count) | Outside business hours (%) | Breach SLA (count) | Breach rate (%) | Target (min) | Note of the week |
|---|---|---|---|---|---|---|---|
| Week 1 | |||||||
| Week 2 | |||||||
| Week 3 | |||||||
| Week 4 | |||||||
| Week 5 |
The after-hours column is calculated using the timestamp of the customer's message, not the date it was inserted into the database. If the business does not operate 24 hours, most after-hours conversations should not count as a breach: they are measured separately.
The "after-hours" column is there for a specific reason: if the business operates from 9:00 to 18:00 and someone writes at 23:00, that conversation did not break the SLA, it simply arrived when no one was there. Mixing them inflates the breach rate and makes the team lose credibility with the numbers. They are always kept separate.
How to separate real breaches from business hours
The clean breach rate is calculated only on conversations that came in during business hours. After-hours ones are measured separately, with their own indicator: what percentage of messages that arrive after hours receive a response within the first hour of the next day. They are two different problems and they are fixed with different things.
- Within business hours and breaks the SLA: it is a capacity or assignment problem. It is fixed with more staff in the critical time slot, better distribution of conversations, or fewer parallel tasks per operator.
- After hours and breaks the SLA: it is a coverage problem. It is fixed with an auto-reply by schedule, a reduced shift, or explicitly accepting that no one is available and saying so.
- Within business hours but the conversation was left unassigned: it is a process problem. The conversation came in, no one took it, and the clock kept running.
- Within business hours, assigned and without a response: it is a per-operator workload problem. It is measured per person and per time slot, not by overall average.
Without that separation, the overall breach rate mixes four causes with four solutions and does not allow you to decide anything.
Example calculation with actual numbers
Let's suppose a week with 140 conversations during business hours and a target of a first human response within 15 minutes. Of those 140, 35 exceeded 15 minutes. The breach rate is (35 ÷ 140) × 100 = 25%. One out of every four conversations waited longer than what the business said it would wait.
Now, the same business had 60 conversations outside business hours. If you added them to the calculation, the denominator would go to 200 and the breach rate would drop to 17.5% without anything having improved: the problem was simply diluted among conversations that shouldn't have counted. That is the most common mistake when reporting the metric, and it is the reason the outside-hours column exists in the table.
| Scenario | Conversations within business hours | Break SLA | Breach rate | Reading |
|---|---|---|---|---|
| Correct calculation | 140 | 35 | 25% | The real in-hours service metric |
| Inflated calculation (includes outside hours) | 200 | 35 | 17.5% | Prettier number, worse decision |
| Only the critical time slot (12:00 to 15:00) | 48 | 22 | 45.8% | Shows where the real problem is |
The third scenario is the one you should always calculate in addition to the overall one: the breach rate by time slot shows where to put staff.
What to do with the result (and what not to do)
The breach rate is not a goal you can lower from one day to the next. It is a thermometer. What you decide with it is where to look: if the overall number is good but one time slot is bad, the problem is coverage in that time slot. If all time slots are similar, the problem is total capacity or the assignment process.
- 1Calculate the overall breach rate for the week and write it down in the table.
- 2Calculate the same number by time slot (morning, midday, afternoon) to find the peak.
- 3Calculate the breach rate by operator, but only to detect extreme cases, never for a public team ranking.
- 4Cross the non-compliance peak with the number of simultaneous conversations in that time slot: if they match, it is capacity; if they don't match, it is process.
- 5Choose a single action for the following week and measure again. Changing three things at once makes it impossible to know which one worked.
What you should not do is set a breach rate goal of zero. There will always be conversations that break the target: a demand peak, a complex inquiry, a holiday. A goal of zero makes the team stop reporting real cases or start closing conversations so they don't count. An acceptable range, reviewed every month, is more useful than an unreachable zero.
If the business uses Wando, the inbox with AI suggestions that learns from the team's real responses can reduce first response time, but the metric is still measured the same way: with the timestamp of the customer's message and the timestamp of the first human response. The tool changes the speed, not the formula.
Errors that invalidate the calculation
- Using the record's insertion date in the database instead of the message timestamp: if there was a history import, almost all messages will appear to be from the same time and the indicator becomes useless.
- Counting the schedule auto-reply as the first human response: it lowers the breach rate artificially and hides the coverage problem.
- Excluding conversations that breached the SLA from the denominator: it is the equivalent of raising the average by lowering the grades.
- Changing the target time without noting it: two weeks with different targets cannot be compared.
- Measuring over fewer than 30 conversations and drawing conclusions: it is noise, not signal.
- Reporting only the average wait time: it hides exactly the queue that this indicator exists to show.
Frequently asked questions about the SLA breach rate
Short answers to the questions that come up when a WhatsApp support team starts measuring this indicator.
Frequently asked questions
What is the difference between SLA breach rate and average wait time?+
The average tells you how long a typical case waited; the breach rate tells you what percentage of conversations exceeded the target time. A low average can coexist with a high breach rate if there is a queue of cases that waited a very long time. They are measured together.
How often should it be calculated?+
Weekly for team management and monthly to review the trend. With fewer than 30 conversations measured in the week, the number is indicative and should not be compared against the previous week.
Do out-of-hours conversations count as a breach?+
No, if the business does not operate 24 hours. They are measured separately, with their own indicator: what percentage of messages that arrived outside business hours received a response within the first hour of the next day. Mixing them inflates or dilutes the real breach rate.
What counts as a first human response?+
A message written by a person on the team. Auto-replies by schedule, automatic acknowledgments, and template messages triggered without intervention do not count. AI-suggested responses approved by a person do count, because a person decided to send them.
What should I do if the breach rate rises two weeks in a row?+
First separate by time slot to locate the peak. Then cross that peak with the number of simultaneous conversations: if they coincide, it is a capacity problem in that slot; if they do not, it is an assignment or process problem. Change one thing and measure again.
Can it be used as a commitment to an external client?+
Only if the measured volume is high and stable. With fewer than 200 weekly conversations, the number moves too much to commit to it contractually. For internal use it works from much smaller volumes.
Can it be calculated per operator?+
Yes, but carefully: it is useful for detecting extreme cases and distributing workload, not for public team rankings. An operator with more complex conversations may have a higher breach rate without working worse.
Answer WhatsApp with AI
Try Wando free. No credit card required.