Call-center staffing plans fail when they divide daily calls by calls per agent. Calls arrive unevenly, queue simultaneously, and consume time from agents who are not continuously available. The schedule needs productive agents by interval, then enough rostered people to produce them after shrinkage.
Short answer: convert calls and handle time into offered workload, use a queueing model for the service target, cap occupancy, and divide required productive agents by one minus shrinkage. Then connect answer rate and conversion to gross profit before deciding that fewer people is cheaper.
Start with intervals, not the day
A center receiving 600 calls over eight hours averages 75 calls per hour. That average says nothing about a 10:00–10:30 interval receiving 60 calls while 2:00–2:30 receives 18.
Staff at 15-, 30-, or 60-minute intervals based on the operation’s volatility and scheduling precision. A daily total can be correct while the customer experiences long waits at every peak.
Calculate offered workload
Offered workload in Erlangs is:
calls in interval × average handle time in seconds ÷ interval seconds
If 40 calls arrive in 30 minutes and average handle time is 360 seconds:
40 × 360 ÷ 1,800 = 8 Erlangs
Eight Erlangs means the interval contains eight agents’ worth of continuous call work before any allowance for waiting targets or random arrival variation.
This is a worked example.
Occupancy sets the floor, not the service answer
If management caps occupancy at 85%, a simple capacity floor is:
offered workload ÷ occupancy cap
For eight Erlangs:
8 ÷ 0.85 = 9.41, so at least 10 productive agents are required by the occupancy constraint.
That does not prove 10 agents will meet an “80% answered within 20 seconds” target. Erlang C estimates the probability of waiting and resulting service level under its assumptions. Required staffing is the larger of the service-level requirement and the occupancy requirement.
What Erlang C assumes
The standard model assumes:
- Calls arrive randomly at a stable average rate within the interval.
- Handle times average to the supplied value.
- Waiting callers do not abandon.
- Available agents are interchangeable for the modeled queue.
- Calls are handled in arrival order.
Real centers violate these assumptions through abandonment, skill routing, callbacks, priority customers, transfers, and blended work. The model remains useful when its boundary is visible.
Convert productive requirement to roster
Productive agents are the people available to take the modeled calls. Rostered agents are the people scheduled and paid.
rostered agents = productive agents ÷ (1 − shrinkage)
If the requirement is 10 productive agents and shrinkage is 30%:
10 ÷ 0.70 = 14.29, rounded to 15 rostered agents.
Scheduling 10 people does not create 10 productive agents unless breaks, meetings, training, absence, coaching, and other paid non-queue time equal zero.
Build shrinkage from components
Do not type 30% because that is what the last model used. Build internal and external components:
- Breaks and meals.
- Meetings and coaching.
- Training.
- Paid leave and unplanned absence.
- System downtime.
- After-call work not already included in handle time.
- Other assigned offline work.
Prevent double counting. If after-call work is inside average handle time, do not also place it in shrinkage.
Occupancy is not utilization
Occupancy is the share of logged-in available time spent handling contacts or after-call work. Utilization may compare productive work with all paid hours. Mixing the terms makes staffing discussions sound precise while using different denominators.
Sustained occupancy near 100% means the queue has almost no recovery capacity. Waits grow nonlinearly as demand approaches capacity. That is why one more agent near the constraint can change service more than one agent added to an already loose interval.
Forecast handle time by contact mix
Average handle time can change because the queue changed, not because agents slowed down.
Separate:
- New sales versus service calls.
- Simple status calls versus troubleshooting.
- Languages or skill groups.
- Channels if chat and voice share agents.
- New-hire versus experienced handling.
A staffing model using last month’s blended handle time can understate next month if a campaign sends more complex calls.
Reforecast during the day
The morning plan is not sacred. Compare actual to forecast by interval:
- Offered contacts.
- Average handle time.
- Absence.
- Service level and abandon rate.
- Backlog or callbacks.
Then decide whether to move breaks, release offline work, call in support, offer callbacks, or protect a later peak. Intraday management should have explicit triggers instead of relying on whichever supervisor notices first.
Connect staffing to gross profit
The cheapest schedule is not necessarily the most profitable. Build a bridge:
incremental answered calls × qualified rate × conversion rate × contribution per sale
Compare the contribution with incremental labor cost. Use observed rates by interval or queue where possible.
If adding two rostered agents costs $320 for a shift and is expected to produce $900 of contribution from calls that would otherwise abandon, the decision is not “labor over budget.” It is a capacity investment with a modeled $580 contribution. If the calls are low-value service contacts, the answer may reverse.
Those figures are illustrative.
The interval plan should show
- Forecast contacts.
- Handle time and workload.
- Service target and occupancy cap.
- Productive agents required.
- Shrinkage.
- Rostered agents required and scheduled.
- Gap.
- Answer-rate, conversion, and contribution consequence.
- Intraday trigger and response.
That creates one line from demand to people to customer response to money.
The free Erlang C Staffing Calculator solves one interval and shows both productive and roster requirements. The Call Center Profit Lab extends the model across a day and adds schedule gaps, labor cost, and the answer-rate-to-profit bridge.