Skip to content
Back to Tools

Async Messaging Staffing Calculator

WhatsApp and in-app messaging threads stay open for hours, but agents only work on them for minutes. Plan on interactions, not conversations or open time, and see what the common shortcuts would cost you.

Live · updates as you type

Messaging inputs

One queue or skill at a time, at the peak hour.

per hour
replies
seconds
%
minutes
%
hours
Agents needed on the floor
11people

For 80% of customer messages answered within 15 minutes, planning on interactions.

Roster after shrinkage
16people

Floor number divided by (1 - shrinkage), not multiplied: 11 / 0.70.

Workload
10.0Erlangs
Occupancy
91%
Occupancy above 88% is hard to sustain for reading and writing work: agents need breathing room between threads. Consider a lower occupancy target or moving work out of the peak. Why a lower occupancy target protects retention.
Agents needed by interactions per conversation (60 new conversations an hour)
Agents needed by response target (80% answered within)
Response targetAgents neededOccupancy
2 minutes1283%
5 minutes1191%
15 minutes (yours)1191%
60 minutes1191%
240 minutes1191%

Past a few minutes the answer barely changes, because each reply is a small job and the queue has plenty of room. A longer promise to the customer does not shrink the team in the busy hour.

Three ways to plan it
MethodWorkloadAgentsVersus correct
Correct: interactions x time per interaction10.0 Erlangs11-
Shortcut 1: conversations x time per interaction2.0 Erlangs3too few by a factor of 3.7
Shortcut 2: voice style, open time as handle time180 Erlangs195about 18 times too many

Shortcut 1 undercounts the work by exactly the number of interactions per conversation. Shortcut 2 counts the hours a thread sits open as work, which the agent never spends. The fix for both is the same: plan on interactions.

Save or share these results

Take a snapshot of the exact inputs and outputs on screen.

Get the full Excel/VBA version

The full Excel/VBA version with live formulas, RTM tracking, and dashboards is free for now.

Results are estimates for planning purposes only and should not replace professional workforce management judgment.

The calculator counts the real work: interactions per hour times the handle time of one interaction. That workload goes through the same Erlang C model used for voice, with your response target as the service goal. The two shortcuts in the comparison table show what happens when you plan on conversations only, or treat open time as handle time.

Assumptions

  • Follow up messages arrive at a steady rate across the hour.
  • One agent handles one reply at a time; no concurrency between threads.
  • Every reply takes the same average handle time, including reading and wrap up.
  • Shrinkage is divided out of the roster, not multiplied onto the floor number.

Using it well

  • Results are a model: replace the defaults with your own conversation, interaction and handle time data.
  • Track interactions per conversation as its own forecast line; it moves more than conversation volume.
  • If agents handle several threads at once, check the chat concurrency guide before trusting the numbers.
  • Size the underlying queue with the Erlang C Calculator and set shrinkage with the Shrinkage Calculator.

Frequently asked questions

Which handle time should I plan with?

The handle time of one interaction: one agent reply, including reading and wrap up. A conversation stays open for hours, but the agent is only working while writing a reply, so open time massively overstates the work.

What is an interaction?

One time an agent picks up the thread and replies. A conversation with a first reply and 4 follow ups is 5 interactions. Forecast interactions per conversation as its own line, because it moves more than conversation volume.

Why does the response target barely change the answer?

Each reply is a small job, usually a couple of minutes, so even a 15 minute target gives the queue plenty of room. Past a few minutes the staffing in the busy hour is set by the workload, not the promise.

Why divide by (1 - shrinkage) instead of multiplying?

Shrinkage is a share of the roster, not of the floor number. If 30 percent of the roster is off the floor, the roster must be the floor number divided by 0.7. Multiplying by 1.3 understates it.

Related reading: read the full guide on which handle time to plan with.

Download the full Excel model

Get the working spreadsheet behind this page, plus one practical WFM tip a week.

More tools

See all tools