Studies & referenceStudies & reference

Formula to calculate average queue wait time and its effect on abandonment

9 min read

What this formula actually measures (and what it doesn't)

Queue wait time is the stretch that goes from when the customer writes to when a human agent opens their conversation. It is not the same as first response time: if a bot or an auto-reply answers first, the customer already received something, but they kept waiting for a person. That distinction is what makes two businesses with the same 'response time' have completely different abandonment rates. In a hair salon, for example, the auto-reply by schedule can confirm that the message arrived at 22:40, but the conversation asking for a Saturday appointment keeps waiting until 9 the next morning.

The formula measures an average, and averages in customer service hide the queue. A business can have an average wait of 4 minutes and still lose customers every day, because the average mixes conversations that were answered in 30 seconds with those that sat unopened for three hours. That's why below you'll find the average formula and, next to it, how to calculate what percentage of conversations exceeded the tolerable threshold. Both things together are what explain abandonment.

All the numbers on this page are examples with data you enter yourself. There are no market or Wando figures: the formula works with whatever you export from your own inbox.

The average queue wait time formula

It is calculated like this: for each conversation, you subtract the moment the customer sent their first message from the moment a human agent took it. You add up all those differences and divide by the number of conversations that were actually handled. The ones that were never handled don't go into the average: they go into the abandonment calculation. Step 1 of the table is where most mistakes happen: if you take the row insertion date instead of the timestamp Meta sends, any analysis of schedules and wait time will give you a false result, because a history import can put months of conversations into a single day.

StepWhat you doFormulaWatch out for
1Mark the startTimestamp of the customer's first incoming messageUse Meta's timestamp, not the date the row was inserted into your database
2Mark the endTimestamp of the first outgoing message sent by a personDon't count auto-replies or automated templates
3Calculate the wait for each conversationWait = end − startDiscard negative values: they are data entry errors, not instant waits
4AverageAverage wait = sum of waits ÷ conversations handledThe divisor is conversations handled, not conversations received
5Measure abandonmentAbandonment = conversations without a human reply ÷ conversations receivedIt is calculated separately, never inside the average

How to apply it with your own numbers

Let's suppose a business that receives 40 new conversations per day and has two people handling them. Each agent can handle three active conversations at a time, and an active conversation takes about 6 minutes of human work between reading, thinking, and replying. With those three data points you can already estimate capacity and compare it with demand. The useful workday is not the full workday: you have to subtract breaks, meetings, and administrative tasks. If you don't subtract them, capacity comes out higher than it really is and the queue looks like a peak problem when it's actually structural.

Data pointExample valueHow you get it yourself
New conversations per day40Count of first incoming messages per workday
Agents at the same time2How many people have the inbox open during peak hours
Active conversations per agent3Direct observation during one peak hour
Minutes of work per conversation6Time five real conversations and average them
Useful workday per person300 minutesWorkday minus breaks, meetings, and administrative tasks
Daily work capacity2 × 3 × (300 ÷ 6) = 300 conversationsThe calculation above, but measured during one real hour of observation
Queue that builds up40 − 300 = −260If it's positive, the queue grows every day

Watch out for that result: the multiplication gives 300 conversations per day and demand is 40, so in theory there's spare capacity. But the number is misleading for two reasons. First, it assumes an agent can have three conversations open for 300 minutes straight, which doesn't happen: there are stretches with a single inquiry and stretches with six. Second, it assumes demand is spread evenly across the workday, and in almost every industry it isn't. In food service, demand concentrates between 12:00 and 14:00 and between 20:00 and 22:00; the rest of the day the inbox is almost empty. That's why capacity is calculated by time slot, not by day: if 25 conversations come in during the two-hour lunch peak and there's only one agent, the real capacity of that slot is 1 × 3 × (120 ÷ 6) = 60, and there the queue doesn't build up. The problem appears when the peak coincides with the only person who is also taking payments or dispatching orders.

The abandonment threshold: when waiting turns into a lost customer

There's no universal number of minutes after which everyone leaves. What you can do is calculate, with your own data, at what point of waiting the conversation stops moving forward. Here's how: you group conversations by waiting ranges and, in each range, measure what percentage ended in a sale, in a resolved inquiry, or in silence. The range where silence jumps is your real threshold. The numbers in the table are an example to show the method: replace each cell with your own count.

Waiting rangeConversationsEnded in somethingEnded in silence% silence
Less than 5 minutes120962420%
Between 5 and 15 minutes80562430%
Between 15 and 60 minutes50262448%
More than 60 minutes3092170%

In that table, the threshold is between 15 and 60 minutes: there silence goes from 30% to 48%. Anything you do to bring waiting below that range has a direct impact on conversations that get recovered. What you do to bring it from 5 down to 3 minutes, on the other hand, barely moves the needle: those conversations were already being handled. A typical case is a real estate agency: inquiries about a property that come in after 20:00 wait until the next morning, and if no one separates them from the overall average, they contaminate all the metrics. The way to handle them is to measure them as a separate category: how many come in outside business hours, how many are answered when you open, and how many never write again. That last number is the real cost of not having coverage outside business hours.

Why the average alone isn't enough: the 90th percentile wait

A business with an average wait of 6 minutes can have 10% of conversations waiting two hours. That 10% is what generates the complaints, the bad reviews and the customers who don't come back. To see it, sort all wait times from lowest to highest and look at the value that leaves 90% of cases below it. If your 90th percentile is far above your average, you have a queue problem, not a speed problem. The practical reference: when the 90th percentile exceeds three times the average, the distribution is so stretched that the average no longer describes the real experience of your customers. And when the percentage of conversations that cross your threshold passes 20%, it is no longer an isolated case: it is a fixed portion of your demand that is lost every day. The five indicators in the table are calculated with the same conversation export: it is enough to sort by wait time and look at the extremes.

IndicatorWhat it tells youWhen it's a warning sign
Average waitHow long the typical customer waitsIt creeps up and nobody notices until it's too late
90th percentileHow long the worst-served customer waitsMore than three times the average indicates an out-of-control queue
Daily maximumThe real worst caseIt always appears at the same time: it's a shift problem
% over the thresholdHow many conversations cross your limitAbove 20% you are already losing inquiries
AbandonmentConversations without a human responseAny sustained value above 10% deserves review

What to do when the wait exceeds the threshold

  1. 1Separate the wait by time slot before touching anything. If the problem is concentrated in two hours of the day, the solution is shifts, not more people all day.
  2. 2Compare the demand of each time slot with the number of agents online in that slot. Most queues are born from a mismatch of schedules, not from a total lack of staff.
  3. 3Review how many conversations are left open without a response at the end of the day. Those are pure abandonment and usually explain the 90th percentile.
  4. 4Define an explicit threshold and write it down: for example, no conversation waits more than 15 minutes during business hours. A threshold that isn't written down can't be monitored.
  5. 5Set up an alert for when the oldest unattended conversation crosses that threshold. You don't need to automate the response, it's enough for someone to look.
  6. 6Measure abandonment before and after every change. If you moved shifts and abandonment didn't drop, the bottleneck was somewhere else.

Order matters. Changing the wording of responses or adding templates improves the experience, but it doesn't move the queue wait time: that depends on how many simultaneous conversations your team can take and at what times it is online. If the queue grows, first you adjust capacity and then you polish the content.

Measurement mistakes that inflate or hide the wait

  • Counting the auto-reply by schedule as if it were human attention. The customer received a message, but kept waiting: if you count it, your average wait drops and abandonment becomes inexplicable.
  • Using the row insertion date instead of the message timestamp. An imported history can pack months of conversations into a couple of days and ruin any analysis by time slot.
  • Including conversations that were never attended in the average. Those don't have a wait time: they have abandonment, and they are measured separately.
  • Averaging without separating by channel. If you handle WhatsApp, Instagram and Messenger in the same inbox, each channel can have a different wait and the overall average doesn't tell you which one to fix.
  • Measuring a single week. The wait varies by day of the week and by season; with seven days you can mistake a normal peak for a trend.
  • Forgetting the conversations the customer closed on their own. If the customer stopped writing, you don't know if they left or if it was resolved. Mark that status by hand so you don't count it as a success.

How to know if service really improved

The average wait can drop for two opposite reasons: because you're answering faster or because you're receiving fewer inquiries. To avoid confusing them, always measure the three things together: conversations received, average wait, and abandonment rate. If the wait dropped but inquiries dropped too, you didn't improve: you lost the volume. Read the table by rows, not by columns: a single isolated indicator can always be interpreted in two opposite ways.

ScenarioConversationsAverage waitAbandonmentReading
Real improvementSame or moreDownDownThe team handles better with the same demand
Fallen demandDownDownSame or upNothing improved: the customers left
More peopleUpDownDownIt works, but check whether the cost is justified
OverloadUpUpUpThe queue grows faster than the capacity
Specific bottleneckSameSameUpThere's a specific time slot or channel breaking everything

Where an AI tool fits into this calculation

An inbox with AI suggestions doesn't change the formula: it changes one of its terms. If the AI proposes the answer and the agent approves it with a click, the minutes of work per conversation drop, and with that the number of simultaneous conversations each person can sustain goes up. That reduces the wait in the queue without adding people. Wando works this way, with Meta's official WhatsApp API, and learns from the business's real answers instead of relying on flows that have to be programmed. If you want to try it, there are 14 days of trial without a card, and current plans can be found at wando.online/pricing.

What AI doesn't fix is a schedule mismatch or a demand that exceeds the installed capacity. If your 90th percentile is two and a half hours because at that time no one is connected, no automatic suggestion will bring that number down. The formula is precisely for distinguishing the two cases before spending on the wrong solution.

Template to build your own measurement

With these five fields per conversation you can already calculate everything on this page: conversation identifier, timestamp of the first incoming message, timestamp of the first human response, channel, and whether it ended in something or stayed silent. With that you get average wait, 90th percentile, percentage over the threshold, and abandonment. If you also add the tag for the reason for the inquiry, you can see whether the wait hits one type of inquiry more than another, which is usually the data point that decides where to put the next effort. In a store, for example, the tag 'status of my order' can have an average wait of 3 minutes and the tag 'exchange or return' of 40, because the second requires someone to check the system before responding. That breakdown by tag is what tells you whether the problem is staffing or the information available to respond.

Frequently asked questions

What is the difference between queue wait time and first response time?+

First response time is how long it takes for any message to go out, including an auto-reply or a bot. Queue wait time is how long it takes for a person to step in. If you only measure the first one, your metric looks good while customers keep waiting for a human.

What abandonment percentage is acceptable?+

There is no universal number. What works is comparing your abandonment against your own threshold: if you set that no conversation waits more than 15 minutes and abandonment in that range is low, you are within it. Any sustained value above 10% of conversations without a human response deserves a review.

Why is my average wait low but I still lose customers?+

Because the average hides the queue. A few conversations waiting hours can be covered up by many answered in seconds. Look at the 90th percentile and the daily maximum: that is where the cases that generate complaints show up.

Can I calculate this without a new tool?+

Yes. You export the conversations with the date of the first incoming message and the date of the first human response, and with a spreadsheet you get the average, the 90th percentile and abandonment. A tool helps automate the measurement, but the calculation is the same.

Does AI lower queue wait time?+

It lowers one of the terms of the formula: the minutes of human work per conversation. With suggestions the agent approves with one click, each person handles more simultaneous conversations and the queue drains faster. It does not fix, however, a scheduling or total capacity problem.

Answer WhatsApp with AI

Try Wando free. No credit card required.