Call centre staffing formulas — the complete WFM reference
Every formula used in contact centre workforce planning: Erlang C and service level for voice queues, Little's Law for chat concurrency, backlog flow for email and cases, shrinkage conversion, occupancy, AHT, and cost per contact. With worked examples and links to free calculators.
Key rule
The channel determines the model. Erlang C is for voice queues only; it does not apply to chat, email, or back-office work. Using the wrong formula will overstate or understate headcount by 30–60%.
Erlang traffic intensity (A)
Voice queueAErlangs (traffic intensity)λCall arrival rate per secondhAverage handle time in secondsWorked example
120 calls/hour = 2 calls/min = 0.0333 calls/sec. AHT = 240s. A = 0.0333 × 240 = 8.0 Erlangs.
Erlangs represent the traffic load: the average number of agents needed to handle the arriving contacts without any waiting at all. A whole number (N > A) of agents is needed to form a stable queue.
Erlang C (probability of queuing)
Voice queueNNumber of agentsAErlang traffic intensityC(N,A)Probability a call will have to queue (not be answered immediately)Worked example
At N=10 agents and A=8.0 Erlangs: C(10,8) ≈ 0.337. About 33.7% of calls will have to queue.
The Erlang C formula gives the probability that all agents are busy when a call arrives, so the caller will have to wait. Service level is derived from this probability.
Service level (Erlang C)
Voice queueSL(t)Service level: % of calls answered within t secondstTarget answer time in seconds (e.g. 20 for 80/20)C(N,A)Erlang C probability of queuingNNumber of agentsAErlang traffic intensityhAHT in secondsWorked example
At N=10, A=8.0, t=20, h=240: SL(20) = 1 − 0.337 × e^{−(10−8)×20/240} = 1 − 0.337 × e^{−0.167} ≈ 0.86 = 86%.
This is the formula that Erlang C calculators evaluate. The result is the fraction of calls answered within t seconds: your service level.
Agent occupancy rate
Voice queueρOccupancy rate (0–1)AErlang traffic intensityNNumber of agentsWorked example
A=8.0, N=10: ρ = 8.0 ÷ 10 = 0.80 = 80% occupancy.
Occupancy is the fraction of time agents are busy on contacts. It equals traffic intensity divided by agents. Target 75–85% for most operations; higher causes SL degradation under variance.
Average handle time (AHT)
All channelsAHTAverage handle time (all time per contact)Talk timeTime agent is speaking with the customerHold timeTime customer is on hold during the contactACWAfter-call work (wrap, notes, tasks completed after the call)Worked example
Talk = 3:30, Hold = 0:25, ACW = 0:45. AHT = 4:40 = 280 seconds.
AHT is the per-contact time that drives all staffing calculations. A 10% reduction in AHT reduces the Erlang traffic intensity by 10%, and typically reduces required agents by a similar proportion.
Shrinkage and scheduled headcount
All channelsScheduled headcountAgents you need to put on the rosterSeated agentsOutput of Erlang C (or other model): agents handling contactsShrinkage rateFraction of paid time not available for contacts (0–1)Worked example
Seated = 10, shrinkage = 30% (0.30). Scheduled = 10 ÷ 0.70 = 14.3 → 15 agents.
Do NOT multiply by (1 + shrinkage). The correct formula divides by (1 − shrinkage). Multiplying by 1.30 gives 13, not 15, and understaffs by 2 agents.
Little's Law (live chat concurrency)
Live chatLAverage number of active chat sessions at any momentλChat arrival rate (sessions per minute)WAverage session duration in minutes (full chat AHT)Worked example
60 chats/hour = 1/min. Session AHT = 12 minutes. L = 1 × 12 = 12 active sessions. At 3 concurrent per agent: 12 ÷ 3 = 4 agents seated.
Little's Law applies to any stable queue. For chat, L is the average simultaneous sessions. Agents needed = L ÷ concurrency cap (typically 2–4 per agent). Do not use Erlang C for chat.
Backlog flow (email and cases)
Email / back-officeThroughputCases processed per day = agents × productive hours × (3600 ÷ AHT seconds)InflowNew cases arriving per dayProductive hoursShift hours × (1 − shrinkage)Worked example
50 cases/day inflow, 100-case backlog, 5-day SLA clearance target. Needed throughput = (100 ÷ 5) + 50 = 70 cases/day. At AHT 25 min and 5.5 productive hours: cases/agent/day = 5.5h × 60 ÷ 25 = 13.2. Agents = 70 ÷ 13.2 = 5.3 → 6.
Erlang C does not apply to email or back-office work. SLAs are days, not seconds. The correct model is a flow equation comparing inflow against throughput capacity.
Cost per contact
Cost & budgetDaily staffing costHeadcount × shift hours × (hourly rate × (1 + on-cost %))Daily contacts handledAgents × productive hours per day × (3600 ÷ AHT seconds)Worked example
15 agents, 7.5h shift, £13/hr, 25% on-costs, AHT 240s, shrinkage 30%. Daily cost = 15 × 7.5 × (13 × 1.25) = £1,828. Productive hours = 7.5 × 0.70 = 5.25h. Contacts = 15 × 5.25 × 15 = 1,181. Cost per contact = 1828 ÷ 1181 = £1.55.
Cost per contact is the most useful single efficiency metric: it captures both the cost and the throughput. It changes when AHT, shrinkage, headcount, or hourly rate change.
Don't calculate by hand: use the free calculators
The Erlang C formula is computationally intensive and easy to get wrong manually. Use the free calculators. They implement the correct formulas and give you results in seconds.
Erlang C calculator
Service level + min agents for voice
Live chat calculator
Little's Law concurrency model
Email / backlog calculator
Backlog flow model
Shrinkage calculator
Seated to scheduled conversion
Occupancy calculator
Traffic intensity to occupancy
Staffing cost calculator
Cost per contact and FTE cost