Formula to size your support team by time slot
What this formula is for
The question that comes up when a business's WhatsApp starts moving is always the same: how many people do I need to handle this? The answer is almost never a fixed number, because volume isn't flat. There are time slots where three conversations come in per hour and slots where thirty come in. Putting the same number of people on all of them is the fastest way to have an idle shift at 10 and a bottleneck at 13.
This method is for building staffing slot by slot, with a formula you can apply in a spreadsheet. It doesn't need special tools: it needs three numbers you already have or can measure in a week, and a fourth factor that is a management decision, not a measurement. The idea is that you leave here with your own table, not with a general rule.
Everything that follows is method: we provide the formula, you provide the numbers. There are no market figures or benchmarks on this page because we don't have a verifiable source to cite them, and we prefer not to make them up.
The three numbers you need to measure
Before calculating anything you have to gather the inputs. If you skip this step and estimate from memory, the result will be off by a factor of two, either up or down. The three numbers are these.
- Incoming conversations per hour (ICPH): how many new or reactivated conversations come in during each time slot. Don't count individual messages: count conversations. A customer who sends six messages in a row is one conversation, not six.
- Average handling time (AHT): how long it takes one person to resolve a conversation, in minutes. It's measured from when they take it until they close it or leave it waiting for the customer's reply.
- Simultaneity factor (SF): how many conversations one person can handle at the same time without quality dropping. This isn't a universal number: it depends on the channel, the type of inquiry, and whether or not there are suggested replies.
AHT is the most underestimated number. People tend to remember the easy conversations, the ones resolved in two messages, and forget the ones that drag on because the customer disappears and comes back. For AHT to be useful, it has to be measured on a sample of closed conversations, not on the ones you remember.
The formula, step by step
The base formula has two parts. The first calculates the workload for the time slot. The second converts it into people. Then a coverage margin is added that covers absences, peaks and the time people are not attending (reading, writing, drinking water, resolving something outside the chat).
- 1Step 1 — Workload in minutes: CEH × TMM. If 20 conversations come in per hour and each one takes 6 minutes, the workload is 120 minutes of work per hour.
- 2Step 2 — Capacity of one person: 60 × FS. If one person can handle 2 conversations at a time, their capacity is 120 minutes of work per hour.
- 3Step 3 — Theoretical agents: workload ÷ capacity. With the numbers above, 120 ÷ 120 = 1 agent.
- 4Step 4 — Coverage margin: multiply the theoretical agents by the coverage factor you choose (see table below). If the factor is 1.25, the result is 1.25 agents.
- 5Step 5 — Operational rounding: round up to the nearest whole number. You can't put 1.25 people in a time slot. If the result is 1.25, you need 2 people in that slot, unless you can cover the 0.25 with someone who also handles something else.
- 6Step 6 — Repeat per time slot: do the calculation for each slot of the operating hours. Don't average the whole day, because that's exactly where the information you're looking for gets lost.
Step 5 is the one that generates the most discussion. Rounding up is more expensive, but rounding down is what produces the queues that later nobody knows how to explain. If the result for a time slot is 1.1 and you cover it with one person, that person is at the limit the whole shift and any unforeseen event overwhelms them. The decision to round up or down is a management one, but it has to be a conscious one.
Example table with a full time slot schedule
These numbers are an invented example to show how the table is built. They are not data from any real business nor a benchmark: they are the ones we would use to explain the method. Replace them with your own.
| Time slot | Conversations/hour (CEH) | TMM (min) | Workload (min/hour) | FS | Capacity (min/hour) | Theoretical agents | With 1.25 coverage | Staffing |
|---|---|---|---|---|---|---|---|---|
| 09:00–10:00 | 8 | 6 | 48 | 2 | 120 | 0.40 | 0.50 | 1 |
| 10:00–11:00 | 14 | 6 | 84 | 2 | 120 | 0.70 | 0.88 | 1 |
| 11:00–12:00 | 22 | 6 | 132 | 2 | 120 | 1.10 | 1.38 | 2 |
| 12:00–13:00 | 18 | 7 | 126 | 2 | 120 | 1.05 | 1.31 | 2 |
| 13:00–14:00 | 10 | 7 | 70 | 2 | 120 | 0.58 | 0.73 | 1 |
| 14:00–15:00 | 26 | 7 | 182 | 2 | 120 | 1.52 | 1.90 | 2 |
| 15:00–16:00 | 30 | 6 | 180 | 2 | 120 | 1.50 | 1.88 | 2 |
| 16:00–17:00 | 20 | 6 | 120 | 2 | 120 | 1.00 | 1.25 | 2 |
| 17:00–18:00 | 12 | 6 | 72 | 2 | 120 | 0.60 | 0.75 | 1 |
Looking at the table, you can see what the daily average hides. The 15:00 to 16:00 slot needs two people, and the 09:00 to 10:00 slot needs one. If you average the whole day, the average of theoretical agents is around 0.94, and with that you would conclude that one person is enough. But between 14:00 and 17:00 there are three consecutive slots that require two. That is the block where the queue builds up if you don't reinforce it.
A typical food service case: the 12:00 to 14:00 slot concentrates midday orders and the 20:00 to 22:00 slot concentrates evening orders, with clear valleys in between. In a neighborhood store, on the other hand, the peak usually falls in the after-work slot. In a beauty salon, Saturday morning can be the busiest slot of the week. The formula is the same; what changes is where the load concentrates.
How to choose the concurrency factor without getting it wrong
The CF is the most debatable number in the formula because it doesn't come from a direct measurement, it comes from observing how your team works. A CF of 1 means each person handles one conversation at a time, from start to finish, without switching. A CF of 3 means each person has three open conversations at the same time. The higher the CF, the fewer people you need in theory, but the greater the risk that responses are delayed and the customer notices they are being kept waiting.
| CF | What it means in practice | When it's reasonable | Main risk |
|---|---|---|---|
| 1 | One conversation at a time, from start to finish | Long, technical or sensitive inquiries; or people without experience | High staffing; the agent sits idle while waiting for the customer's response |
| 2 | Two open conversations, alternating responses | The most common case in commercial chat support | If volume rises, context switching starts to take its toll |
| 3 | Three open conversations at the same time | Short, repetitive inquiries with pre-prepared responses | First response time stretches and the customer notices |
| 4 or more | Intense multitasking-style support | Only with highly standardized flows and pre-approved responses | Conversations get lost, data gets crossed, quality drops without warning |
A practical way to calibrate the CF is to look at first response time during the busiest slot. If with CF 2 the first response time stays stable, the CF is right. If it starts to stretch just when volume rises, the real CF is lower than you thought, even if the math worked out in theory.
The coverage factor: why the theoretical number is never enough
Theoretical agents are the load divided by capacity. That number assumes the person is available 100% of the time to handle conversations. In reality they are not: there are breaks, there are meetings, there are administrative tasks, there are days off. The coverage factor is the multiplier that corrects for that difference.
| Team situation | Suggested coverage factor | Why |
|---|---|---|
| Small team, no planned absences, minimal administrative tasks | 1.10 | Covers minor unforeseen events without inflating staffing |
| Team with formal breaks and some administrative work | 1.20 to 1.25 | It's the most common range in commercial support |
| Team with turnover, frequent leave or several tasks besides chat | 1.30 to 1.40 | Covers absences without depending on someone working overtime |
| Critical operation where a delay has a high cost | 1.40 or more | Prioritizes response time over staffing efficiency |
Indicative method ranges, not market benchmarks. The right factor depends on each business's operation and is adjusted with experience from the first few weeks.
A common mistake is applying the coverage factor to the whole day instead of time slot by time slot. If you apply it to the total, the reinforcement is spread evenly and doesn't reach where it's needed. The factor has to multiply each time slot, because absences and peaks also happen in specific time slots.
How to tell if the calculation came out short or long
The formula gives a starting point, not a truth. After applying it, you have to watch three signals for one or two weeks and correct. These signals are more reliable than any theoretical adjustment.
- The calculation came out short if the first response time rises exactly in the highest-volume time slots, if there are conversations left unanswered at the end of the day, or if people start skipping steps in the process to keep up with the volume.
- The calculation came out long if there are entire time slots with the person waiting with no open conversations, if the first response time is extremely low in all time slots (which can be good or can indicate there are too many people), or if the assigned staffing isn't justified by the real measured load.
- The calculation is right if the first response time stays stable across time slots, if there are no conversations left unclosed at the end of the shift, and if the load per person doesn't exceed the FS you defined.
There's a borderline case the formula doesn't capture: conversations that open outside business hours. If the business receives messages at night or on weekends, those messages pile up and all appear together the next morning. That means the first time slot of the day doesn't start with the load shown in the table, but with the table's load plus the overnight backlog. If that backlog is large, the first time slot needs more people than the direct calculation suggests.
How to measure TMM without timing anyone
TMM can be measured without putting a stopwatch next to each person. It's enough to take a sample of closed conversations from the last week and calculate, for each one, the difference between the customer's first message and the agent's last message. That interval includes the customer's waiting times, so you have to subtract them if you want the effective work time. If you can't subtract them, use the total interval and state it clearly: the number will be higher, but it will be consistent.
- 1Choose a sample of at least 30 closed conversations from the last week, spread across the different time slots.
- 2For each one, note the time of the customer's first message and the time of the agent's last message.
- 3Calculate the difference in minutes. If you can, subtract the intervals when the ball was in the customer's court.
- 4Average the sample. That is your reference TMM.
- 5Repeat the measurement every month, because the TMM changes when the type of inquiry changes or when prepared responses are added.
A TMM that drops from one month to the next does not always mean the team improved: sometimes it means they are closing conversations before resolving them. That is why the TMM is looked at together with the reopening rate, that is, how many conversations come back because the customer was not satisfied. If the TMM drops and the reopening rate rises, the number is an illusion.
Spreadsheet: how to build it in five columns
To put this into practice, the spreadsheet needs five columns per time slot. With those five columns and a formula in each one, you have the calculated staffing and you can play with the assumptions without redoing everything by hand.
| Column | What goes in | Formula or value |
|---|---|---|
| A — Time slot | The time range | Text, for example 14:00–15:00 |
| B — CEH | Incoming conversations per hour | Measured value |
| C — TMM | Average handling time in minutes | Measured value |
| D — Theoretical agents | Load divided by capacity | = (B × C) ÷ (60 × FS) |
| E — Staffing | Theoretical agents with coverage, rounded up | = ROUNDUP(D × coverage factor, 0) |
The FS and the coverage factor are stored in separate cells so they can be changed without touching the formula in each row.
With the spreadsheet built, the useful exercise is not to look at the result once but to change the FS and see how the total staffing for the day moves. If going from FS 2 to FS 3 saves you one person across three time slots, the real question is whether your team can sustain FS 3 without first response time dropping. The spreadsheet gives you the number; the decision is still yours.
If you want to cross-reference this calculation with other customer service indicators, there is complementary material on the site: the formula for human attention hours per monthly volume, the formula for conversations per operator per shift, and the formula for average queue wait time. All three use the same inputs you built here, so they can be calculated on the same spreadsheet.
Frequently asked questions
How many agents do I need to handle WhatsApp if I get 20 conversations per hour?+
It depends on the average handling time and the concurrency factor. With 20 conversations per hour and a 6-minute AHT, the workload is 120 minutes per hour. If each person can handle 2 conversations at once, their capacity is also 120 minutes per hour, so the theoretical result is 1 agent. With a coverage factor of 1.25, staffing rises to 2 people in that slot. If the AHT were 9 minutes, the workload would be 180 minutes and the theoretical result would rise to 1.5, which also rounds up to 2 with coverage.
What is the concurrency factor and how do I choose it?+
It is how many conversations one person can handle at the same time without quality dropping. A CF of 1 means one conversation at a time; a CF of 3 means three open conversations alternating replies. There is no universal value: it is calibrated by watching the first response time in the busiest slot. If with CF 2 that time stays stable, the CF is right. If it starts stretching just when volume rises, the real CF is lower.
Why isn't averaging the whole day's workload enough?+
Because the average hides the peaks. A day with slots of 8 and 30 conversations per hour can average 19, and with that average you would conclude that one person is enough. But the slots with 30 need two or more, and if you don't reinforce them, that's where the queue builds up. The calculation is done slot by slot precisely so that the reinforcement goes where it's needed.
How do I measure average handling time without timing anyone?+
Take a sample of at least 30 closed conversations from the last week, spread across time slots. For each one, note the time of the customer's first message and the time of the agent's last message, and calculate the difference in minutes. If you can, subtract the intervals when the ball was in the customer's court. The sample average is your reference AHT, and it's worth repeating the measurement every month.
What do I do with conversations that come in outside business hours?+
They pile up and appear together in the first slot of the next day. That means that first slot doesn't start with the workload shown in the table, but with the table's workload plus the overnight backlog. If the backlog is large, the first slot needs more people than the direct calculation suggests. To estimate it, measure how many conversations come in outside business hours in a week and add them to the first slot's workload.
Does the coverage factor apply to the whole day or to each time slot?+
To each slot. If you apply it to the day's total, the reinforcement is spread evenly and doesn't reach where it's needed. Absences, breaks and peaks also happen in specific slots, so the factor has to multiply each slot separately before rounding.
Do AI suggestions change the staffing calculation?+
The formula doesn't change, but the inputs can. In an inbox where AI suggests replies and the team approves them, AHT tends to drop for repetitive queries and CF can rise because context switching costs less. That isn't automatic: it depends on the suggestions being good for the type of query coming in. It's worth measuring AHT and CF with your own data before assuming the effect exists in your operation.
Answer WhatsApp with AI
Try Wando free. No credit card required.