Contact center staffing math
Use an interval forecast to estimate how many agents need to be handling work, then add planned and unplanned time away from the queue. This guide shows a worked voice example and connects the calculation to the forecast and intraday staffing views in Voice → Scheduling.1. Estimate on-phone seats with Erlang C
For one interval, convert call volume and average handle time (AHT) into offered load:A = calls per interval ÷ interval minutes × AHT in minutes
The result is Erlangs, or the average concurrent workload. For N agents where N > A, Erlang C estimates the chance that an arriving call waits:
P(wait) = [A^N / (N! × (1 − A/N))] ÷ [Σ(k=0 to N−1) A^k/k! + A^N / (N! × (1 − A/N))]
For target answer time T and AHT H, the estimated service level is:
SL = 1 − P(wait) × exp(−(N − A) × T/H)
Use an Erlang C calculator or spreadsheet to increase N until SL meets your target. The following example uses a 30-minute interval, eight-minute AHT, and 80% answered within 20 seconds. It reports the first whole seat count meeting the target; service-level values are rounded.
For 480 calls, the rate is 16 calls per minute;
16 × 8 = 128 Erlangs. The 138 seats are agents available to handle calls, not the total number you should schedule. Recalculate with the target and AHT that apply to your own queue.
2. Apply shrinkage and auxiliary time
Scheduled headcount includes agents who are not available to take calls. If planned activities account for 25% of scheduled time and unplanned absence accounts for another 8% of the remaining time, combined shrinkage is:1 − (1 − 0.25) × (1 − 0.08) = 31%
Then calculate:
scheduled headcount = on-phone seats ÷ (1 − shrinkage)
With 138 on-phone seats and 31% shrinkage, schedule 138 ÷ 0.69 = 200 people in that interval. Round up, not down. Confirm that your planned and unplanned percentages use the same denominator assumptions; if both are measured as a share of total scheduled time, use the measured combined rate rather than multiplying them.
Breaks, lunch, training, coaching, and meetings are planned auxiliary activities. Unplanned absence and outages should be tracked separately. The AUX-code break taxonomy describes how tenant-defined reasons distinguish planned activities from other unavailable time. Use your own reports and policies for percentages; these example values are not universal benchmarks.
3. Translate seasonal demand into weekly headcount
Forecast voice demand by interval for each week, then rerun the Erlang C calculation at each interval’s calls and AHT. Do not scale headcount directly by the volume percentage: queueing needs increase nonlinearly as demand approaches available capacity. For a concrete seasonal comparison, the 480-call baseline above requires 138 on-phone seats and 200 scheduled people at 31% shrinkage. If a peak-week forecast is 552 calls in the same 30-minute interval (15% more) and AHT stays at eight minutes, load is 147.2 Erlangs. At an 80/20 target this requires 158 on-phone seats, orceil(158 ÷ 0.69) = 229 scheduled people. That is 29 more people for that interval than the baseline. Repeat the calculation for each interval and week, using the forecast AHT and the relevant shrinkage assumptions. The holiday-season volume playbook covers preparation for seasonal demand; this guide turns the voice forecast into an agent coverage estimate.
4. Compare the plan with intraday staffing
A weekly calculation cannot account for every late break, absence, arrival burst, or skill constraint. In Voice → Scheduling, the intraday staffing view compares required and actual coverage interval by interval for the current day. Use the staffing optimizer to plan from the forecast and shrinkage assumptions, then use the intraday board to find where today’s coverage has drifted. The shipped WFM surface also supports open-shift, overtime, and VTO workflows for coverage gaps or surplus. Treat the calculated plan as a starting point. Validate queue and skill coverage before publishing, and reforecast when actual arrivals or availability depart materially from the forecast. For the operational loop, see Workforce Management forecast-to-adherence.5. Feed adherence back into next season
After the season, compare forecast with actual calls and AHT by interval. Review adherence alongside auxiliary activity and exception records to distinguish forecast error from scheduled breaks, unexpected absences, or schedule conformance. Update those assumptions before next season’s planning cycle. The forecast-to-adherence walkthrough explains how the WFM reports support this feedback loop.6. Know where the model stops
Erlang C assumes Poisson arrivals, independent service times, and agents who can serve the same pool of work. Real arrivals may be bursty, and multi-skill routing splits agents into effective pools. A total-headcount result can therefore look sufficient while a specialist queue remains short. Calculate by queue or skill group where possible, then compare the estimate with observed service levels and the intraday staffing board. This is a planning estimate, not a guarantee of service level or a substitute for local employment rules. Shrinkage assumptions and staffing decisions are yours to set from your own tenant’s reports and policies.Related
- Workforce forecasts and staffing optimization — forecast intervals and estimate required seats.
- Intraday adherence and agent requests — compare today’s schedule with actual activity.
- Holiday-season volume playbook — plan a seasonal demand curve.
- AUX-code break taxonomy — classify planned and unplanned time away.