1 of 20

Capacity Planning: How to Learn to Stop Worrying and Love the Process

Seldon Solutions

2025

2 of 20

Adrien Seldon

About Me

  • Live in the PNW with my wife, 2 kids, 3 dogs, and a cat.

  • Been in WFM for more than 17 years, running my business for over 4 years

  • Been a part of small startups (Assembled, Stripe) and huge companies (T-Mobile, AWS, TikTok, Boeing)

  • Love all things WFM but I am especially fond of capacity planning

2

3 of 20

Agenda

  • Inputs - Supply
  • Outputs - Hiring Plan
  • Outputs - Costs
  • Questions
  • What is Capacity Planning?
  • Inputs - Demand & Erlang C

3

4 of 20

QR Code for Files

seldonsolutions.com

4

5 of 20

Why is this important?

Capacity Planning is typically a longer-term resource demand plan prepared at weekly and/or monthly intervals.

It incorporates inputs such as volume forecasts, handle time forecasts, and other relevant variables, comparing them against your projected supply (headcount).

The output is a plan illustrating the required resource levels and highlighting any expected surpluses or shortages.

5

6 of 20

What is a Capacity Plan made up of?

Capacity planning is essentially a comparison between supply and demand.

It usually covers a longer time horizon, often at a monthly level, and sometimes includes weekly detail.

Typical outputs are inputs to hiring plans and cost projections.

6

Capacity Plan

Staffing

Workload

Attrition

Hiring

Volume

Handle Time

7 of 20

Inputs - Demand

7

Section

12

Capacity Plan

Staffing

Workload

Attrition

Hiring

Volume

Handle Time

8 of 20

Volume Forecasting

Customer Base

  • How many customers you expect to have broken down by week/month

  • Source: Sales forecast

Expected Growth

  • Can be part of the customer base above, estimating the weekly/monthly growth into the future (years)
  • Source: Sales Forecast

8

Year

2022

2022

2022

Month

6

6

7

Week

6/19

6/26

7/3

Week #

25

26

27

Customer Base

10,000,000

10,010,000

10,025,000

CPC

0.23%

0.22%

0.22%

Volume

23,000

22,022

22,055

AHT Baseline

800

800

800

Seasonality

5

5

(1)

Total AHT

877

846

810

Workload Hours

5,602

5,563

4,959

FTE

156

155

138

Launch 1 Volume

10,000

AHT

140

Hours

389

Tenured Agents

130

130

129

Attrition

1

Class 1 Agents

15

15

15

AHT

1,500

1,200

900

Agent Delta

(11)

(10)

6

Costs

$130,500

$130,500

$129,600

9 of 20

Volume Forecasting

Contacts per customer (CPC)

  • This measures how frequently customers reach out—typically a small fraction (around 0.X%). Tracking this weekly or monthly helps reveal seasonality, like fewer contacts during holidays and spikes during promotions.

  • Source: CRM reports to analyze volume/amount of customers

9

12

Year

2022

2022

2022

Month

6

6

7

Week

6/19

6/26

7/3

Week #

25

26

27

Customer Base

10,000,000

10,010,000

10,025,000

CPC

0.23%

0.22%

0.22%

Volume

23,000

22,022

22,055

AHT Baseline

800

800

800

Seasonality

5

5

(1)

Total AHT

877

846

810

Workload Hours

5,602

5,563

4,959

FTE

156

155

138

Launch 1 Volume

10,000

AHT

140

Hours

389

Tenured Agents

130

130

129

Attrition

1

Class 1 Agents

15

15

15

AHT

1,500

1,200

900

Agent Delta

(11)

(10)

6

Costs

$130,500

$130,500

$129,600

10 of 20

Average Handle Time (AHT) Forecasting

Baseline/goal

  • Handle times based on what you see from your tenured agents. Alternatively, you can use a target AHT if you're aiming to reduce overall workload.

  • Source: WFM or CRM tool. You want to measure full AHT though (Talk/Hold/After Call)

