Skip to content
All posts
Tips & Best PracticesConcept

Erlang C Formula Explained for Contact Center Staffing

Learn the Erlang C formula for probability of waiting, average speed of answer, and service level, with a worked contact-center staffing example.

ยทยทAlessandro Cardinaliยท10 min read
Erlang C Formula Explained for Contact Center Staffing

Key takeaways

  • Offered load equals contact arrival rate multiplied by average handle time.
  • Erlang C requires productive agents to exceed offered load and assumes customers do not abandon.
  • Probability of waiting drives both average speed of answer and service-level estimates.
  • The result is a queue requirement before shrinkage, skills, breaks, and roster constraints.
  • Validate the model against actual intervals before using it as a staffing commitment.

The Erlang C formula estimates how likely a contact is to wait when a fixed number of agents serve one queue. From that probability, planners can estimate average speed of answer and the share of contacts answered within a service-level target.

You do not need to calculate factorials by hand to use Erlang C. You do need to understand the inputs, the assumptions, and what the answer leaves out. This guide explains the formula in operational language and works through one example.

What Erlang C calculates

Erlang C models an M/M/N queue: arrivals follow a Poisson process, service times are represented by an exponential distribution, N identical agents serve one queue, waiting space is unlimited, and customers do not abandon. The model reaches a stable steady state only when the number of agents is greater than the offered load.

The Wharton and Technion tutorial on telephone call centers describes Erlang C as the simplest and most widely used queueing model in call-center planning, while also documenting the practical limits of its assumptions.

The inputs you need

  • Contact volume: the number of contacts expected during the planning interval.
  • Average handle time: the average service time, using the same time unit as the arrival rate.
  • Number of agents: the agents simultaneously available to handle this queue before shrinkage.
  • Service-level threshold: the wait time used for a target such as 80 percent answered within 20 seconds.

Forecast accuracy matters more than extra decimal places in the formula. If volume or handle time is biased, Erlang C will calculate a precise answer to the wrong workload.

Step 1: calculate offered load

Offered load measures the amount of work arriving during the interval. If ฮป is contacts per time unit and h is average handle time in that same unit, then:

a = ฮป ร— h

The result a is measured in erlangs. One erlang is one agent occupied continuously for the interval. For example, 100 calls per hour with a six-minute average handle time create 10 erlangs of offered load: 100 ร— 0.1 hour = 10.

Step 2: check occupancy and stability

With N agents, the modelled occupancy is:

ฯ = a / N

Erlang C requires N > a, so ฯ must be below 1. If offered load equals or exceeds staffed capacity, the no-abandonment queue does not have a finite steady-state waiting time. Operationally, occupancy should usually stay comfortably below 100 percent because breaks, variability, and fatigue are not free.

Step 3: calculate the probability of waiting

The Erlang C probability that an arriving contact must wait is:

P(wait) = [a^N / (N! ร— (1 - a/N))] รท [ฮฃ(k=0 to N-1) a^k/k! + a^N / (N! ร— (1 - a/N))]

This expression compares the probability mass below full capacity with the probability that all agents are busy. In practice, calculators use stable recursive methods to avoid very large powers and factorials.

Step 4: calculate average speed of answer

If h is average handle time, the expected average wait before service is:

ASA = P(wait) ร— h / (N - a)

ASA is an average. It does not mean every customer waits that long, and it can conceal a long tail. Pair it with service level and the probability of waiting.

Step 5: calculate service level

For a service threshold t, expressed in the same time unit as h:

Service level within t = 1 - P(wait) ร— e^[-(N - a)t/h]

This estimates the proportion answered within the threshold under the Erlang C assumptions. It is the queueing result before scheduling losses, shrinkage, skill constraints, or abandonment are added.

Worked example: 100 calls per hour

Assume 100 calls per hour, a six-minute average handle time, 14 simultaneously available agents, and a 20-second service threshold.

  1. Offered load: 100 ร— 0.1 hour = 10 erlangs.
  2. Modelled occupancy: 10 รท 14 = 71.4 percent.
  3. Probability of waiting: approximately 17.4 percent.
  4. Average speed of answer: approximately 15.7 seconds.
  5. Service level: approximately 86.1 percent answered within 20 seconds.

These results describe 14 agents continuously available for the queue. If the operation expects 25 percent shrinkage, it cannot simply schedule 14 people and expect this result. The roster needs enough paid capacity to leave roughly 14 queue-ready agents after meetings, breaks, coaching, leave, and other planned losses.

Turn queue requirements into a schedule

Erlang C produces an interval-level requirement, not a roster. The next step is to convert required queue-ready agents into scheduled headcount and then build shifts that cover the intervals.

  • Add shrinkage deliberately. Use the correct relationship for your definition, often scheduled headcount = required productive agents รท (1 - shrinkage).
  • Respect skills and channels. A total headcount does not guarantee that the correct skills are available in each queue.
  • Avoid rounding every interval in isolation. Shift construction needs to balance adjacent intervals, breaks, contracts, and handovers.
  • Review forecast error. Compare planned and actual volume, handle time, staffing, and service results after the period.

Use the free Soon staffing calculator to test Erlang C, Erlang A, and other staffing scenarios without calculating the formula by hand.

When Erlang C is the wrong model

Erlang C is a useful baseline for a relatively clean inbound queue. It becomes less reliable when customers abandon, demand changes sharply inside the interval, agents serve multiple skills, or concurrency and deferred work affect capacity.

Read the guide to Erlang C assumptions and limitations before treating the output as a staffing commitment. For queues with abandonment or more complex operating behavior, compare Erlang C, Erlang A, and simulation.

Tool

Calculate your staffing requirement

Test Erlang C, Erlang A, Erlang B, and linear staffing scenarios with the free Soon calculator.

Explore

Frequently asked questions

What does the Erlang C formula calculate?
Erlang C calculates the probability that a contact must wait in an M/M/N queue. That probability can then be used to estimate average speed of answer and service level within a time threshold.
What inputs are needed for Erlang C?
You need forecast contact volume, average handle time, the planning interval, the number of simultaneously productive agents, and a service-level time threshold.
What is offered load in Erlang C?
Offered load is arrival rate multiplied by average handle time, using consistent time units. It is measured in erlangs and represents the productive agent capacity required if work arrived perfectly evenly.
Does Erlang C include shrinkage?
No. Erlang C uses productive queue-ready agents. Meetings, breaks, leave, coaching, absence, and offline work must be added separately when converting the requirement into scheduled headcount.
Does Erlang C account for abandoned calls?
No. Erlang C assumes every customer waits until service. Erlang A or another model is usually more appropriate when abandonment materially affects queue behaviour.
Why must the number of agents exceed offered load?
Without abandonment, a queue with offered load equal to or greater than productive capacity cannot reach a finite steady-state wait. The backlog continues to grow.