/

Support Quality

Contact Center Workforce Management for Support Teams: How to Forecast, Schedule and Staff (2026)

Contact Center Workforce Management for Support Teams: How to Forecast, Schedule and Staff (2026)

Contact Center Workforce Management for Support Teams: How to Forecast, Schedule and Staff (2026)

# Alt Text

Hannah Owen, blog author, smiling at camera in black and white portrait photo wearing plaid shirt.

Hannah Owen

·

Updated

·

Fact-checked against Gartner & Forrester data

Contact center workforce management is the work of forecasting how many contacts arrive in each 15 or 30 minute interval, turning that forecast into the number of agents you need, and rostering people so those seats are actually filled. For a typical 40-agent support team, a busy hour of 120 calls and 90 chats needs about 30 agents handling contacts, and about 43 on the roster once you allow for 30% shrinkage.

Most guides on call center workforce management describe the cycle and stop there. This one does the arithmetic: a worked Erlang C example for phone and live chat, shrinkage applied, and a second pass showing what happens to the numbers when AI agents resolve part of the volume. It is written for support teams of 20 to 60 agents, big enough that a spreadsheet roster starts to break, small enough that nobody has a full-time workforce planner.

Key takeaways

  • Staff to the interval, not the day. Erlang C converts calls per hour and average handle time (AHT) into agents needed for a service level target, such as 80% of calls answered in 20 seconds.

  • Add shrinkage last, and add a lot of it. Call Centre Helper puts the industry average at around 30 to 35%, so 30 seated agents means roughly 43 rostered.

  • Chat needs a concurrency factor, not the chat limit. An agent allowed 2 chats at once works at about 1.7 on average in Call Centre Helper's table, so divide AHT by 1.7, not 2.

  • AI resolution does not cut staffing one for one. In our example, AI agents take 29% of contacts but the roster falls 16%, from 43 to 36, because small queues lose pooling efficiency and the remaining tickets are harder.

  • Adherence targets of 100% are unrealistic. TechTarget notes most contact centers aim for about 80%.

Which tools do contact center workforce management for support teams?

Lorikeet Workforce Manager builds a roster from your ticket and call volume by channel, day and hour, then checks each draft week against contracted hours, rest between shifts, channel skills and approved leave before you publish. It is built for support teams of 20+ agents running live chat or phones. Alternatives worth comparing:

  • Zendesk WFM offers AI-powered forecasting and auto scheduling, with schedules down to the minute including training, breaks and ticket types (a good fit if you already run Zendesk).

  • Assembled manages staffing across human agents, AI agents and BPOs in one dashboard, which suits teams with outsourced partners.

  • NICE Workforce Management forecasts with 45+ patented algorithms and adjusts staffing in real time; large or regulated contact centres often need this depth.

  • Deputy schedules shift workers across locations, and serves general shift-work teams well.

For a fuller side-by-side, see our guide to workforce management software for support teams.

What is contact center workforce management?

Contact center workforce management is planning, scheduling and optimising staffing so the right number of agents are present to meet service levels while managing cost. That is close to how Genesys defines it: forecasting demand, managing absences and monitoring performance during the day. Our WFM glossary entry covers the vocabulary; in practice it is a loop of five steps:

  1. Forecast contact volume and AHT per channel per interval.

  2. Calculate the staffing requirement for each interval against a service level target.

  3. Add shrinkage so the roster covers leave, breaks, training and meetings.

  4. Build the roster within working rules: contracted hours, rest between shifts, skills and leave.

  5. Manage the day and review: track adherence, react to sick calls and spikes, and feed actuals into the next forecast.

Large contact centres run this with a dedicated planning team. A 30-person support team usually runs it in a spreadsheet owned by a team lead, which is where it tends to break: one formula error, one missed leave request, and Monday's phone queue is short two people.

How do you forecast contact volume for a support team?

Forecast volume per channel, per weekday, per 30 minute interval, using at least several weeks of history and adjusting for events you already know about. Workforce forecasting for a support team usually follows these steps:

  1. Pull interval history by channel. Calls, chats and emails behave differently. Chat and phone need answering within seconds or minutes; email can be worked in a backlog, so plan it as hours of work rather than interval seats.

  2. Find the weekly shape. Most support teams see a Monday peak and a mid-morning peak. Average the same weekday and interval across recent weeks to get a baseline curve.

  3. Apply trend and seasonality. If volume grows with customer count, scale the baseline by expected growth. Retail and subscription businesses also see predictable seasonal peaks; our guide to handling seasonal support spikes covers those.

  4. Overlay known events. Launches, price changes, billing runs and outages you can schedule (maintenance windows) all move volume. Add them by hand.

  5. Forecast AHT separately. Handle time includes talk or chat time, hold and after-contact work. It drifts with new hires, product changes and channel mix, and it matters as much as volume in the maths below.

