WFM Clubs
Home/Erlang C
Formula Guide

Erlang C Deep Dive

The mathematical engine behind every contact centre staffing calculation — from first principles to practical application.

What is Erlang C?

Erlang C is a probability model developed by Danish engineer Agner Krarup Erlang in the early 20th century for telephone networks. It calculates the probability that a caller will have to wait before being served, given a certain traffic intensity and number of agents.

In contact centres, Erlang C is the foundation of staffing requirement calculations. It answers the core WFM question: "How many agents do I need to answer X% of calls within Y seconds?"

Key insight: Erlang C assumes an infinite queue (no callers abandon) and random call arrivals following a Poisson distribution. These assumptions make it slightly optimistic — in practice, abandon rates mean you may need slightly fewer agents than Erlang C suggests at high traffic, or more when abandons are low.

Traffic Intensity (A) — The Foundation

Before applying the Erlang C formula, you must calculate Traffic Intensity, also called Erlang A or simply A. This represents the average workload — in Erlangs — placed on the system per unit time.

A = λ × h
λ (lambda) = call arrival rate per second | h = average handling time in seconds

Practical calculation

In a contact centre, you typically work in 30-minute or 15-minute intervals. To calculate A for a 30-minute interval:

A = (Calls in Interval × AHT in seconds) ÷ (Interval Length in seconds)

Example: 200 calls in 30 min, AHT = 240 seconds
A = (200 × 240) ÷ 1800 = 26.67 Erlangs

An Erlang of traffic intensity means one agent would be continuously busy for one hour handling that workload. If A = 26.67, you need at minimum 27 agents just to handle the workload — and more to achieve an acceptable service level.

Calls per 30 minAHT (seconds)Traffic Intensity (A)Min Agents Needed
10018010.011
15024020.021
20024026.727
30030050.051
500360100.0101

The Erlang C Formula

The Erlang C formula calculates C(N, A) — the probability that a call will need to wait (i.e., all N agents are busy).

C(N, A) = [ (A^N / N!) × (N / (N - A)) ] ÷ [ Σ(k=0 to N-1)(A^k / k!) + (A^N / N!) × (N / (N - A)) ]

Where:

  • N = Number of agents (must be greater than A)
  • A = Traffic intensity in Erlangs
  • N! = N factorial (N × (N−1) × ... × 1)
  • Σ = Sum from k=0 to N−1

Once you have C(N, A), the probability that a call is answered within t seconds is:

P(wait ≤ t) = 1 − C(N, A) × e^(−(N−A) × t/h)

Where h is average handling time in seconds and e is Euler's number (~2.71828).

Service Level from Erlang C

Your Service Level target (e.g., 80% of calls answered within 20 seconds) is achieved when:

SL% = 1 − C(N, A) × e^(−(N−A) × (target_seconds / AHT_seconds))
Why N must be greater than A: If N ≤ A, the queue grows infinitely (the system is overloaded). Erlang C only applies when N > A. If your traffic intensity exceeds your agent count, SLA will always fail.

Step-by-Step: How to Use Erlang C

1

Gather your inputs

You need three values: forecasted call volume for the interval, average handling time (AHT) in seconds, and your service level target (e.g., 80% of calls answered within 20 seconds).

2

Calculate Traffic Intensity (A)

A = (Volume × AHT) ÷ Interval seconds. For a 30-minute interval: A = (Volume × AHT) ÷ 1800.

3

Set N = ceiling(A) + 1 as starting point

Start with N = round up A + 1 to ensure N > A. You will increment N until your SL target is met.

4

Calculate C(N, A) — the waiting probability

Apply the Erlang C formula with your current N and A. In practice, use a WFM tool or spreadsheet with a built-in Erlang C function — calculating factorials manually for large N is impractical.

5

Calculate the resulting Service Level

SL = 1 − C(N, A) × e^(−(N−A) × (target_seconds/AHT)). If this SL meets your target, N is your net staffing requirement.

6

Increment N if needed