Add-on layers

  • Adjustments that raise or lower the baseline AHT—most commonly due to seasonality or the impact of new hires. For new hires, use a weighted average to better reflect their actual contribution.

  • Source: Your WFM or CRM tool. Be sure to capture new hire cohorts in each stage of tenure.

10

12

Year

2022

2022

2022

Month

6

6

7

Week

6/19

6/26

7/3

Week #

25

26

27

Customer Base

10,000,000

10,010,000

10,025,000

CPC

0.23%

0.22%

0.22%

Volume

23,000

22,022

22,055

AHT Baseline

800

800

800

Seasonality

5

5

(1)

Total AHT

877

846

810

Workload Hours

5,602

5,563

4,959

FTE

156

155

138

Launch 1 Volume

10,000

AHT

140

Hours

389

Tenured Agents

130

130

129

Attrition

1

Class 1 Agents

15

15

15

AHT

1,500

1,200

900

Agent Delta

(11)

(10)

6

Costs

$130,500

$130,500

$129,600

11 of 20

Initiatives, sales, & launches

Initiatives/sales/launches

  • These are modifiers that should be plotted and tracked as their own line items.

  • Source: From the sales or launch teams.

Stay in close contact with the teams managing launches to ensure they have up-to-date actuals available.

Note: For permanent changes (e.g., reducing call time by 25 seconds), coordinate with the project team to decide when these adjustments should be incorporated into baseline assumptions, rather than treated as separate project impacts.

11

12

Year

2022

2022

2022

Month

6

6

7

Week

6/19

6/26

7/3

Week #

25

26

27

Customer Base

10,000,000

10,010,000

10,025,000

CPC

0.23%

0.22%

0.22%

Volume

23,000

22,022

22,055

AHT Baseline

800

800

800

Seasonality

5

5

(1)

Total AHT

877

846

810

Workload Hours

5,602

5,563

4,959

FTE

156

155

138

Launch 1 Volume

10,000

AHT

140

Hours

389

Tenured Agents

130

130

129

Attrition

1

Class 1 Agents

15

15

15

AHT

1,500

1,200

900

Agent Delta

(11)

(10)

6

Costs

$130,500

$130,500

$129,600

12 of 20

Putting it all together with Workload

Hours

To determine the total workload, you can start with a simple volume x AHT calculation. But to account for arrival patterns and SLA targets, you need Erlang C. Let’s look at how that works. Alternatively, multiply contact volume by handle time. If handle time is measured in seconds, divide the result by 3,600 to convert it to hours.

Full Time Equivalent (FTE)

Workload hours need to be translated into FTEs rather than raw headcount. This conversion accounts for shrinkage and gives a more accurate view of staffing needs. Simply divide the total hours by the number of productive hours an agent works per week.

12

12

Year

2022

2022

2022

Month

6

6

7

Week

6/19

6/26

7/3

Week #

25

26

27

Customer Base

10,000,000

10,010,000

10,025,000

CPC

0.23%

0.22%

0.22%

Volume

23,000

22,022

22,055

AHT Baseline

800

800

800

Seasonality

5

5

(1)

Total AHT

877

846

810

Workload Hours

5,602

5,563

4,959

FTE

156

155

138

Launch 1 Volume

10,000

AHT

140

Hours

389

Tenured Agents

130

130

129

Attrition

1

Class 1 Agents

15

15

15

AHT

1,500

1,200

900

Agent Delta

(11)

(10)

6

Costs

$130,500

$130,500

$129,600

13 of 20

Why Volume x AHT Isn’t Enough

The simple calculation

Volume x AHT / 3,600 = Workload Hours

Workload Hours / Productive Hours = FTE

The problem

This assumes contacts arrive in a perfectly smooth stream. They don’t. Contacts arrive randomly, creating peaks and valleys within every interval.

A simple workload calculation can understaff by 15-25% during peak intervals because it ignores queuing effects.

13

What Erlang C adds

  • Random arrival patterns (Poisson distribution)
  • Queuing effects (customers waiting in line)
  • SLA targets (e.g., 80% answered in 20 seconds)
  • The concurrency buffer needed to hit your service level