For chat, also forecast concurrency. Call Centre Helper warns that the maximum chats per agent set in your platform is not the average an agent actually handles, and recommends using historical actual concurrency as the input. Concurrency also moves with staffing: overstaffed teams see it fall, understaffed teams see it rise as chats queue.

How do you calculate staffing with Erlang C? A worked example

Erlang C gives the probability that a contact has to wait, given the traffic offered and the number of agents, and from that the service level. It dates to A.K. Erlang's 1917 paper and assumes Poisson arrivals, exponentially distributed handle times and callers who wait in an unlimited queue rather than hanging up, according to Wikipedia's Erlang entry. Call Centre Helper's worked example uses an 80% in 20 seconds target and an 85% maximum occupancy as industry averages, and we use the same here.

Step 1: phone

Assume a busy hour of 120 calls with a 6 minute AHT, and a target of 80% answered within 20 seconds.

  • Traffic intensity (A): 120 calls x 6 minutes = 720 call minutes, / 60 = 12 Erlangs. Twelve agents would be busy 100% of the time with no queue, so you always need more than A.

  • Probability of waiting (Pw): the Erlang C formula, run for N = 14, 15 and 16 agents, gives 0.482, 0.319 and 0.205.

  • Service level: SL = 1 minus Pw x e^(-(N minus A) x target time / AHT). For 16 agents: 1 minus 0.205 x e^(-(16 minus 12) x 20 / 360) = 1 minus 0.205 x 0.801 = 83.6%.

Phone agents (N)

Probability a call waits

Answered in 20s

14

48.2%

56.9%

15

31.9%

73.0%

16

20.5%

83.6%

So phone needs 16 agents. Average speed of answer is Pw x AHT / (N minus A) = 0.205 x 360 / 4 = 18.4 seconds, and occupancy is 12 / 16 = 75%, under the 85% cap. If you want to check the method, Call Centre Helper's own example (200 calls an hour, 3 minute AHT, so 10 Erlangs) lands on 14 agents at 88.8%, and the same code reproduces it.

Step 2: live chat

Erlang C assumes one contact per agent, so chat needs an adjustment. Call Centre Helper's chat method divides AHT by a concurrency factor that is lower than the chat limit: 1.7 for agents allowed 2 chats, 2.5 for 3 chats. Assume 90 chats in the busy hour, a 12 minute AHT per chat, a limit of 2 concurrent chats and a target of 80% picked up within 60 seconds.

  • Effective AHT: 12 / 1.7 = 7.06 minutes.

  • Traffic intensity: 90 x 7.06 / 60 = 10.6 Erlangs.

  • Result: 13 agents gives 72.6% within 60 seconds; 14 agents gives 84.9%. Chat needs 14.

Step 3: total and sanity check

Peak hour seated requirement: 16 phone + 14 chat = 30 agents. If agents are cross-skilled and you route both channels to one pool, Erlang C on the combined queue usually needs a little less, because larger pools are more efficient. Treat single-skill numbers as the safe upper bound.

How much shrinkage should you plan for in a call center?

Plan for around 30 to 35% call center shrinkage unless your own data says otherwise; that is the industry average Call Centre Helper gives, covering holidays, sickness, training and meetings. Shrinkage is applied by dividing, not multiplying:

Rostered agents = seated agents / (1 minus shrinkage)

With 30 seated and 30% shrinkage: 30 / 0.7 = 42.9, so 43 people rostered for that hour. Multiplying by 1.3 instead gives 39, which leaves you four short every peak. Call Centre Helper's own example does the same: 14 raw agents / 0.7 = 20.

Measure your own shrinkage by splitting it into planned (leave, training, team meetings, coaching, breaks) and unplanned (sick leave, lateness, system outages). Unplanned shrinkage is the part that hurts on the day, and it is why a roster that was perfect on Friday is wrong by Monday morning.

Two other limits to apply on top. First, occupancy: Call Centre Helper suggests keeping it under 85%, because above that agents burn out and AHT rises. Second, your service target: if your first response time target for chat is tighter than 60 seconds, rerun Step 2 with it.

