What call center capacity planning means
Capacity planning for a call center is calculating how many agents you need in each time slot to meet a target service level (SLA) without paying for idle capacity. It looks like a simple problem ("divide calls by agents"), but it is not: demand is stochastic, each call takes a variable time, and if you hit 95% occupancy the wait time explodes exponentially — not linearly.
The industry standard to solve it is the Erlang formula family: Erlang B (no queue, used in classic telecom), Erlang C (with queue, most common in contact centers), and Erlang A (with queue and abandonment). Using them wrong costs money in two directions: undersize and you lose customers to long waits; oversize and you burn 15%-25% of the contact center OpEx on idle agents.
Erlang C vs Erlang A vs Erlang B
- Erlang B assumes the blocked call (no free agent) is lost immediately. It applies to queueless systems — today almost only for sizing phone trunks or SIP lines, not modern contact centers.
- Erlang C assumes the blocked call waits in queue indefinitely until an agent frees up. It gives conservative results (overestimates required agents) because in reality customers hang up. It still represents about 80% of industry usage because of its simplicity.
- Erlang A adds a modeled abandonment rate (e.g., mean customer patience = 60 seconds). It produces more realistic numbers, typically 5%-15% fewer agents than Erlang C for the same SLA. Recommended when your real abandonment rate exceeds 3%-5%.
Erlang C formula and numeric example
The Erlang C formula calculates the probability that a call must wait (P(wait)), given:
- λ (lambda) = calls per hour
- AHT = average handle time in seconds (talk time + after-call work)
- N = available agents
- A (traffic in erlangs) = λ × AHT / 3600
Erlang C formula: P(wait) = [A^N / N!] / { A^N / N! + (1 − A/N) × Σₖ₌₀^(N−1) A^k / k! }
Service level (e.g., 80/20 = 80% of calls answered in ≤20 seconds) is derived from P(wait) and AHT.
Numeric example. Inbound contact center with λ = 100 calls/hour, AHT = 300 seconds (5 min), SLA target 80/20:
- Traffic A = 100 × 300 / 3600 = 8.33 erlangs.
- Rule of thumb: N ≥ A + something — never N = A (100% occupancy = infinite queue).
- With N = 12 productive agents, P(wait) ≈ 24%, SLA 80/20 is met (standard Erlang C approximation).
- Add 30% shrinkage (breaks, restroom, training, absences): 12 / (1 − 0.30) ≈ 17 scheduled agents on payroll for that slot.
Without the shrinkage adjustment, you schedule the 12 "productive" agents and on the real day 8 show up because the other 4 are on break, training or absent — and the SLA collapses.
Shrinkage: the 30% no one discounts correctly
Shrinkage = % of paid time when the agent is not available to take calls. It includes mandatory breaks, training, meetings, technical issues (no login), absenteeism, vacation. The honest number in professional contact centers sits at 28%-35% per ICMI and Deloitte benchmarks; in LatAm BPO it can reach 40% due to high turnover and uncontrolled absenteeism.
Scheduled agents = Productive agents required / (1 − Shrinkage)
If your Erlang C model says 12 productive agents and your shrinkage is 32%, you need 12 / 0.68 = 18 agents on payroll for that slot. Confusing productive with scheduled is the most expensive mistake in amateur WFM.
SLA, ASA, occupancy: the three metrics to watch
- SLA (Service Level): typically 80/20 (80% of calls answered in ≤20s). Regulated industries (healthcare, banking) use 90/15 or stricter. Retail ecomm accepts 70/30.
- ASA (Average Speed of Answer): average queue wait. Complementary metric to SLA — an 80/20 with 45s ASA means the remaining 20% waits a long time.
- Occupancy = productive time / available time. Healthy range: 75%-85%. Above 90% drives burnout, turnover and quality decline. Below 65% indicates oversizing.
- Utilization = productive time / paid time (different from occupancy because it includes shrinkage). Healthy range: 55%-70%.
Monitoring only SLA is the classic trap: you can have a green 80/20 and a team at 95% occupancy headed for mass resignation in 90 days.
Forecast accuracy and schedule adherence
Two WFM metrics that separate a serious contact center from an amateur one:
- Forecast accuracy = 1 − |Forecast − Actual| / Actual. Target: 85%-90% at 30-minute intervals. Below 80% means your predicted volume is miscalibrated and all the staffing shifts.
- Schedule adherence = time online conforming to the scheduled shift / scheduled time. Target: 90%-95%. It measures whether agents respect their shifts (late arrivals, long breaks, early departures eat this metric).
ICMI reports that a contact center with 85% forecast accuracy and 92% schedule adherence hits the same SLA with 8%-12% fewer agents than one at 75% and 85% respectively. That is where the real savings of mature WFM live.
Inbound vs outbound vs blended sizing
- Inbound: the customer calls, the model is pure Erlang C. Staff based on 30-minute forecast volume.
- Outbound: the company calls, the metric is contacts per hour and conversion. Sizing is different (no-answer rates, dialer ratio) and Erlang does not apply directly.
- Blended: agents alternate inbound and outbound by queue. Requires WFM that dynamically reassigns. More efficient on utilization but more complex to size.
Collections and sales BPOs are typically blended; pure customer service (banks, insurance) is inbound; lead gen is pure outbound.
200-agent BPO case: Erlang C in production
BPO contact center in Bogotá, 200 agents, 4,000 calls/day distributed 6am-10pm, AHT 240 seconds, SLA target 85/20. Breakdown by peak slot (10am-12pm, 450 calls/hour):
- Traffic A = 450 × 240 / 3600 = 30 erlangs.
- Erlang C for 85/20: N = 36 productive agents in the peak slot.
- Shrinkage 32% (breaks + training): 36 / 0.68 = 53 scheduled agents.
- Valley slot (2am-6am, 40 calls/hour): 2.7 erlangs, N = 6 productive = 9 scheduled agents.
- Total daily schedule = sum of 32 half-hour slots, not a single number.
A static Erlang C model for "the whole day" gives the average and fails at peaks and valleys. Real scheduling is slot by slot.
Financial impact: headcount cost and break-even
Headcount is 60%-75% of a contact center's OpEx. In Mexican BPO, loaded cost per agent (salary + ~35% IMSS payroll tax + supervision + tech + facilities) runs USD 900-1,400/month per FTE. In Colombia and Argentina, similar range USD 700-1,100. In the United States, USD 3,500-5,500/month.
A 200-agent Mexican BPO contact center has headcount OpEx of ~USD 2.4-3.3M/year. A 10% improvement in sizing (via Erlang A + better shrinkage + WFM discipline) frees up USD 240-330K/year without touching revenue.
Interactive tool vs Excel Erlang
Excel Erlang C sheets (Callcentrehelper, etc.) work for the first calculation but are static: one input, one output. They do not compare three scenarios (peak/average/valley) side by side, do not model Erlang A with configurable abandonment, do not project headcount cost in USD and no one updates them past the first month. A web calculator with Erlang C + A, per-slot shrinkage and USD costing is the difference between an academic sizing and an operation that scales.