Erlang C tells you the number of agents needed to meet your SLA, not just cover the workload.

14 of 20

Erlang C in the Spreadsheet

14

Inputs

  • Contact volume per interval
  • Average Handle Time (AHT)
  • Service level target (e.g., 80/20)
  • Interval length (typically 30 min)

Output

  • Required agents to meet SLA
  • Probability of wait, avg speed of answer
  • The queuing buffer above raw workload

In the spreadsheet

The Erlang C formula can be implemented as a custom function or a lookup table.

Look at the FTE row in the model. That number already includes the Erlang buffer — it’s not just workload hours divided by productive hours.

This is the row that separates a staffing guess from a staffing plan.

Most WFM platforms (NICE, Verint, Assembled, Genesys) use a version of Erlang under the hood for interval staffing. You can also build it in Excel.

15 of 20

Erlang C: Intraday Tool, Capacity Planning Input

15

Option 1: Roll up from intervals

Run Erlang C at the interval level (30-min or 15-min), then aggregate up to weekly/monthly staffing needs.

Most precise. Use when you have interval-level volume data available.

Option 2: Apply a buffer factor

Use your historical Erlang-based staffing data to derive a shrinkage/concurrency buffer, then apply that factor to monthly workload.

Practical for long-range planning where interval detail isn’t available.

In the model we built

For this capacity plan, we used a roll up approach derived from actual Erlang-based interval calculations.

Either approach works. The important thing is that your capacity plan accounts for Erlang effects — not just raw workload math.

16 of 20

Inputs - Supply

16

12

Capacity Plan

Staffing

Workload

Attrition

Hiring

Volume

Handle Time

17 of 20

Attrition

Annualized

  • The projected number of employees expected to leave over the course of a year, broken down into monthly or weekly intervals.

  • Source: Your workforce system and your HR system

To calculate the annualized attrition rate, take the number of employees who left in the past 12 months and divide by the average headcount during that period. Then divide that result by 12 (for monthly) or 52 (for weekly) to get your interval-based rate.

17

12

Year

2022

2022

2022

Month

6

6

7

Week

6/19

6/26

7/3

Week #

25

26

27

Customer Base

10,000,000

10,010,000

10,025,000

CPC

0.23%

0.22%

0.22%

Volume

23,000

22,022

22,055

AHT Baseline

800

800

800

Seasonality

5

5

(1)

Total AHT

877

846

810

Workload Hours

5,602

5,563

4,959

FTE

156

155

138

Launch 1 Volume

10,000

AHT

140

Hours

389

Tenured Agents

130

130

129

Attrition

1

Class 1 Agents

15

15

15

AHT

1,500

1,200

900

Agent Delta

(11)

(10)

6

Costs

$130,500

$130,500

$129,600

18 of 20

Hiring

Time to source

  • The number of weeks or months it takes to identify candidates and move them through the interview and selection process.

  • Source: HR system

Time to train

  • The number of weeks or months each new hire spends in training before reaching full productivity.

  • Source: Your workforce system and your HR system

Time to full productivity

  • The period, typically measured in weeks, during which new hires ramp up and gradually reduce their handle times.

  • Source: Your workforce system and CRM

Note: Track each new hire cohort separately, as they’ll be at different tenure stages. For the most accurate view, use a weighted average of their handle times combined with those of your tenured agents.

18

12

19 of 20

Costs

Cost for next year (X timeframe)

Estimate costs by applying the cost per FTE from earlier calculations.

Keep in mind that you're compensating for total hours worked—including shrinkage—typically around 40 hours per week.

If you haven’t converted to FTE, or want an alternate view, you can also multiply the average hourly rate by the total workload hours.

Snapshots and monthly iterations

Regularly save snapshots of your capacity plans. This helps you track changes in hiring and costs over time and pinpoint what specifically drove those shifts between versions.

Use actuals

Track actual values for all inputs in your capacity plans, along with the costs incurred. This helps you respond more quickly to budget changes and assess the accuracy of your original assumptions.

19

12

20 of 20

Questions

?

20