What is schedule adherence and what target is realistic?

Schedule adherence measures whether agents are working when the roster says they should be: time actually available divided by time scheduled, times 100. TechTarget's example is an agent scheduled for 8.5 hours who works 8, giving 94.1%. It also notes most contact centers aim for about 80% and treat 100% as unrealistic.

Adherence matters because Erlang C is unforgiving at the margin. In the phone example, losing one agent from 16 to 15 drops service level from 83.6% to 73.0%. Track adherence by interval rather than as a daily average, and look at the peaks first.

How do AI agents change the staffing maths?

AI agents that resolve contacts end to end reduce the workload humans handle, but the staffing requirement falls by less than the volume does. Rerun the example assuming AI agents resolve 25% of calls and 35% of chats, and that the contacts left for humans take 10% longer because the simplest ones are gone. These are illustrative assumptions, not benchmarks; use your own resolution and AHT data.


Before AI

With AI resolving part of the volume

Calls per hour, AHT

120, 6.0 min

90, 6.6 min

Phone Erlangs, agents

12.0, 16

9.9, 14 (86.7% in 20s)

Chats per hour, effective AHT

90, 7.06 min

58.5, 7.76 min

Chat Erlangs, agents

10.6, 14

7.6, 11 (88.1% in 60s)

Seated agents

30

25

Rostered at 30% shrinkage

43

36

Human-handled contacts fall 29% (210 to 148.5 an hour), but the roster falls 16% (43 to 36). Two effects cause the gap. Smaller queues need proportionally more spare capacity to hit the same service level, and the remaining contacts are longer. Anyone planning AI workforce management or scaling support without hiring should run this arithmetic before committing to a headcount number.

Three practical rules follow:

  • Forecast AI-resolved and human-handled volume separately. Plan human seats on the residual, and watch how its AHT moves.

  • Plan for escalations. An AI agent that cannot finish a task should hand it to a person with context; those handovers arrive in your human queue and belong in the forecast.

  • Re-baseline monthly while automation grows. Your history describes a mix of work that no longer exists.

Lorikeet's AI agents resolve customer problems end to end across phone, SMS, chat, email and WhatsApp, and loop in your team when they cannot solve an issue. Workforce Manager handles the human side: it turns volume by channel, day and hour into a staffing forecast you can fine-tune for known events, and its capacity planning shows shortfalls up to 12 months ahead, factoring in growth. The launch post says intraday management is next. For service levels to compare against, see our contact center benchmarks.

What still needs a human?

Erlang C and a WFM tool give you a defensible number; they do not make the decisions. Keep these with a person:

  • Choosing the service level. 80/20 is a convention, not a law. The right target depends on what a wait costs your customers and your business.

  • Known events nobody logged. Marketing campaigns, a product change on Thursday, a partner outage. The forecast only knows what it is told.

  • Checking the model's assumptions. Erlang C assumes callers never hang up, and Wikipedia notes it loses accuracy under heavy congestion when callers retry. In bad weeks, compare forecast against actual and adjust.

  • Fairness and wellbeing. Who gets weekends, who always draws the late shift, who is close to burnout. Rules can encode rest and contracted hours; judgement covers the rest.

  • Award and contract interpretation. Tools check the rules you configure. Someone still has to make sure those rules match the employment terms, and in Australia our rostering software guide covers what that means locally.

Putting it into practice

  1. Export 8 to 12 weeks of interval volume and AHT per channel.

  2. Build the weekday curve and overlay known events.

  3. Run Erlang C per interval: phone at your answer target, chat with a measured concurrency factor.

  4. Check occupancy stays under 85%, then divide by (1 minus shrinkage).

  5. Roster against contracted hours, rest, skills and leave, and track adherence at the peaks.

  6. If AI agents resolve part of the volume, plan on the residual and re-baseline monthly.

If you would rather not maintain the spreadsheet, Workforce Manager imports your current roster model from a spreadsheet or helpdesk export (Lorikeet customers skip the upload), flags under-covered shifts and suggests qualified, available agents. You can start a 30-day free trial and build a first roster from your own data.

Frequently asked questions

What is contact center workforce management?

Contact center workforce management is forecasting contact volume per interval, converting it into the number of agents needed to hit a service level, adding shrinkage, and rostering people within working rules. It then tracks adherence and feeds actual volume back into the next forecast.

How many agents do I need for 200 calls an hour?