If SL is below target, add one agent (N = N+1) and recalculate. Repeat until SL target is met. The minimum N that achieves target SL is your net staffing requirement.

7

Apply shrinkage to get gross headcount

Gross HC = Net HC ÷ (1 − Shrinkage%). Example: 28 net agents, 25% shrinkage → 28 ÷ 0.75 = 37.3 → 38 agents scheduled.

Worked Example

Scenario: A contact centre forecasts 180 calls for the 10:00–10:30 AM interval. AHT = 270 seconds. Target: 80% of calls answered within 20 seconds.

Step 1: Traffic Intensity

A = (180 × 270) ÷ 1800 = 48,600 ÷ 1800 = 27.0 Erlangs

Step 2: Starting Agent Count

N starts at 28 (ceiling of 27.0 + 1 = 28)

Step 3–6: Iterate to find N

Agents (N)C(N, A)Service LevelTarget Met?
280.93214.3%No
300.78637.9%No
320.57260.1%No
340.34176.5%No
350.25582.1%Yes ✓

Net staffing requirement = 35 agents

Step 7: Apply Shrinkage (25%)

Gross HC = 35 ÷ (1 − 0.25) = 35 ÷ 0.75 = 46.7 → 47 agents scheduled
Interpretation: You need 47 agents on the schedule for the 10:00–10:30 interval. Of those, 35 will be actively available (taking calls), and 12 will be in shrinkage activities (breaks, training, admin). This gives an 82.1% service level — just above the 80% target.

Sensitivity Analysis — How Variables Affect Staffing

Understanding how each input drives staffing requirements is critical for WFM planning decisions.

Volume Sensitivity

Volume ChangeTraffic IntensityNet Agents Req.Incremental Agents
−10% (162 calls)24.331−4
Baseline (180 calls)27.035
+10% (198 calls)29.739+4
+20% (216 calls)32.443+8

AHT Sensitivity

A 10% increase in AHT has a roughly proportional impact on traffic intensity and therefore agent requirements. This is why AHT reduction is one of the highest-leverage levers in WFM.

AHT ChangeAHT (seconds)Traffic IntensityNet Agents Req.
−10%24324.331
Baseline27027.035
+10%29729.739
+20%32432.443

Service Level Target Sensitivity

SL TargetNet Agents Req.Incremental Cost
70% in 20s33Lower cost, higher queue risk
80% in 20s35Standard
90% in 20s38+3 agents vs baseline
95% in 20s41+6 agents vs baseline

Limitations & When to Use Erlang C

Assumptions of Erlang C

  • No abandons: Erlang C assumes all callers wait indefinitely. In reality, callers hang up — which can make real SL better than Erlang C predicts at high occupancy.
  • Poisson arrivals: Assumes random call arrivals, which is generally a good approximation for voice but less accurate for scheduled callbacks or chat.
  • Constant AHT: Uses a single average AHT. In practice, AHT varies by agent skill, time of day, and contact type.
  • Homogeneous agents: Assumes all agents are equally capable, equally available, and handling one contact type.
  • Steady state: Erlang C models a steady-state equilibrium. It does not model the transient behaviour at the start of an interval.

When Erlang C is the right model

  • Inbound voice queues with real-time staffing requirements
  • Low-to-moderate abandon rates (below ~15%)
  • Single-skill or simple multi-skill environments
  • Strategic and tactical staffing decisions (not real-time)

When to use alternative models

  • High abandons: Use Erlang A (extended model that accounts for abandonments)
  • Asynchronous channels (email, back-office): Use workload-based models (volume × AHT ÷ productive hours), not Erlang C
  • Chat (concurrent sessions): Modified Erlang models or simulation
  • Very small teams (<5 agents): Erlang C overestimates SL at small N — use simulation
Practitioner tip: Erlang C gives a net staffing number — the number of agents in ready state. Always remember to layer shrinkage on top to get to scheduled headcount, and attrition + ramp when building a capacity plan from Erlang outputs.

Continue Learning

Explore more WFM resources and tools.