Support Staffing Math: How to Calculate 24/7 Coverage Without Guesswork

Quick Summary: Most first-time support leads calculate headcount with basic division: 168 hours in a week divided by 40 hours per agent equals 4.2 agents. Then they launch 24/7 coverage and watch their team drown by Wednesday. This guide breaks down why flat division fails, how arrival patterns and concurrency change channel staffing, how Erlang C applies to live chat and voice, and how to calculate realistic headcount with shrinkage built in from day one.
Here is a scenario that plays out in almost every fast-growing customer support team:
Your founder announces that starting next month, the company is going 24/7.
You open Google Sheets. You do what seems like obvious math:
- There are 168 hours in a 7-day week (24 hours × 7 days).
- A full-time agent works 40 hours a week.
- 168 ÷ 40 = 4.2 agents.
You round up to 5 agents for safety, feel confident, and share the plan with leadership.
By the second week of the new schedule:
- Two agents are exhausted from erratic shift rotations.
- One agent gets a fever, and suddenly nobody is covering the Friday graveyard queue.
- Tickets pile up during peak afternoon hours because one agent cannot handle 14 simultaneous live chats.
- By month two, your senior support specialist hands in their two-week notice.
What went wrong? You calculated static hours, but customer support is governed by queuing theory, concurrency, and human shrinkage.
Here is how to calculate support staffing math the right way.
1. The 168-Hour Myth: Why Static Math Fails
The biggest mistake in support scheduling is assuming that customer inquiries arrive in a neat, evenly distributed trickle.
Customers don't contact you like clockwork every 15 minutes. In reality:
- Inbound volume is bursty: You might get 60 chats between 14:00 and 15:00 UTC, and only 3 chats between 02:00 and 03:00 UTC.
- Channels have different concurrency limits: One agent can handle 2 to 3 live chats simultaneously. But on the phone, concurrency is strictly 1:1. An agent on a phone call cannot take another call.
- Raw headcount ignores occupancy: If an agent is engaged in tickets 95% of their working hour, their response quality drops, error rates climb, and burnout hits within weeks.
To build a schedule that works, separate your calculations by the kind of work and response promise: asynchronous queues (email and tickets) can be planned around workload and deadlines, while real-time channels (phone and live chat) need interval-level arrival data and a response-time target.
2. Staffing for Asynchronous Queues (Tickets & Email)
Asynchronous queues are simpler to calculate because incoming volume can queue without an instant customer drop-off. You are planning for throughput, not zero-wait seconds.
The Workload Formula:
Formula: Workload (Hours) = (Volume × Average Handle Time (AHT)) ÷ 60 minutes
Let’s look at a concrete example:
- Weekly ticket volume: 1,200 emails
- Average Handle Time (AHT): 15 minutes per ticket (including reading, investigating, drafting, and logging notes)
Formula: Total Workload = (1,200 × 15) ÷ 60 = 300 productive hours needed per week
Now, how many agents provide 300 productive hours?
If your agents work 40-hour weeks, your first instinct is:
Formula: 300 ÷ 40 = 7.5 agents
Do not stop here. An agent scheduled for 40 hours does not spend 40 hours answering tickets. That brings us to the missing variable: Occupancy and Shrinkage.
3. Real-Time Queues: Erlang C for Live Chat and Voice
When dealing with phone calls or real-time live chat, weekly workload totals are not enough. Arrival patterns within each interval and the response-time target matter: a weekly average can hide a short, sharp peak.
This is where Erlang C can help. It estimates queue delay under simplifying assumptions, including randomly arriving contacts, a shared queue, and contacts waiting rather than abandoning. Treat it as a planning model, not a guarantee; real contact patterns, abandonments, skills-based routing, and chat concurrency can change the outcome. A documented calculator can estimate required agents from volume, handle time, and a service-level target. 1
Invented by Danish mathematician A.K. Erlang, the Erlang C formula calculates the probability that an incoming interaction will have to wait in a queue, given:
- Arrival rate (λ): Number of contacts arriving per interval (usually 30 or 60 minutes)
- Average Handle Time (Tₛ): Call duration plus wrap-up time
- Number of available agents (m)
- Target Service Level (SLA): e.g., 80% of contacts answered in 30 seconds
Why Real-Time Queues Need Non-Linear Staffing
In a queue operating near capacity, adding one agent can materially change predicted waiting time and service level. The exact effect depends on arrival rate, handle time, and model assumptions:
| Calls / Hour | Average Handle Time | Agents on Duty | Estimated Answered Within 30s | Estimated Average Wait |
|---|---|---|---|---|
| 30 | 5 min | 3 | about 33% | about 7 min 1 sec |
| 30 | 5 min | 4 | about 72% | about 1 min 4 sec |
| 30 | 5 min | 5 | about 90% | about 16 sec |
This is an illustrative Erlang C calculation for a steady rate of 30 calls per hour, five-minute average handle time, a single shared queue, and no caller abandonment. Under those assumptions, four agents do not meet an 80% answered-within-30-seconds target; five are needed in this simplified example. Use an Erlang calculator with your own interval data and assumptions to validate a real plan. 2
Live Chat Concurrency Adjustment
Live chat agents may handle more than one conversation at a time, but a generic concurrency number is not a safe staffing rule. Choose a conservative starting limit based on your chat complexity, customer response expectations, and quality results, then validate it against observed interval data. If you adapt Erlang C for chat, document the assumptions and compare its estimates with actual queue performance before using it for a staffing decision.
4. The Critical Factor: Building in Shrinkage
Shrinkage is the share of scheduled or paid time during which an agent is unavailable for queue work. Define the denominator consistently in your own calculation, and distinguish shrinkage from occupancy, which measures how busy an available agent is.
Shrinkage falls into two categories:
External Shrinkage (Out of the Office)
- Approved annual leave / PTO
- Public holidays
- Sick leave and emergency callouts
- Bereavement or parental leave
Internal Shrinkage (In the Office, Off the Queue)
- Team meetings and 1-on-1s
- Training and product updates
- Mandatory rest breaks and lunch
- Escalation handoffs and special projects
There is no single shrinkage percentage that fits every support team. Calculate yours from the time agents are paid but unavailable for queue work, using your own records and a period that reflects your operation. The 25% used in the example below is an assumption for demonstration, not a universal benchmark.
The True Headcount Calculation:
Formula: Base Agents Needed = Required Productive Hours ÷ Hours per Agent
Formula: Final Headcount (rough estimate) = Base Agents Needed ÷ (1 - Shrinkage Rate)
Let’s revisit our earlier asynchronous example (300 productive hours needed per week):
- Base headcount: 300 ÷ 40 = 7.5 agents
- Estimated shrinkage: 25% (0.25)
Formula: Final Headcount = 7.5 ÷ (1 - 0.25) = 7.5 ÷ 0.75 = 10 agents
With the example’s assumed 25% shrinkage, the calculation gives 10 agents. Your actual number will depend on your measured shrinkage and scheduling assumptions.
The difference between 7.5 and 10 is not automatically idle time: it represents the coverage capacity needed to offset the example’s assumed unavailability. Actual schedules still need to match demand by interval and skill.
5. Staffing for Continuous 24/7 Baseline Coverage
What if your product is relatively low volume overnight, but you must keep at least one qualified agent on duty 24/7/365 for emergency uptime and live escalations?
Let’s run the 24/7 baseline math:
- Total hours in a year: 365 days × 24 hours = 8,760 hours
- Standard full-time contract: 40 hours/week × 52 weeks = 2,080 gross hours/year
- Net productive hours per agent (after 25% shrinkage for PTO, sick days, training): 2,080 × 0.75 = 1,560 hours/year
Formula: Minimum Agents for 1 Seat 24/7 = 8,760 ÷ 1,560 = 5.6 agents
This is a rough annual-hours estimate for one continuously staffed seat, not a complete roster. Before using it as a headcount plan, account for local working-time rules, shift lengths, handovers, weekend distribution, leave patterns, skill requirements, and coverage peaks. Two continuously staffed seats would roughly double the productive-hour requirement, but the actual roster still needs to be built and checked against those constraints.
Summary Comparison: Staffing Models at a Glance
| Model | Best For | Core Formula Variable | Major Risk |
|---|---|---|---|
| Static Division (168h / 40h) | Simple estimates only | Raw total hours | Ignores bursts, PTO, and sickness; causes rapid burnout |
| Workload / Throughput | Asynchronous email & tickets | Ticket Volume × AHT | Understaffing during peak daytime hours |
| Erlang C | Synchronous Phone & Live Chat | Arrival rate, AHT, SLA target | Needs accurate interval data; high math complexity |
| Shrinkage-Adjusted WFM | Sustainable 24/7 operations | Base Headcount ÷ (1 - Shrinkage) | Requires honest tracking of non-queue time |
How OneRosta Eliminates Staffing Guesswork
Calculating Erlang formulas and shrinkage percentages by hand in spreadsheets is slow and fragile. If someone edits a cell formula or timezone column, the entire week’s coverage collapses.
OneRosta simplifies staffing management for remote teams:
- Set Channel Thresholds per Hour: Define minimum required agents for Live Chat, Phone, and Email independently across each hour of the week.
- Visual Hourly Deficit Strips: If an approved leave or sudden absence drops your staffing below minimums, OneRosta immediately flags the deficit in red (
-1 Phone). - Auto-Balanced Shift Distribution: Click one button to populate schedules while respecting agent rest buffers, timezone preferences, and channel qualifications.
- Multi-Timezone Clarity: View your coverage in universal company UTC or toggle to each agent's local time without mental conversion errors.
Build a Schedule That Holds Up in Reality
Stop relying on the 168-hour myth. When you budget for real arrival patterns and build shrinkage into your baseline, your team stays rested, customer response times stay fast, and your 24/7 coverage runs smoothly.
Want to see how your team's coverage looks in a live 24/7 scheduler?
Explore OneRosta's free interactive sandbox demo (no sign-up required) →
Staffing & shrinkage calculator
Seat-hours per week
336
Agents needed (minimum)
12
A planning estimate only — it does not model queue arrival patterns.
See it on a real rota
Try the interactive sandbox — no account or sign-up needed.