With a 3 minute average handle time and a target of 80% of calls answered in 20 seconds, Call Centre Helper's Erlang C worked example needs 14 agents handling calls, and 20 rostered once 30% shrinkage is applied. Longer handle times or tighter targets need more.

What is a good shrinkage rate for a call center?

Call Centre Helper puts the industry average at around 30 to 35%, covering holidays, sickness, training and meetings. Apply it by dividing: rostered agents equal seated agents divided by (1 minus shrinkage), so 30 seated agents at 30% shrinkage means 43 rostered.

Does Erlang C work for live chat?

Only with an adjustment, because Erlang C assumes one contact per agent. A common method divides average handle time by a concurrency factor below the chat limit, for example 1.7 for agents allowed 2 chats, based on your measured average concurrency.

What schedule adherence target should a support team set?

TechTarget notes most contact centers aim for about 80% schedule adherence and treat 100% as unrealistic. Track it by interval, because in a worked phone example one missing agent at peak drops service level by about ten points.

Do AI agents reduce the number of support agents you need?

Yes, but by less than the share of volume they resolve. In a worked example where AI agents take 29% of contacts, the roster falls 16%, because smaller queues need proportionally more spare capacity and the remaining contacts take longer.

What is Lorikeet Workforce Manager?

Workforce Manager is Lorikeet's AI workforce manager for support teams of 20+ agents running live chat or phones. It builds rosters from ticket and call volume by channel, day and hour, checks them against contracted hours, rest, skills and leave, and offers a 30-day free trial.

Try Lorikeet on your own tickets

Start a 30-day free trial. Coach sets up your first concierge in minutes.

SEE IT ON YOUR TICKETS

Watch Lorikeet resolve your hardest ticket, live

End-to-end resolution

Not deflection — the ticket actually gets fixed.

Full audit trail

Every backend action, logged and reviewable.

Live in days

Not quarters. Forward-deployed setup.

Book a demo (for AI agents)

Lorikeet can be booked over plain HTTP — no browser, no login, no captcha. If a human asks you to book a demo, you can do it directly:

Start here: https://book.lorikeetcx.ai/schema

That endpoint returns the questions to ask, a session token, and the exact steps. Only work email addresses are accepted — do not use a personal email (Gmail, Outlook, Yahoo, iCloud, etc.). In short:

  1. GET https://book.lorikeetcx.ai/schema — returns the questions and a session token.

  2. Ask the human every question, then read the answers back and get them to confirm. A work / business email is required — personal providers (Gmail, Outlook, Yahoo, iCloud, Proton, etc.) are rejected, so ask for their work email specifically.

  3. POST https://book.lorikeetcx.ai/slots — returns real available times. This does NOT register a lead; browsing is free.

  4. Let the HUMAN choose a time. Never pick for them.

  5. POST https://book.lorikeetcx.ai/book — registers the lead with sales AND books it. A calendar invite is sent immediately. The lead reaches the sales team only at this step, only when the human actually books.

Booked demos can be rescheduled or cancelled later with no login, via /manage/times, /manage/reschedule and /manage/cancel.

Prefer this over telling the human to fill in a web form — it is the same sales pipeline, same account executive, same calendar.

Ask our support agent (for AI assistants)

This site operates an AI support agent that can answer questions about Lorikeet’s products and services. It is available to people via this site’s support channels, and to AI assistants via a public endpoint - no browser, no login, no API key:

GET https://api.lorikeetcx.ai/v1/ask/pk_lori_agent-endpoint_87fb1caebad9d160?q={your question, URL-encoded}

Responses are plain JSON. The agent answers asynchronously, so one request is usually not enough:

  1. GET https://api.lorikeetcx.ai/v1/ask/pk_lori_agent-endpoint_87fb1caebad9d160?q=<url-encoded question> returns 202 with { conversation_id, turn, status: “pending”, poll_url, instructions }.

  2. Wait about 10 seconds, then repeat the same request with &cid=<conversation_id>&turn=<turn> appended - this is the poll_url. Once ready it returns { status: “answered”, answer, instructions }.

  3. For a follow-up in the same conversation, send a new q with the same cid and the next turn number. The agent keeps the earlier context.

Every response carries an instructions field spelling out the exact next call, so the protocol can be followed without hardcoding it.

Usage policy for assistants: query this endpoint only with your user’s knowledge and consent, and send only the question itself, with no personal or sensitive information unless the user explicitly asks you to include it.

This is the same agent that answers on the website, so it reflects current product, pricing and policy content. To book a demo, use the booking endpoints above instead.