Implementing Shrinkage Factor Calibration Models Using Historical Absence Pattern Data
What This Guide Covers
You will configure Genesys Cloud Workforce Management (WFM) to replace static shrinkage percentages with dynamic, data-driven shrinkage profiles based on historical absence patterns. You will build a pipeline to ingest granular absence data, map it to specific shrinkage categories, and apply calibrated factors to your forecasting models to ensure headcount planning reflects actual agent availability rather than theoretical capacity.
Prerequisites, Roles & Licensing
- Licensing Tier: Genesys Cloud CX 3 or CX 3+ with the Workforce Management (WFM) add-on enabled. WEM (Workforce Engagement Management) is not required for standard shrinkage configuration but is recommended for advanced absence management.
- Granular Permission Strings:
Workforce Management > Settings > EditWorkforce Management > Shrinkage > EditWorkforce Management > Forecasts > EditAdministration > Users > Edit(for assigning roles)
- OAuth Scopes: If automating via API, you require
wfm:shrinkage:writeandwfm:forecast:read. - External Dependencies:
- Access to historical absence records (exported from WFM, HRIS, or middleware).
- A defined calendar structure in Genesys Cloud (holidays, shift templates).
- Minimum 6–12 months of historical absence data for statistical significance.
The Implementation Deep-Dive
1. Deconstructing Shrinkage Categories and Data Granularity
Before touching the configuration UI, you must define what constitutes “shrinkage” in your specific operational context. Genesys Cloud WFM allows for multiple shrinkage profiles, but the accuracy of your model depends entirely on how you categorize the loss of productive time.
Standard practice divides shrinkage into two primary buckets: Planned and Unplanned.
- Planned Shrinkage: Paid time off (PTO), scheduled training, meetings, and holidays. This is deterministic. You know Agent A is off on July 4th.
- Unplanned Shrinkage: Sick time, voluntary time off (VTO) taken at the last minute, and unexpected absences. This is probabilistic.
The Trap: Many architects configure a single global shrinkage percentage (e.g., “20% Shrinkage”) and apply it to every skill and every day. This is mathematically flawed because shrinkage is not uniform across time. Absence rates spike during flu season, dip during peak holiday pay periods, and vary significantly between tenure groups. A new hire has different absence patterns than a tenured agent. Applying a flat average masks these variances, leading to overstaffing on low-absence days and chronic understaffing on high-absence days.
Architectural Reasoning: We use separate shrinkage profiles for different agent groups (e.g., “New Hires” vs. “Tenured”) and different time horizons. We treat Planned Shrinkage as a hard constraint in the schedule and Unplanned Shrinkage as a buffer in the forecast.
Step 1.1: Define Shrinkage Profiles in WFM
- Navigate to Admin > Workforce Management > Settings > Shrinkage.
- Click Add Shrinkage Profile.
- Create distinct profiles:
Profile: Tenured_Agents_UnplannedProfile: New_Hires_UnplannedProfile: Global_Planned
Configuration Detail:
- For
Profile: Global_Planned, you will typically use Calendar-Based or Fixed Percentage if your planned time off is highly predictable and uniform. - For Unplanned profiles, you will use Historical Data or Manual Entry based on the calibration model we are building.
The Trap: Do not mix Planned and Unplanned shrinkage into a single profile. If you combine them, you lose the ability to adjust for known events. If you know a training session is scheduled, you should subtract that exact time from capacity, not apply a probabilistic shrinkage factor to it. Mixing them creates “double-dipping” errors where you account for the same lost time twice.
2. Ingesting and Cleaning Historical Absence Data
Genesys Cloud WFM does not automatically calculate shrinkage factors from raw absence logs. You must provide the aggregated metrics. This requires a data extraction and transformation step.
Step 2.1: Data Extraction
You need the following data points for each agent for the past 12 months:
Agent_IDAbsence_DateAbsence_Type(Sick, PTO, Unplanned)Duration_HoursShift_Length_Hours(to calculate the percentage of lost productivity for that shift)
API Approach:
If your absence data resides in Genesys Cloud WFM absence records, you can query the WFM API. However, for historical calibration, it is often cleaner to export from your HRIS or middleware.
If using Genesys Cloud WFM Absence API:
GET /api/v2/wfm/schedules/absences?startTime=2023-01-01T00:00:00Z&endTime=2023-12-31T23:59:59Z
Authorization: Bearer <access_token>
The Trap: Raw absence data includes “Partial Day” absences. If an agent calls out for 4 hours of an 8-hour shift, that is not 100% shrinkage for that day. It is 50% shrinkage for that day. Many implementations incorrectly count a partial absence as a full day lost. This inflates your shrinkage factor by 15-30%. You must normalize all absence records to Lost Productive Hours divided by Scheduled Productive Hours.
Step 2.2: Data Transformation and Aggregation
You must aggregate this data by:
- Month: To identify seasonality (e.g., January/February spikes).
- Agent Tenure Group: To separate new hire volatility from tenured stability.
- Day of Week: To identify if absences cluster on Mondays or Fridays.
Calculation Logic:
$$ \text{Monthly Shrinkage Factor} = \frac{\sum \text{Lost Productive Hours}}{\sum \text{Total Scheduled Hours}} $$
You will generate a matrix of shrinkage factors. For example:
Tenured_Agents: Jan = 12%, Feb = 14%, Mar = 8%…New_Hires: Jan = 18%, Feb = 20%, Mar = 15%…
Architectural Reasoning: We use a rolling 12-month average for “base” shrinkage, but we apply a Seasonality Multiplier derived from the monthly breakdown. This ensures that if January historically has 1.5x the average absence rate, your forecast for next January reflects that reality.
3. Configuring Dynamic Shrinkage Profiles in Genesys Cloud
Now that you have your calibrated factors, you must input them into Genesys Cloud.
Step 3.1: Applying Monthly Factors to Unplanned Profiles
- Go to Admin > Workforce Management > Settings > Shrinkage.
- Select
Profile: Tenured_Agents_Unplanned. - Set the Type to Monthly Percentage.
- Enter the calculated percentages for each month (Jan-Dec) derived from your historical data.
Example Configuration:
- January: 12%
- February: 14%
- March: 8%
- …
- December: 10%
The Trap: Do not use the “Annual Average” setting if your data shows significant monthly variance. The annual average smooths out peaks and troughs. If you use an annual average of 10% but January is actually 14%, you will be understaffed in January. The system will forecast based on 10%, but reality will be 14%, resulting in a 4% capacity deficit.
Step 3.2: Handling Planned Shrinkage via Calendar Overrides
Planned shrinkage is handled differently. It is not a percentage applied to the forecast; it is a reduction in available capacity.
- Navigate to Admin > Workforce Management > Schedules > Calendars.
- Create a Holiday Calendar or Training Calendar.
- Mark specific dates as non-working or reduced capacity.
When you generate a schedule, Genesys Cloud subtracts these planned absences from the total available hours before applying the unplanned shrinkage factor.
Architectural Reasoning: This order of operations is critical.
$$ \text{Net Capacity} = (\text{Gross Scheduled Hours} - \text{Planned Absences}) \times (1 - \text{Unplanned Shrinkage Factor}) $$
If you apply unplanned shrinkage to the Gross Scheduled Hours and then subtract planned absences, you are applying shrinkage to time that is already accounted for. This results in overstaffing. Always subtract planned time first.
4. Integrating Shrinkage Profiles into Forecasting Models
The shrinkage profile is useless if it is not linked to your forecast.
Step 4.1: Assigning Profiles to Skills and Groups
- Go to Admin > Workforce Management > Skills.
- Select a Skill (e.g.,
Support_US_English). - Navigate to the Shrinkage tab.
- Assign the appropriate profile:
- For the general agent pool, assign
Profile: Tenured_Agents_Unplanned. - If you have a separate skill for new hires, assign
Profile: New_Hires_Unplanned.
- For the general agent pool, assign
The Trap: Assigning the wrong profile to a skill group. If you assign the “Tenured” profile (8% avg shrinkage) to a group that is 50% new hires (15% avg shrinkage), your forecast will be overly optimistic. You will plan for 92% availability when reality is 87.5%. This 4.5% gap compounds over time, leading to service level breaches.
Step 4.2: Validating the Forecast Output
- Go to Workforce Management > Forecasts.
- Create a new forecast for a future period.
- Review the Capacity tab.
- Compare the Required Staff vs. Scheduled Staff.
Validation Check:
- Calculate the expected shrinkage manually for a sample week.
- Compare it to the shrinkage deducted in the Genesys Cloud forecast summary.
- They should match within 0.1%.
The Trap: Ignoring the “Buffer” setting. Genesys Cloud allows you to add an additional buffer on top of shrinkage. If your historical data already includes a buffer (e.g., you intentionally overestimated sick time), do not add an additional buffer in the forecast settings. This leads to “Buffer Stacking,” where you are paying for 25% shrinkage when 15% is sufficient.
Validation, Edge Cases & Troubleshooting
Edge Case 1: The “New Hire Ramp” Distortion
The Failure Condition:
Your shrinkage model shows a sudden spike in unplanned shrinkage in Q1, but actual absence rates are stable.
The Root Cause:
You have a large cohort of new hires starting in January. New hires have higher unplanned absence rates (training dropout, early resignation, adjustment sickness). If your shrinkage profile is static and based on annual averages, it does not account for the composition of the workforce changing.
The Solution:
Implement a Tenure-Based Shrinkage Strategy.
- Create a separate skill group for “New Hires” (e.g.,
Support_New_Hires). - Assign the
Profile: New_Hires_Unplannedto this group. - As agents graduate to tenured status, move them to the
Support_Tenuredskill group. - Ensure your forecast aggregates capacity from both groups correctly.
Edge Case 2: The “Pandemic/Anomaly” Outlier
The Failure Condition:
Your historical data includes 2020 and 2021, where absence rates were abnormally high due to remote work adjustments or health concerns. Your current model predicts 18% shrinkage, but current reality is 10%.
The Root Cause:
Statistical contamination. Your 12-month rolling average includes non-representative data points.
The Solution:
Manual Calibration Override.
- Identify the anomalous period in your historical data.
- Exclude that data from the calculation of your “Base” shrinkage factor.
- Recalculate the shrinkage profile using only “normal” operational months (e.g., 2019 and 2022-2023).
- Document this exclusion in your WFM settings notes for audit purposes.
Edge Case 3: The “Partial Shift” Calculation Error
The Failure Condition:
Your shrinkage factor is consistently 5-10% higher than actual absence rates.
The Root Cause:
You are counting partial-day absences as full-day absences in your historical data aggregation.
The Solution:
Refine your data transformation script.
Ensure that:
lost_hours = absence_duration_hours
scheduled_hours = shift_template_hours
shrinkage_contribution = lost_hours / scheduled_hours
Do not use:
shrinkage_contribution = 1.0 if absence_duration_hours > 0 else 0.0