How to calculate FTE from contact volume
From a monthly, weekly or daily contact volume to a staffing curve, agent-hours and FTE, with a worked example and why the answer is nearly double the naive one.
Published
“How many FTE do we need?” is the most common question a planner is asked and the one a single-interval calculator cannot answer. Getting from a contact volume to an FTE figure means running the staffing chain for every interval of a typical day, adding up the hours, and allowing for the fact that shifts never fit the curve exactly. This guide walks the whole chain with one worked example, which you can reproduce in the planner below.
The chain
- Convert the volume you have (per month, week or day) to a typical day.
- Spread the day across opening hours in intervals, using the intraday shape.
- For each interval, run Erlang C, apply the occupancy ceiling, and gross up for shrinkage. That gives agents to schedule per interval.
- Sum scheduled agents × interval length to get agent-hours a day; multiply by open days for a week.
- Divide by contracted hours per FTE for the theoretical FTE.
- Divide by roster efficiency for the FTE you will actually need to roster.
Worked example
A centre takes 3,000 contacts a day (equivalently 15,000 a week, or 65,000 a month for a five-day operation), open 08:00 to 20:00, with a 300-second handle time, an 80/20 target, an 85 per cent occupancy ceiling and 30 per cent shrinkage. Agents are contracted for 37.5 hours a week.
Step 1 and 2. With an even split across five days, every open day is the same: 3,000 contacts split into 24 half-hour intervals with a double-peak shape: a morning build to a peak around 11:00, a lunch dip, a smaller afternoon peak, then a decline. The peak half hour carries 187 contacts; the opening half hour carries 57.
Step 3. Each interval runs the chain. At the peak, 187 contacts in 30 minutes at 300 seconds is 31.2 erlangs; Erlang C needs 37 agents on the phones for 80/20 under the occupancy ceiling, and 37 ÷ 0.7 rounds up to 53 to schedule. At opening, 57 contacts is 9.5 erlangs, 13 on the phones, 19 to schedule.
| Interval | Contacts | On the phones | To schedule |
|---|---|---|---|
| 08:00 | 57 | 13 | 19 |
| 10:00 | 150 | 30 | 43 |
| 11:00 | 187 | 37 | 53 |
| 13:30 | 101 | 21 | 31 |
| 16:30 | 165 | 33 | 48 |
| 19:30 | 60 | 14 | 20 |
Step 4. Summing all 24 intervals, the roster needs 445 agent-hours a day, an average of 37 scheduled agents across the open day. Over a five-day week that is 2,225 agent-hours.
Step 5. 2,225 ÷ 37.5 = 59.3 FTE. This is the theoretical minimum: a roster that put exactly the right number of agents in every half hour.
Step 6. Shifts are eight or nine hours long and start on the hour; the curve is not. At 90 per cent roster efficiency the real requirement is 59.3 ÷ 0.9 = 65.9, so 66 FTE.
Why it is nearly double the naive answer
The naive calculation is workload divided by hours: 3,000 contacts × 300 seconds is 250 hours of handling a day, 1,250 a week, and 1,250 ÷ 37.5 is 33.3 FTE. The chain above gives 66. Every one of the missing 33 FTE has a name:
- Erlang slack. Random arrivals need agents above the workload to keep queues short. At the peak, 31.2 erlangs needs 37 agents, not 32. Across the day this is worth about 15 per cent.
- Occupancy ceiling. Small intervals need proportionally more slack than large ones, and the ceiling adds agents where Erlang C would run people too hot.
- Shrinkage. Dividing by 0.7 adds 43 per cent to everything above it. This is the biggest single term.
- Roster efficiency. Shifts leave surplus hours in the troughs to cover the peaks. Another 11 per cent.
A budget built on 33 FTE is not slightly optimistic; it is half a contact centre.
Where the divisor matters
Shrinkage was applied in step 3, per interval. Step 5 therefore divides by contracted hours, 37.5, not by productive hours. Dividing 2,225 by the 25 or so productive hours an agent actually delivers would give 89 FTE, and it would be wrong: shrinkage would have been counted twice. Apply it once, at the interval or at the end, and be clear which.
Try it with your own numbers
90% of rostered hours land on the curve.
- On the phones
- Shrinkage allowance
- Theoretical FTE
- 59.3
- Agent-hours per week
- 2,225.0 h
- Agent-hours per day
- 445.0 h
- Peak interval
- 53 at 11:00
- Average scheduled
- 37.1
- Contacts per day
- 3,000
Weekly scheduled agent-hours ÷ contracted hours.
5 open days.
37 on the phones for 187 contacts.
Across the open day.
15,000 a week.
Show the working
- 3000 contacts per day is the average open day: 15000 a week across 5 open days, spread over 8:00 to 20:00 in 30-minute intervals using the "Morning and afternoon peaks" shape.
- The day-of-week split is even, so every open day carries 3000 contacts.
- Each interval runs Erlang C for 80% within 20 s, adds agents until occupancy is at or below 85%, then divides by (1 − 30%) and rounds up.
- Mon's peak is 11:00: 187 contacts need 37 on the phones and 53 scheduled.
- Agent-hours per day = Σ scheduled × 30 ÷ 60 = 445.0 h; × 5 days = 2225.0 h a week.
- FTE = 2225.0 ÷ 37.5 contracted hours = 59.3. Shrinkage is already in the per-interval numbers, so contracted hours are the right divisor.
- At 90% roster efficiency, 59.3 ÷ 0.90 = 65.9 FTE to cover the curve with real shifts.
This is one typical day. Pebble WFM does every day from your forecast, then builds and publishes the roster. Free month, no card needed.
Common mistakes
- Dividing a month by calendar days. Use open days. A month is 52 ÷ 12 weeks.
- Planning to the average interval. The average scheduled here is 37; the peak is 53. Staff to the average and the peak fails every day.
- Guessing the shape. An hourly volume report from the ACD takes five minutes to pull and replaces the guess with data. Paste the intervals into the planner and skip the profile entirely.
- Applying shrinkage twice. See above.
- Treating Monday like Thursday. Use the day-of-week split so each day gets its own curve; an even split hides a heavy Monday inside the weekly average, and the roster for Monday will be short.
Where next
- How to calculate a staffing requirement: step 3 in detail, for one interval.
- How to measure schedule efficiency: where the 90 per cent in step 6 comes from.
Frequently asked questions
- How do I convert a monthly volume to a daily one?
- Multiply by 12 and divide by 52 to get a weekly figure, then divide by the days you are open. 65,000 contacts a month is 15,000 a week, or 3,000 a day for a five-day operation. Do not divide by the calendar days in the month, which mixes open and closed days and understates the daily figure.
- Why does the FTE change so much when I change the shape of the day?
- Because Erlang C is run per interval and the peak interval sets the roster. A flat day with the same total volume needs fewer agent-hours, since no interval has a high requirement. The shape is not a detail; it is often the biggest lever after handle time.
- Is the FTE figure a headcount?
- No. FTE is hours expressed as full-time contracts. Convert to headcount using your actual contract mix: two 20-hour part-timers are roughly one FTE and two people. Recruitment, seating and licences need headcount; budgets usually work in FTE.
Stop doing this one interval at a time
Pebble WFM forecasts your demand, computes the staffing requirement for every interval, builds the roster and publishes it, with self-service for agents and a copilot that can do what a planner can. Explore a sample organisation on day one.