Last updated: October 16, 2026
Call center staffing looks like a spreadsheet problem until Monday at 9:00 a.m., when calls arrive faster than anyone planned for. Staff too thin and callers abandon, your average speed of answer climbs, and customers remember. Staff too thick and you pay for agents who spend the morning waiting for the phone to ring.
This guide walks through the two ideas that sit under almost every staffing plan, Erlang C and shrinkage, using worked numbers you can reproduce. Then we cover where the math breaks and how AI changes the inputs, because the cheapest agent you will ever schedule is the one you do not need.
What's in this guide
- Why staffing by gut feel fails
- Erlang C in plain English
- Shrinkage: the number that quietly breaks your schedule
- Where Erlang C breaks down
- How AI changes the staffing math
- A practical weekly staffing workflow
- FAQ
Why staffing by gut feel fails
Contact volume is not flat. It arrives in waves by hour, weekday, and season, and handle time shifts with every product release or billing cycle. A fixed headcount that looks right on average is wrong in almost every individual half hour.
That mismatch shows up in metrics you are probably already tracking. When too few agents are available, call abandonment rises. When too many are, occupancy falls and cost per contact balloons. Staffing math exists to find the narrow band between the two, interval by interval.
Erlang C in plain English
Erlang C is a queueing formula that answers one question: given this much incoming work and this service level target, how many agents must be available at the same time? It was developed by A.K. Erlang in 1917 and remains the standard starting point for inbound staffing.
The four inputs
Every Erlang C calculator asks for the same four inputs: call volume per interval, average handle time (talk time plus hold plus after-call work), a target service level, and a shrinkage rate. The first three give you agents on the phones. Shrinkage turns that into agents on the schedule.
If your handle time is inflated, fix it before you staff for it. Our guide to reducing AHT without hurting CSAT and our notes on after-call work show where the minutes hide.
A worked example
Take a queue receiving 100 calls per hour with a three-minute handle time. That is 300 minutes of work in an hour, or 5 Erlangs of traffic. With an 80/20 target (80% of calls answered within 20 seconds), 8 agents on the phones deliver roughly an 88% service level. Note how far that is from the 5 you might expect: you need headroom above raw workload so queues do not form every time two calls land together.
| Input | Example value | What it drives |
|---|---|---|
| Call volume | 100 calls per hour | Traffic in Erlangs |
| Average handle time | 3 minutes | Traffic in Erlangs |
| Service level target | 80/20 | Agents above raw workload |
| Shrinkage | 30% | Agents on the schedule |
Source for the example values: CloudTalk's Erlang calculator guide.
Shrinkage: the number that quietly breaks your schedule
Shrinkage is the share of paid time when an agent cannot take contacts. Erlang C tells you how many agents must be on the phones; shrinkage tells you how many to pay for, because some of them will always be in training, on break, or out sick.
The formula
The calculation is hours not available to handle contacts divided by total paid hours, times 100. To convert, divide the agents you need by one minus shrinkage. In one worked example, 38 required agents at 31% shrinkage becomes 55.1, so you schedule 56. Skip this step and you will be understaffed by design, every day.
What counts, and what is normal
Internal shrinkage covers paid time on site but off the phones: breaks, coaching, team meetings, training, and system downtime. External shrinkage covers vacation, holidays, sick leave, and unplanned absence. Most operations plan around 30%, within a typical range of 25% to 35%, and the same source notes that December and summer holidays can run about 10 points above the annual average.
| Environment | Typical shrinkage |
|---|---|
| Chat-focused operation | 25% to 30% |
| Voice-heavy center with extensive training | 32% to 35% |
| Healthcare | 35% to 40% |
| E-commerce | 25% to 30% |
| Financial services | 30% to 35% |
Source: Zoom's guide to call center shrinkage, which also suggests investigating if shrinkage consistently exceeds 40%.
Seasonality is where plans fail. A flat 30% in a month where half the team is on holiday means the real schedule is thinner than the model assumed, so build the seasonal curve into your forecast rather than using a single annual number.
Where Erlang C breaks down
Erlang C is a model, and every model has assumptions. Knowing them tells you when to trust the output and when to add a buffer.
Patient callers and steady arrivals
The formula assumes callers wait indefinitely and never hang up, which means it tends to overestimate headcount. It also assumes a constant arrival rate within each interval, so a sudden spike inside a half hour is invisible to it. If your abandonment is meaningful, Erlang A, which models impatient callers, is a better fit.
Everything goes to a human
The classic model assumes every call must be answered by a live agent, so it cannot account for automation absorbing part of the volume. It also does not apply to outbound; outbound uses dialer ratios and occupancy targets. These two gaps are exactly where modern teams get leverage.
How AI changes the staffing math
Erlang C takes call volume as an input. If AI fully resolves the routine part of that volume before it reaches a human queue, the number you feed the formula gets smaller, and so does the headcount it recommends. That is a cleaner way to think about automation than vague promises of efficiency.
Three effects matter most. First, containment: contacts like order status, appointment changes, and password resets can be closed without an agent. We cover how to measure this in our guide to containment rate and in the ticket deflection playbook. Second, coverage: an AI agent that answers at 2:00 a.m. removes the pressure to roster expensive night shifts, a theme explored in after-hours customer support coverage. Third, peaks: an AI layer can absorb a burst of simple contacts without a new hire or a long hold queue.
This is the job Eva, Darwin AI's customer experience worker, is built for: handling routine conversations across channels and handing the complex ones to your team with full context, so your Erlang inputs reflect only the contacts that truly need a person.
Re-run the model after every change
When automation changes your mix, your remaining contacts are harder on average, so handle time usually rises even as volume falls. Update both inputs together or you will understaff the humans who are left. Also keep a buffer for escalations; a clean virtual callback option protects service level during unexpected peaks.
A practical weekly staffing workflow
- Forecast by interval. Use at least several weeks of history by half hour and weekday, then adjust for known events such as launches, billing runs, and promotions.
- Remove what automation resolves. Subtract contacts your AI handles end to end. Measure this, do not assume it.
- Run Erlang C per interval. Use realistic handle time for the contacts that remain.
- Apply shrinkage. Use the seasonal figure for the period, not the annual average.
- Review service level and abandonment weekly. Adjust the shrinkage or handle time assumption when reality diverges, instead of blaming the forecast.
Do not treat the first output as final. Staffing is a loop: forecast, schedule, measure, correct. The teams that win are the ones who tighten that loop each week.
FAQ
What is Erlang C used for in call center staffing?
Erlang C estimates how many agents you need on the phones to hit a service level target, given call volume, average handle time, and the assumption that callers wait in a queue. It was developed by A.K. Erlang in 1917 and is still the default method in most workforce planning tools.
What is a normal shrinkage rate?
Most operations plan around 30%, with a typical range of 25% to 35%. Chat-focused teams often sit lower, at 25% to 30%, while voice-heavy centers with heavy training can reach 32% to 35%.
How do I convert required agents into scheduled agents?
Divide the agents required on the phones by one minus your shrinkage rate. For example, 38 required agents at 31% shrinkage means 55.1, so you schedule 56.
Does Erlang C work for outbound calling?
No. Erlang C models inbound queues; outbound staffing uses dialer ratios and occupancy targets instead.
Can AI reduce the number of agents I need?
Yes, when it fully resolves routine contacts before they reach the queue. Remove those contacts from the volume input and the formula recommends fewer agents, though you should re-validate your service level after every change.
Plan for the contacts that need people. Let AI handle the rest.
See how Eva answers routine customer conversations around the clock.
Meet Eva

