Building a Shift Schedule in a Contact Center — The Process from Forecast to Published Schedule

A shift schedule in a contact center is the mechanism that turns a staffing requirement into specific agent assignments — who works when, which days they are off, and when their breaks fall. The schedule determines whether the operation has enough agents on the phones during every interval to meet service level, whether overtime is controlled, and whether agents have predictable work patterns that allow them to plan their lives.
Building a productive schedule is not a creative exercise. It is a calculation that follows a defined sequence: forecast → staffing requirement → shift design → agent assignment → break placement → publication. Each step depends on the output of the previous one. Skipping steps — building schedules from "what shifts we ran last week" instead of from current forecast data — is the root cause of most scheduling problems.
For weekly planning templates, see the weekly shift planning guide. For common scheduling problems and how to diagnose them, see the scheduling challenges guide. This post covers the end-to-end process of building the schedule.
Step 1: Start with the volume forecast
The schedule starts with a question: how many contacts will arrive during each interval of each day? The volume forecast provides this.
| Forecast input | Where it comes from | What to check |
|---|---|---|
| Historical volume by interval | ACD reports — calls offered per 30-minute or 60-minute interval, by day of week, for the past 4–8 weeks | Are there anomalies in the historical data (outages, one-time campaigns, holidays) that should be excluded? See data quality considerations |
| Known upcoming events | Marketing calendar, client notifications, product launches, billing cycles | Will any event in the upcoming schedule period drive volume above or below the historical pattern? |
| Trend adjustment | Month-over-month volume growth or decline | Is volume trending up or down? Apply the trend to avoid scheduling to last month's volume when this month's is 10% higher |
| AHT by interval | ACD reports — average handle time by call type and time of day | AHT often varies by time of day (morning calls tend to be more complex). Use interval-level AHT, not a single daily average |
Worked example — a weekday forecast:
| Interval | Forecasted calls | AHT (minutes) | Agent workload (call minutes) |
|---|---|---|---|
| 8:00–8:30 | 45 | 5.5 | 248 |
| 8:30–9:00 | 62 | 5.5 | 341 |
| 9:00–9:30 | 78 | 6.0 | 468 |
| 9:30–10:00 | 85 | 6.0 | 510 |
| 10:00–10:30 | 80 | 5.8 | 464 |
| 10:30–11:00 | 72 | 5.8 | 418 |
| 11:00–11:30 | 58 | 5.5 | 319 |
| 11:30–12:00 | 50 | 5.5 | 275 |
| 12:00–12:30 | 48 | 5.2 | 250 |
| 12:30–1:00 | 52 | 5.2 | 270 |
| 1:00–1:30 | 65 | 5.5 | 358 |
| 1:30–2:00 | 70 | 5.5 | 385 |
| 2:00–2:30 | 68 | 5.8 | 394 |
| 2:30–3:00 | 60 | 5.8 | 348 |
| 3:00–3:30 | 48 | 5.5 | 264 |
| 3:30–4:00 | 35 | 5.5 | 193 |
| 4:00–4:30 | 25 | 5.2 | 130 |
| 4:30–5:00 | 18 | 5.2 | 94 |
This volume pattern — ramp-up from 8:00, peak from 9:00–10:30, lunch dip, afternoon secondary peak from 1:00–2:30, evening taper — is typical for a business-hours contact center. The schedule must match this curve, not assume flat demand.
Step 2: Calculate agents required per interval
Convert the workload into agent requirements using the staffing formula. For each interval:
Agents on phones = (Calls × AHT) ÷ (Interval length × Target occupancy)
Occupancy is how much of an agent's available time is spent handling contacts. Target occupancy for an 80/20 service level is typically 82–88%. Higher occupancy (90%+) means agents are constantly busy with no buffer — service level degrades and burnout increases.
Worked example — peak interval (9:30–10:00):
- Calls: 85
- AHT: 6.0 minutes
- Interval length: 30 minutes
- Target occupancy: 85%
Agents on phones = (85 × 6.0) ÷ (30 × 0.85) = 510 ÷ 25.5 = 20 agents on phones
Now account for shrinkage — the percentage of scheduled agents who will not be on phones due to breaks, coaching, training, after-call work, and absences.
Agents to schedule = Agents on phones ÷ (1 − Shrinkage)
At 30% shrinkage: 20 ÷ 0.70 = 29 agents scheduled for this interval.
| Interval | Calls | AHT | Agents on phones needed | Agents to schedule (30% shrinkage) |
|---|---|---|---|---|
| 8:00–8:30 | 45 | 5.5 | 10 | 15 |
| 8:30–9:00 | 62 | 5.5 | 14 | 20 |
| 9:00–9:30 | 78 | 6.0 | 19 | 27 |
| 9:30–10:00 | 85 | 6.0 | 20 | 29 |
| 10:00–10:30 | 80 | 5.8 | 19 | 27 |
| 10:30–11:00 | 72 | 5.8 | 17 | 24 |
| 11:00–11:30 | 58 | 5.5 | 13 | 19 |
| 11:30–12:00 | 50 | 5.5 | 11 | 16 |
| 12:00–12:30 | 48 | 5.2 | 10 | 15 |
| 12:30–1:00 | 52 | 5.2 | 11 | 16 |
| 1:00–1:30 | 65 | 5.5 | 15 | 21 |
| 1:30–2:00 | 70 | 5.5 | 16 | 23 |
| 2:00–2:30 | 68 | 5.8 | 16 | 23 |
| 2:30–3:00 | 60 | 5.8 | 14 | 20 |
| 3:00–3:30 | 48 | 5.5 | 11 | 16 |
| 3:30–4:00 | 35 | 5.5 | 8 | 12 |
| 4:00–4:30 | 25 | 5.2 | 6 | 9 |
| 4:30–5:00 | 18 | 5.2 | 4 | 6 |
The operation needs 29 agents at the 9:30 peak but only 6 at the 4:30 taper. A schedule that puts the same number of agents on for the full day wastes money in off-peak intervals and may still be short during peak.
Step 3: Design shift patterns to match the curve
The staffing requirement curve from Step 2 determines which shift patterns to use. The goal is to layer shifts so that total scheduled agents in each interval is as close to the requirement as possible — without chronic overstaffing or understaffing.
Common shift patterns for business-hours operations
| Shift pattern | Hours | Coverage | When to use |
|---|---|---|---|
| Full day | 8:00–5:00 (8 hrs + lunch) | All intervals | Base coverage — agents who work the full operating day |
| Early | 7:00–3:00 or 8:00–4:00 | Morning peak | Extra agents for the high-volume morning period who leave before the evening taper |
| Mid | 10:00–7:00 or 9:00–6:00 | Mid-day through afternoon peak | Covers the lunch dip and afternoon peak |
| Late | 12:00–9:00 or 1:00–10:00 | Afternoon peak through evening | Covers extended hours or afternoon peak without being present during the quiet morning start |
| Split | 8:00–12:00 then 4:00–8:00 | Morning and evening peaks, off during mid-day dip | Covers both peaks. Less common because agents dislike the split |
| Part-time | 4–6 hours | Specific peak intervals | Targeted peak coverage without a full shift. Useful for the 2–3 hour morning peak that does not justify a full additional shift |
Layering shifts for the example volume curve
Using the staffing requirement from Step 2 (peak of 29, taper to 6):
| Shift | Start | End | Agents | Coverage provided |
|---|---|---|---|---|
| A (Full day) | 8:00 | 5:00 | 15 | Base coverage for all intervals |
| B (Early) | 8:00 | 4:00 | 8 | Additional morning and mid-day coverage. Leave at 4:00 as volume drops |
| C (Mid) | 10:00 | 7:00 | 6 | Covers the lunch dip (when A and B agents take lunch) and afternoon secondary peak |
Total scheduled agents by interval with this shift mix:
| Interval | Shift A | Shift B | Shift C | Total scheduled | Requirement | Variance |
|---|---|---|---|---|---|---|
| 8:00–8:30 | 15 | 8 | — | 23 | 15 | +8 |
| 9:00–9:30 | 15 | 8 | — | 23 | 27 | −4 |
| 9:30–10:00 | 15 | 8 | — | 23 | 29 | −6 |
| 10:00–10:30 | 15 | 8 | 6 | 29 | 27 | +2 |
| 10:30–11:00 | 15 | 8 | 6 | 29 | 24 | +5 |
| 12:00–12:30 | 15 | 8 | 6 | 29 | 15 | +14* |
| 1:00–1:30 | 15 | 8 | 6 | 29 | 21 | +8 |
| 3:30–4:00 | 15 | 8 | 6 | 29 | 12 | +17 |
| 4:00–4:30 | 15 | — | 6 | 21 | 9 | +12 |
| 4:30–5:00 | 15 | — | 6 | 21 | 6 | +15 |
*The 12:00 interval shows +14 because scheduled agents are 29 but the requirement is only 15. However, this is the interval when A and B agents take lunch — actual on-phone agents will be lower. Break placement (Step 5) addresses this.
The problem this reveals: This 3-shift design overstaffs the late afternoon and understaffs the 9:00–10:00 peak. Fixes:
- Add 4 part-time agents (8:00–12:00) to cover the morning peak
- Reduce Shift A to 12 agents and add the part-time coverage
The schedule is iterative — the first pass identifies gaps, the second pass adjusts shift sizes and patterns to close them.
Step 4: Assign agents to shifts
Once shift patterns are defined, assign specific agents. This step balances operational need (skill coverage per shift) with agent considerations (preferences, seniority, fairness).
Assignment factors
| Factor | What to consider |
|---|---|
| Skill coverage | Each shift needs agents who can handle the call types that arrive during that shift. If bilingual agents are all on Shift A and Spanish-language calls come in during Shift C, coverage is wrong |
| Experience mix | Do not stack all new agents on the same shift. Each shift should have a mix of experienced and newer agents so that the supervisor is not coaching everyone simultaneously while calls are arriving |
| Supervisor coverage | Each shift needs a supervisor (or team lead) present. If Shift B has 8 agents and no supervisor, nobody is managing real-time performance |
| Days off distribution | In a 5-day operation, days off are straightforward (Saturday/Sunday). In a 6-day or 7-day operation, days off must be distributed so that each day has adequate coverage. Giving all Shift A agents Tuesday off leaves Tuesday understaffed |
| Agent preferences | Where possible, accommodate shift preferences through seniority-based bidding or rotating priority. Agents who consistently get the shift they do not want will leave — schedule dissatisfaction is a top attrition driver |
| Approved time off | Before publishing, subtract approved PTO from the roster. If 3 of 15 Shift A agents have approved time off on Wednesday, Wednesday Shift A has 12 agents — which may be below the requirement |
Shift rotation considerations
| Approach | How it works | When it fits |
|---|---|---|
| Fixed shifts | Each agent works the same shift every week | Simpler to manage. Agents prefer predictability. Works when the operation can fill all shifts with enough agents who want each one |
| Rotating shifts | Agents cycle through shifts (e.g., 2 weeks on Early, 2 weeks on Mid) | Distributes less desirable shifts fairly. Required when not enough agents volunteer for late or weekend shifts |
| Hybrid | Senior agents get fixed preferred shifts. Newer agents rotate through remaining slots | Rewards tenure with schedule stability. Common in operations where experience correlates with shift preference |
Step 5: Place breaks to maintain coverage
Break placement is the step most likely to be done poorly — and the step most likely to create service level problems if it is wrong.
The principle
If 20 agents are on a shift and all 20 take lunch from 12:00–12:30, the operation has 0 agents on phones for 30 minutes. Breaks must be staggered so that the number of agents on break during any interval does not push on-phone agents below the requirement.
Break placement rules
| Rule | Rationale |
|---|---|
| Stagger breaks across intervals | No more than 10–15% of scheduled agents should be on break simultaneously |
| Avoid breaks during the peak interval | If 9:30–10:00 is the peak, no agent should have a scheduled break during 9:30–10:00. Place breaks before 9:00 or after 10:30 |
| Coordinate lunch breaks with the volume dip | If volume dips from 11:30–1:00, this is the natural window for lunch breaks. Stagger lunches across this window: Group 1 at 11:30, Group 2 at 12:00, Group 3 at 12:30 |
| Place 15-minute breaks between peak intervals | A short break at 10:30 (after the morning peak) and at 2:30 (after the afternoon peak) keeps agents fresh without removing them during high demand |
| Account for breaks in the staffing calculation | The shrinkage percentage in Step 2 includes break time. If breaks are clustered (not staggered), the actual shrinkage during the break cluster exceeds the average, and the interval is understaffed |
Worked example — lunch placement for Shift A (15 agents)
| Lunch group | Agents | Lunch time | On-phone during other groups' lunch |
|---|---|---|---|
| Group 1 | 5 agents | 11:30–12:00 | 10 agents on phones |
| Group 2 | 5 agents | 12:00–12:30 | 10 agents on phones |
| Group 3 | 5 agents | 12:30–1:00 | 10 agents on phones |
At every interval during the lunch window, 10 Shift A agents are on phones. Add Shift B (8 agents, taking lunch 11:00–11:30 or 12:00–12:30) and Shift C (6 agents, all on phones during this window since their shift started at 10:00 and lunch is at 1:30), and the total on-phone count during the lunch dip stays adequate.
Step 6: Publish and manage changes
Publication timeline
| Milestone | When | Why |
|---|---|---|
| Draft schedule completed | 2 weeks before the schedule period | Allows time for review and adjustment |
| Agent review period | 10–12 days before | Agents review their assignments, flag conflicts, and request shift swaps |
| Final schedule published | 7 days before (minimum) | Agents need at least 1 week notice to plan personal commitments. Some state predictive scheduling laws require 7–14 days advance notice |
| Schedule freeze | 3 days before | After this point, changes require supervisor approval. Day-of changes are intraday management, not scheduling |
Managing day-of changes
The published schedule will not survive contact with reality — agents call out sick, volume deviates from forecast, systems go down. Day-of changes are intraday management actions:
| Situation | Response |
|---|---|
| Unplanned absence | Check if the staffing buffer absorbs it (1–2 absences usually covered). If not, offer voluntary overtime to off-duty agents |
| Volume above forecast | Defer breaks, extend shifts (with agent consent), or call in off-duty agents. If above forecast by 15%+, escalate to ops manager |
| Volume below forecast | Offer voluntary early release (VER) to agents who want to leave early. This reduces paid idle time |
| Agent requests same-day swap | Supervisor approves if both agents are qualified for the swapped shift and coverage is maintained |
Schedule quality checks
After building the schedule, verify it before publishing.
| Check | What to verify | What failure looks like |
|---|---|---|
| Coverage vs. requirement | For every interval, scheduled agents ≥ requirement from Step 2 | Any interval where scheduled is fewer than required → service level risk |
| Break placement | No interval where more than 15% of agents are on break simultaneously | An interval where 8 of 20 agents are on break → the interval is effectively understaffed by 40% |
| Skill coverage | Every interval has agents for every required skill group (bilingual, escalation, specific client in a BPO) | A shift with no Spanish-language agents during hours when Spanish calls arrive |
| Overtime exposure | No agent is scheduled for more than 40 hours unless pre-approved | An agent working 5 × 9-hour shifts = 45 hours → 5 hours of unplanned overtime at 1.5x |
| Compliance | Minimum rest between shifts (typically 8–11 hours). Maximum shift length per policy. Meal and rest breaks per state law | An agent closing at 10:00 PM and opening at 6:00 AM → 8 hours between shifts, which violates policy in many operations |
| Approved time off | All approved PTO and leave is reflected in the schedule | An agent with approved PTO still showing as scheduled → they do not show up, and it looks like an unplanned absence |
| Fairness | Weekend and undesirable shifts are distributed equitably (or by the established priority system) | The same 5 agents get every Saturday shift for 3 consecutive months while others never work weekends |
BPO scheduling additions
BPO operations add complexity because schedules must align with multiple client SLAs.
| Addition | What it requires |
|---|---|
| Per-client staffing requirements | Each client has its own volume forecast, AHT, and SLA target. The staffing calculation runs per client, and the schedule must ensure each client's coverage is met independently |
| Cross-trained agent allocation | Agents trained on multiple accounts can be shared across clients. The schedule assigns them to a primary account but marks them as available for overflow. Intraday management moves them as needed |
| Client blackout periods | Some clients require additional staffing during their peak periods (billing cycles, product launches). The BPO schedule must accommodate client-specific peak periods that may not align with the BPO's overall volume pattern |
| Contract-aligned hours | If the contract specifies 10 dedicated agents for Client A from 8:00–5:00, the schedule must deliver exactly that — not 8 agents plus 2 overflow. Contract violations affect the SLA and client relationship |
