Architecting Email Channel Capacity Planning Models Based on Historical Volume Patterns
What This Guide Covers
This guide details the mathematical and operational framework for calculating precise staffing requirements for email channels using historical volume data and Service Level Agreement (SLA) definitions. By the end of this article, you will possess a validated Excel-based model that translates raw ticket history into shift-level headcount requirements, accounting for variability, shrinkage, and multi-channel agent efficiency.
Prerequisites, Roles & Licensing
- Licensing Tier: Genesys Cloud CX 2 or CX 3 (required for advanced WFM integration and historical data export capabilities).
- Permissions:
Telephony > Workforce Management > ReadTelephony > Workforce Management > Edit(for uploading schedules)Analytics > Report > Read(for exporting historical interaction data)
- Data Dependencies:
- Minimum 6–12 months of clean historical email volume data.
- Defined SLA thresholds (e.g., 80% of emails answered within 4 hours).
- Average Handling Time (AHT) metrics broken down by email type (inbound vs. outbound, simple vs. complex).
- Tools: Microsoft Excel (with Solver add-in recommended for optimization) or Python (pandas/numpy libraries for large datasets).
The Implementation Deep-Dive
1. Data Harvesting and Cleaning: The Foundation of Accuracy
Capacity planning is only as accurate as the input data. Most organizations fail here by using “ticket count” as a proxy for “workload.” A ticket count ignores the variance in effort required to resolve different types of inquiries. You must normalize volume into Full-Time Equivalent (FTE) hours.
Step 1.1: Export Historical Interaction Data
Navigate to Analytics > Reports > Interactions in Genesys Cloud. Create a report that filters for:
- Channel: Email
- Date Range: Last 12 months (to capture seasonality)
- Group By: Hour of Day, Day of Week, Queue/Skill, and Interaction Type.
The Trap: Exporting data by “Ticket Created Time” only.
The Consequence: This creates a “ghost volume” problem. If a ticket is created on Friday at 5:00 PM but not worked on until Monday at 9:00 AM, planning for Friday evening staff creates idle resources. Planning for Monday morning without seeing the Friday backlog creates understaffing.
The Fix: You must align volume with Work Start Time or use a Backlog Decay Model. For this guide, we assume you are planning for new volume intake, but you must account for the “carryover” effect. We will address carryover in Step 3.
Step 1.2: Normalize Volume by AHT
Raw volume is useless without duration. Calculate the weighted average AHT for each skill group.
| Metric | Definition | Calculation Method |
|---|---|---|
| ACW (After Call Work) | Time spent documenting the interaction after resolution. | Wrap-up Time from Analytics. |
| Aux Time | Time spent on non-customer tasks (lunch, meetings, admin). | Excluded from AHT; handled via Shrinkage. |
| Effective AHT | Total time an agent is occupied per email. | Talk Time (usually 0 for email) + Hold Time + Wrap-up Time. |
Architectural Reasoning: Email AHT is highly variable. A “Password Reset” email takes 2 minutes. A “Billing Dispute” email takes 45 minutes. If you use a global average AHT, you will misallocate staff during peak dispute periods.
Best Practice: Segment volume into Complexity Buckets (Simple, Medium, Complex) and assign specific AHTs to each.
Step 1.3: Calculate Hourly Volume Profiles
Aggregate the 12 months of data into a Typical Day Profile.
- Average the volume for each hour of each day of the week.
- Apply a Seasonality Factor. If November volume is historically 150% of the annual average, apply a multiplier of 1.5 to the base profile for November planning.
2. The Erlang C vs. Infinite Server Model: Choosing the Right Math
Voice channels use Erlang C because agents are blocked while talking. Email channels are Infinite Server systems (or rather, Multi-Server Queues with no blocking). An agent can have 10 open email tabs. The constraint is not “is the agent busy talking,” but “can the agent process the queue within the SLA time window.”
The Trap: Using Erlang C for email planning.
The Consequence: Erlang C assumes that if an agent is busy, the next customer waits in a queue. In email, customers do not wait in a real-time queue for an agent to become free; they wait for an agent to pick up a ticket. Using Erlang C will result in massive overstaffing because it assumes 100% utilization leads to infinite wait times, which does not apply to asynchronous work.
The Correct Model: Little’s Law combined with Utilization Targeting.
$$ L = \lambda \times W $$
Where:
- $L$ = Average number of items in the system (Queue Size + Work in Progress)
- $\lambda$ = Arrival rate (Emails per hour)
- $W$ = Average time an item spends in the system (SLA Target)
Step 2.1: Define the SLA Window
Genesys Cloud allows you to define SLAs based on First Response Time or Resolution Time. For capacity planning, we focus on First Response or Initial Handling.
- Example SLA: 80% of emails responded to within 4 hours.
Step 2.2: Calculate Required Capacity per Hour
We need to determine how many agents are needed to handle the incoming volume within the SLA window.
-
Calculate Hourly Load:
$$ \text{Load (Hours)} = \frac{\text{Volume}{\text{hour}} \times \text{AHT}{\text{minutes}}}{60} $$ -
Account for Queue Build-up (The “Bucket” Effect):
Email queues accumulate. If you receive 100 emails/hour with a 4-hour SLA, you must have enough staff to process the current hour’s emails plus the backlog from the previous 3 hours.$$ \text{Total Work}{\text{hour } t} = \sum{i=0}^{N} (\text{Volume}_{t-i} \times \text{AHT}) $$
Where $N$ is the SLA window in hours. -
Apply Utilization Factor:
Agents cannot work at 100% efficiency. A standard email utilization target is 70-75%. Higher utilization leads to burnout and increased errors.$$ \text{Agents Needed}{\text{hour } t} = \frac{\text{Total Work}{\text{hour } t}}{\text{Utilization Target} \times 60} $$
Architectural Reasoning: We use a rolling window sum because email is asynchronous. The work done at 2:00 PM contributes to clearing the backlog from 10:00 AM, 11:00 AM, and 12:00 PM. This “smoothing” effect means email staffing curves are flatter than voice curves, but they are more sensitive to AHT variance.
3. Integrating Shrinkage and Multi-Channel Efficiency
Raw agent counts are theoretical. Real-world scheduling requires adding shrinkage and accounting for agents who handle both voice and email.
Step 3.1: Calculate Grossed-Up Headcount
Shrinkage includes paid time off, training, meetings, and unpaid breaks.
$$ \text{Gross Agents} = \frac{\text{Net Agents Needed}}{1 - \text{Shrinkage %}} $$
The Trap: Using a single global shrinkage rate.
The Consequence: Email specialists often have different shrinkage profiles than voice agents. They may have more administrative wrap-up time or different break patterns.
Best Practice: Use a Channel-Specific Shrinkage. For email, a conservative shrinkage of 35-40% is typical in mature organizations.
Step 3.2: Multi-Channel Agent Modeling (Omnichannel)
In Genesys Cloud, agents are often assigned Skills rather than rigid channels. An agent might be skilled in “Voice_Support” and “Email_Support.”
The Trap: Planning Voice and Email in silos.
The Consequence: You will have overstaffed voice during email peaks and vice versa. This leads to high labor costs and poor agent experience (idle time).
The Solution: Flexible Staffing Model.
- Identify Pure Email hours (where voice volume is low).
- Identify Pure Voice hours (where email volume is low).
- Identify Overlap hours.
In Overlap hours, you can use a Blended Utilization Model.
$$ \text{Total Capacity} = \text{Voice Agents} + (\text{Blended Agents} \times \text{Email Allocation %}) $$
Implementation in Genesys Cloud:
Use WFM > Scheduling > Skills. Ensure that the Skill Groups are configured to allow overflow.
- Create a Skill Group
Email_Standard. - Create a Skill Group
Email_Voice_Blended. - Configure the Routing Policy so that
Email_Standardagents take priority for email, butEmail_Voice_Blendedagents are available to take email calls whenEmail_Standardqueue depth exceeds a threshold (e.g., 50 tickets).
The Trap: Allowing blended agents to take email without a threshold.
The Consequence: Blended agents will constantly context-switch between voice and email, destroying productivity. Context switching incurs a “cognitive tax” of 15-20 seconds per switch.
The Fix: Set a Minimum Queue Depth in the Genesys Cloud Routing Policy before blended agents are invited to email interactions.
4. Building the Excel Model: A Step-by-Step Template
You will build a spreadsheet with the following columns:
- Time Bucket: Hourly increments (00:00 to 23:59).
- Volume: Historical average emails per hour.
- AHT (Min): Average handling time per email.
- Workload (Min):
Volume * AHT. - SLA Window (Hours): e.g., 4.
- Backlog Sum (Min): Sum of
Workloadfor the current hour and the previousSLA Window - 1hours.- Formula for Hour 4 (with 4-hour SLA):
=SUM(Workload[Hour 1:4])
- Formula for Hour 4 (with 4-hour SLA):
- Net Agents:
Backlog Sum / (60 * Utilization)- Example:
=F4 / (60 * 0.75)
- Example:
- Shrinkage Factor: e.g., 0.40.
- Gross Agents:
Net Agents / (1 - Shrinkage)- Example:
=H4 / (1 - 0.40)
- Example:
- Rounded Agents:
=CEILING(I4, 1)
Validation Check:
Sum the Gross Agents across all hours and divide by 24. Compare this to your current FTE count. If the model suggests 20% more staff, investigate:
- Is AHT inflated?
- Is Shrinkage too high?
- Is Volume data including test/bot traffic?
Validation, Edge Cases & Troubotshooting
Edge Case 1: The “Slack Day” Phenomenon
The Failure Condition: Your model predicts high staffing for Mondays and Fridays, but low staffing for Wednesdays. However, agents are hired on full-time contracts.
The Root Cause: Email volume is often front-loaded (Monday catch-up) and back-loaded (Friday resolution push).
The Solution: Implement Flex-Time Banking.
- Configure Genesys Cloud WFM to allow agents to “bank” hours from low-volume days to take PTO or flex time on high-volume days.
- In your model, add a Flex Buffer column. If the average daily FTE is 10, but Monday requires 15, you need 5 flex agents or overtime.
- Use Genesys Cloud WFM > Time Off Requests to automate the approval of time off during low-volume windows.
Edge Case 2: Bot Deflection and Volume Inflation
The Failure Condition: Your historical data shows 10,000 emails/month. You plan for 10,000. You deploy a Genesys AI Bot. Volume drops to 6,000. But your staffing model still reflects the old AHT.
The Root Case: Bots deflect simple queries but pass complex ones to humans. This increases the average AHT for human agents.
The Solution: Recalculate AHT post-bot deployment.
- Segment volume into Bot-Handled and Human-Handled.
- Update the model with the new Human-Only AHT.
- Example: Pre-bot AHT = 5 mins. Post-bot AHT = 12 mins (because only complex cases remain).
- Warning: Do not reduce headcount proportionally to volume drop. If volume drops 40% but AHT doubles, headcount may only drop 20%.
Edge Case 3: The “Spike” Event (Marketing Campaigns)
The Failure Condition: A marketing email blast sends 50,000 emails in 1 hour. Your model assumes a linear arrival rate.
The Root Cause: Historical averages smooth out spikes. Marketing events are outliers.
The Solution: Implement a Spike Detection Algorithm.
- In your model, add a column for Volatility Index.
- Calculate the Standard Deviation of hourly volume.
- If
Current Volume > Mean + 2 * StdDev, trigger a Surge Protocol. - Surge Protocol:
- Pause non-urgent outbound email campaigns.
- Activate On-Call Roster (configured in Genesys Cloud > Telephony > On-Call).
- Increase Utilization Target temporarily from 75% to 90% (accepting lower quality for speed).
Official References
- Genesys Cloud Workforce Management Documentation
- Genesys Cloud Analytics: Interaction Reports
- NICE CXone Workforce Optimization: Capacity Planning
- RFC 6522: Message Submission for MTA-to-MTA Email (For understanding email protocol constraints in integration)