A call center staffing calculator turns four inputs into a headcount: forecast contact volume, average handle time, your service level target, and shrinkage. The math runs in two stages. Erlang C gives you the agents needed on the floor at a given moment to hit the service level, then you divide that number by (1 minus shrinkage) to get the agents you actually have to schedule. Skipping the second stage is the single most common reason a support team is understaffed on paper and drowning in practice.
Every support leader eventually gets asked the same question by finance: how many people do you need, and why that number. The honest answer is that headcount is not a judgment call. It is a calculation with four inputs, and if you can show the inputs you can defend the number. What makes the conversation go badly is when the requested headcount is a feeling dressed up as a plan.
This is the model behind every Erlang calculator you will find online, written out so you can build it yourself in a spreadsheet and, more importantly, argue with it. The formula is not the hard part. Getting the inputs honest is.
What is a call center staffing calculator?
A call center staffing calculator is a tool that estimates how many agents you need to answer a forecast volume of contacts within a target response time. Most use the Erlang C queueing formula, which models random contact arrival and calculates the probability that a caller has to wait. You feed it volume, handle time and a service level target, and it returns required agents for that interval.
The important word is interval. Staffing is not a monthly number. It is a per half hour number, because contact volume is not flat. A team that is correctly staffed on a daily average will still miss service level every morning between 9 and 11, and will have agents sitting idle after 4pm. Any calculator that asks for a monthly volume and returns a single headcount is telling you something, but it is not telling you how to build a schedule.
The call center staffing formula, input by input
Five inputs drive the whole model. Four go into Erlang C, and the fifth converts the result into real people.
| Input | What it means | Where to get it honestly |
|---|---|---|
| Contact volume | Contacts arriving in one interval, usually 30 minutes | Ticketing or telephony report, same weekday, last 8 to 13 weeks |
| Average handle time | Talk or chat time plus after contact work | Your average handle time formula and benchmarks, measured per channel |
| Service level target | Percent answered within a threshold, such as 80 percent in 20 seconds | Your published customer service SLA, not an aspiration |
| Maximum occupancy | Ceiling on how much of a paid hour an agent spends on contacts | Policy decision, normally 80 to 85 percent |
| Shrinkage | Paid hours when an agent is not available for contacts | Payroll and schedule adherence data, not a guess |
Two of these are measurements and three are decisions. Volume and handle time you observe. Service level, occupancy ceiling and how you treat shrinkage are choices, and they are where most of the disagreement in a staffing conversation actually lives.
How to calculate staffing needs in a call center
Work an example. Say the 10:00 to 10:30 interval on a Tuesday averages 120 inbound calls, average handle time is 300 seconds, and the target is 80 percent answered in 20 seconds.
| Step | Calculation | Result |
|---|---|---|
| 1. Workload in erlangs | (120 contacts x 300 seconds) / 1,800 seconds in the interval | 20 erlangs |
| 2. Raw agents (Erlang C) | Add agents above 20 until 80 percent are answered in 20 seconds | 24 agents |
| 3. Occupancy check | 20 / 24 = 83 percent, at or under the 85 percent ceiling | 24 holds |
| 4. Apply shrinkage of 32 percent | 24 / (1 - 0.32) | 35.3 agents |
| 5. Round up to schedule | Whole people, rounded up | 36 agents scheduled |
Step 1 is the part people can do in their heads and it is genuinely useful on its own: 20 erlangs means that if every agent were busy every second with zero queueing, you would need exactly 20 agents. Erlang C then answers the real question, which is how many extra bodies you have to add so that a random arrival rarely waits. Going from 20 to 24 buys the service level. That gap is not waste, it is the price of not making people queue.
Step 4 is the one that gets skipped, and it is the largest single adjustment in the entire model. Twenty four agents on the floor requires thirty six agents on the schedule. If you present 24 to finance and hire 24, you will miss service level every single day and nobody will be able to explain why.
What is shrinkage in a call center?
Shrinkage is the percentage of paid agent hours that are not available for handling contacts. It covers breaks, team meetings, coaching and one to ones, training, system downtime, unplanned absence and vacation. Shrinkage percent equals unproductive hours divided by scheduled hours, times 100. It is not a measure of laziness. Most of what it contains is work you deliberately asked for.
What is included in call center shrinkage
| Category | Examples | Typical share of paid hours |
|---|---|---|
| Planned, in day | Breaks, lunch, system login and logout | 10 to 14 percent |
| Planned, off phone | Team meetings, coaching, QA scorecard reviews, training | 5 to 9 percent |
| Planned leave | Vacation, holidays | 8 to 11 percent |
| Unplanned | Sick days, no shows, late starts, outages | 4 to 8 percent |
Splitting shrinkage into planned and unplanned is worth the effort, because only one half is negotiable in the short term. If a director asks you to cut shrinkage from 34 to 28 percent, the only levers that move that fast are coaching time and training time, which is to say you would be buying this quarter's service level with next quarter's quality.
What is average shrinkage for a call center?
Industry shrinkage typically runs 30 to 35 percent for on site contact centers, and 35 to 40 percent for fully remote teams, where longer breaks, home interruptions and connectivity problems add several points. Anything below 25 percent usually means categories are being left out of the calculation rather than genuinely eliminated. Use your own payroll data if you have twelve months of it.
| Team type | Planning shrinkage | Note |
|---|---|---|
| On site, established | 30 to 35 percent | The default planning assumption |
| Fully remote | 35 to 40 percent | Adds connectivity and break drift |
| New team, first 6 months | 40 to 45 percent | Training and nesting dominate |
| Outsourced (BPO) | Usually not yours | Vendor absorbs it inside the rate |
That last row matters when you are comparing options. A BPO quotes you a rate per productive hour or per resolved contact, so shrinkage sits on their side of the line. Comparing an internal fully loaded cost per agent against a vendor's hourly rate without adjusting for shrinkage will make outsourcing look roughly a third cheaper than it is, which is one of several traps in the real cost of customer service outsourcing.
What is a good call center occupancy rate benchmark?
Occupancy is the share of logged in time an agent spends handling contacts or doing after contact work. Most operations target 75 to 85 percent. Below 70 percent you are overstaffed for the interval. Above 88 percent sustained, attrition and quality both fall off quickly, because agents get no recovery gap between contacts.
Occupancy is an output of your staffing decision, not an input you can set by wanting it. If your calculator returns 24 agents and that implies 92 percent occupancy, the answer is not to tell agents to work harder. It is to add an agent, or to accept a lower service level, or to reduce handle time. Teams that manage occupancy by exhortation rather than by staffing tend to discover the cost in their next attrition report.
Where Erlang C stops working: chat and email
Erlang C assumes one agent handles one contact at a time and that the customer is waiting live. That holds for voice. It roughly holds for chat if you account for concurrency. It does not hold for email at all.
| Channel | Model to use | Key adjustment |
|---|---|---|
| Voice | Erlang C | None, this is what it was built for |
| Live chat | Erlang C with concurrency | Divide workload by realistic concurrency, usually 1.5 to 2.5, not the 3 to 4 the vendor promises |
| Email and tickets | Workload model, not a queue model | Volume x handle time / productive hours, sized against a backlog target |
| Social and messaging | Workload model with a response window | Treat like email but with a tighter first response time target |
For email, the calculation is simpler and far less forgiving. If 900 tickets arrive per day at 8 minutes each, that is 120 hours of work. At 6.5 productive hours per scheduled agent day, you need about 18.5 agents scheduled just to break even with arrivals. Anything less and the backlog grows every day, permanently. Email staffing failures are slow and cumulative rather than dramatic, which is exactly why they get noticed three weeks late.
One real lever sits upstream of all of this: contacts you never receive cost nothing to staff. A measurable ticket deflection rate feeds straight back into the volume input at the top of the model, and it is usually cheaper to move that number than to hire against it.
Building the model in a spreadsheet
Most people looking for a call center staffing calculator in Excel want a per interval grid rather than a single answer. Build it with one row per 30 minute interval and columns for forecast volume, AHT, workload in erlangs, required agents, occupancy check, shrinkage divisor and scheduled agents. Excel has no native Erlang C function, so either use one of the free add ins or approximate with a lookup table of required agents by workload and service level.
Then add the column almost nobody adds: forecast accuracy. Log the forecast volume next to the actual volume every interval, and after a month you will know whether the model is wrong or the forecast is. In most struggling teams it is the forecast, and no amount of Erlang refinement fixes a volume estimate that is 20 percent low on Mondays. Tracking that alongside your other customer service metrics and KPIs keeps the staffing debate anchored to evidence.
What the calculator does not include
A staffing calculator produces agent headcount. It does not produce a budget. Between the two sit supervisors (typically one per 12 to 15 agents), a WFM or scheduling resource once you pass roughly 50 agents, quality analysts, recruiting and training cost for the churn you know is coming, and per seat software licenses for every tool an agent touches. That software line is easy to underestimate once helpdesk, telephony, knowledge base and QA tooling are each billed per user, and it is worth tracking per seat spend against actual usage rather than renewing on headcount you no longer have.
Add those and the fully loaded cost per agent typically lands well above salary. That is the number to bring to a build versus buy conversation, not the raw hourly wage.
Frequently asked questions
How do you calculate how many agents you need?
Multiply forecast contacts in an interval by average handle time, divide by the length of the interval in the same unit to get workload in erlangs, then use Erlang C to find the agent count that meets your service level target. Finally divide that figure by 1 minus your shrinkage rate. The result is agents to schedule, not agents on the floor.
What is the formula for shrinkage in a call center?
Shrinkage percent equals total unproductive paid hours divided by total scheduled paid hours, multiplied by 100. Unproductive hours include breaks, meetings, coaching, training, absence and downtime. Calculate it separately for planned and unplanned categories so you know which portion can realistically be reduced.
Is Erlang C accurate for small teams?
It gets unreliable below roughly 8 to 10 agents per interval. Erlang C assumes contacts arrive randomly and independently, and with very small teams a single long call distorts the whole interval. Small teams should staff to a maximum wait target and simply accept lower occupancy, because the alternative is missing service level whenever two contacts overlap.
Does Erlang C account for abandoned calls?
No. Erlang C assumes every caller waits indefinitely, which makes it slightly conservative and tends to overstate required agents when abandonment is high. Erlang A extends the model with a patience parameter and is a better fit if your abandon rate is above about 5 percent.
How often should the staffing model be rerun?
Rerun the forecast weekly and the full staffing model monthly, or immediately after anything that changes handle time or volume: a pricing change, a product launch, a billing cycle change, or a support policy change. Handle time in particular drifts quietly, and a 30 second AHT increase across 900 daily contacts is another agent and a half.