About WFM forecast algorithms

<body>
<p id="docs-hc-snippet" style="display: none;">A forecasting algorithm is a tool that predicts future outcomes based on past data. It looks for patterns in historical information to estimate what might happen next. These tools use statistical methods or machine learning to improve their accuracy and consider factors like seasonal changes and overall trends to make better predictions.</p>
<div class="article-banners">
<div id="docs-wmp-link">
<a href="https://support.zendesk.com/hc/en-us/articles/5411234991258-plan" rel="noopener" target="_blank">What's my plan?</a>
</div>

<div class="article-banner" id="addon_wfm">
<table>
<tbody>
<tr>
<td>
<strong>Add-on</strong>
</td>
<td>Workforce Management (WFM) or Workforce Engagement Management (WEM)</td>
</tr>
</tbody>
</table>
</div>

</div>
<div id="docs-ai-summary">
<p id="docs-ai-summary-toggle">Summary: <span id="up-triangle">◀</span><span id="down-triangle">▼</span></p>
<p id="docs-ai-summary-content">Forecasting algorithms predict future outcomes using past data, with options including statistical, machine learning, and AI models. You can rely on automatic selection or choose algorithms based on your data volume, trends, and seasonality. Options range from simple averages for limited data to advanced neural networks for complex patterns and events, helping you tailor forecasts to your team's needs and improve workforce planning accuracy.</p>
</div>

<div class="body">

<p class="p">A forecasting algorithm is a tool that predicts future outcomes based on past data. It looks
for patterns in historical information to estimate what might happen next. These tools use
statistical methods or machine learning to improve their accuracy and consider factors like
seasonal changes and overall trends to make better predictions. </p>
<p class="p">In Zendesk Workforce management (WFM), the best forecasting algorithm for each workstream is
automatically selected by analyzing your historical data and testing all algorithms. This is
to determine which will perform best for the specific workstream.</p>
<p class="p">However, you can overwrite the automatic algorithm selection and choose any algorithm Zendesk
WFM offers.</p>
<p class="p">This article contains the following topics:</p>
<ul class="ul" id="topic-1__ul_z41_ccj_fgc">
<li class="li"><a class="xref" href="#topic_csg_pcj_fgc">Understanding statistical
algorithms</a></li>
<li class="li"><a class="xref" href="#topic_c2j_fdj_fgc">Understanding machine learning
algorithms</a></li>
<li class="li"><a class="xref" href="#topic_hm4_f2j_fgc">Understanding AI algorithms</a></li>
</ul>
<p class="p">Related articles</p>
<div class="p">
<ul class="ul" id="topic-1__ul_kpq_tkn_bhc">
<li class="li"><a class="xref" href="https://support.zendesk.com/hc/en-us/articles/9858048119194" target="_blank">Understanding WFM forecasting</a></li>
</ul>
</div>
</div>
<div aria-labelledby="ariaid-title2" class="topic nested1" id="topic_csg_pcj_fgc">
<h2 class="title topictitle2" id="ariaid-title2">Understanding statistical algorithms</h2>
<div class="body">
<p class="p">For both of the <a class="xref" href="#topic_mqp_rnk_fgc">eight-weeks average</a>
and the <a class="xref" href="#topic_cmj_tnk_fgc">eight-weeks average with
momentum</a> algorithms, you'll need to frequently recalculate the forecast to get the
most accurate prediction. </p>
</div>
<div aria-labelledby="ariaid-title3" class="topic nested2" id="topic_mqp_rnk_fgc">
<h3 class="title topictitle3" id="ariaid-title3">Eight-weeks average</h3>
<div class="body">
<p class="p">The eight-weeks average forecasting algorithm is straightforward, reliable, and popular.
Use this algorithm to describe running averages. This algorithm takes the averages from
the past eight weeks (or less, if eight weeks is not available) to generate forecasts for
the next 12 weeks.</p>
<div class="p">
<div class="note note">
<span class="notetitle">Note:</span> A minimum of two weeks of historical data is required. Four weeks will then be
forecasted, and the remaining eight weeks will repeat the forecast.</div>
</div>
<p class="p">This algorithm looks at the previous eight weeks, period by period. The periods are then
averaged to produce a forecasted value.</p>
<p class="p">For example, to forecast the volume for a specific time period, such as Wednesday from
9:00 am to 9:15 am, Zendesk WFM calculates the average volume of the same time periods
from the previous eight Wednesdays to produce the forecasted value.</p>
<p class="p"><strong class="ph b">When to use it:</strong></p>
<ul class="ul" id="topic_mqp_rnk_fgc__ul_nqp_rnk_fgc">
<li class="li">If you have limited historical data</li>
<li class="li">Short term forecasts (up to 12 weeks)</li>
<li class="li">No large upward or downward trends in volume that can be observed over the past
weeks</li>
<li class="li">Simplicity and predictability of results </li>
</ul>
</div>
</div>
<div aria-labelledby="ariaid-title4" class="topic nested2" id="topic_cmj_tnk_fgc">
<h3 class="title topictitle3" id="ariaid-title4">Eight-weeks average with momentum</h3>
<div class="body">
<p class="p">This algorithm is similar to the <a class="xref" href="#topic_mqp_rnk_fgc">eight-weeks average algorithm</a>. It differs from that algorithm by replicating the
general upwards or downwards trends in your volume over the previous eight weeks and
adjusts the forecast to match.</p>
<p class="p">Similar to the eight-weeks average, this algorithm looks at the previous eight weeks and
then averages those periods to produce the forecasted value. After the average value is
defined, Zendesk WFM reviews how the volume is distributed throughout weekdays and hours
of the day. For instance, if data typically shows higher or lower values during this
specific time of day compared to the overall average. Then, based on the defined deviation
from the average, the forecasted value is adjusted.</p>
<p class="p">For instance, use the same Wednesday 9:00 am to 9:15 am period as an example. Using the
eight-weeks average with momentum algorithm, Zendesk WFM calculates the average volume
from the same time period on the previous eight Wednesdays. It then compares this specific
interval to other intervals on Wednesdays. If it typically has 10% lower volume than other
intervals, Zendesk WFM reduces the average volume of the 9:00 am to 9:15 am periods on
Wednesdays by 10% to adjust the forecasted value.</p>
<p class="p"><strong class="ph b">When to use it</strong></p>
<ul class="ul" id="topic_cmj_tnk_fgc__ul_dmj_tnk_fgc">
<li class="li">If you have limited historical data</li>
<li class="li">Short term forecasts (up to 12 weeks)</li>
<li class="li">Have large upward or downward trends in volume that can be observed over the past
eight weeks</li>
</ul>
</div>
</div>
</div>
<div aria-labelledby="ariaid-title5" class="topic nested1" id="topic_c2j_fdj_fgc">
<h2 class="title topictitle2" id="ariaid-title5">Understanding machine learning algorithms</h2>
<div aria-labelledby="ariaid-title6" class="topic nested2" id="topic_jrg_44k_fgc">
<h3 class="title topictitle3" id="ariaid-title6">Prophet daily and historical patterns</h3>
<div class="body">
<p class="p"><a class="xref" href="https://research.facebook.com/blog/2017/2/prophet-forecasting-at-scale/" target="_blank">Prophet</a> is an open source algorithm developed by
Meta. It's built for forecasting time series data based on an additive model where
non-linear trends are fit with yearly, weekly, and daily seasonality.</p>
<p class="p"><strong class="ph b">How it works</strong></p>
<p class="p">It works best with time series that have strong seasonal effects and several seasons of
historical data. Prophet is robust to missing data and shifts in the trend. It typically
handles outliers well. Not all forecasting problems can be solved by the same procedure.
Prophet is optimized for the business forecasting tasks that Meta encounters.</p>
<p class="p">Zendesk WFM uses Prophet to forecast daily values and then uses historical averages for
the last four weeks to distribute forecasted daily values and generate an intraday
forecast.</p>
<p class="p"><strong class="ph b">When to use it:</strong></p>
<ul class="ul" id="topic_jrg_44k_fgc__ul_krg_44k_fgc">
<li class="li">At least a few months and preferably a year of historical data</li>
<li class="li">Strong multiple “human-scale” seasonalities: day of week and time of year</li>
<li class="li">A reasonable number of missing observations or large outliers are detected in your
data</li>
<li class="li">Historical trends that change. For example, due to product launches.</li>
<li class="li">Trends that are non-linear growth curves, where a trend hits a natural limit or
saturates </li>
</ul>
</div>
</div>
<div aria-labelledby="ariaid-title7" class="topic nested2" id="topic_ewv_p4k_fgc">
<h3 class="title topictitle3" id="ariaid-title7">XGBoost</h3>
<div class="body">
<p class="p">eXtreme Gradient Boost (XGBoost) is a gradient boosting algorithm that can be used for
solving different machine learning (ML) issues, such as classification and regression.
It's one of the most used ML algorithms for forecasting. </p>
<p class="p"><strong class="ph b">How it works</strong></p>
<p class="p">A boosting algorithm is an ensemble algorithm of decision trees that increases the
complexity of models that suffer from high bias. That means it's constructed of multiple
learning algorithms to achieve better results. XGBoost is an implementation of Gradient
Boosting algorithm under the open-source software library. It's focused on the computation
speed and model performance. This library has the ability to distribute model training to
generate faster, more accurate results.</p>
<p class="p"><strong class="ph b">When to use it</strong></p>
<ul class="ul" id="topic_ewv_p4k_fgc__ul_lrg_44k_fgc">
<li class="li">At least a few months and preferably a year of historical data</li>
<li class="li">If there is not much data (zero data for most of the historical period)</li>
<li class="li">If the data has a lot of existing outliers, such as special events or unexpected
peaks, because this model is robust and less sensitive to outliers</li>
</ul>
</div>
</div>
<div aria-labelledby="ariaid-title8" class="topic nested2" id="topic_qqt_v4k_fgc">
<h3 class="title topictitle3" id="ariaid-title8">LightGBM</h3>
<div class="body">
<p class="p">Light Gradient-Boosting Machine (LightGBM) is a gradient boosting framework developed by
Microsoft that can be used for solving different machine learning (ML) issues, such as
ranking, classification, and regression. </p>
<p class="p"><strong class="ph b">How it works</strong></p>
<p class="p">LightGBM is a boosting algorithm and works similarly to <a class="xref" href="#topic_ewv_p4k_fgc">XGBoost</a>. These algorithms differ in how they "grow the trees" -
XGBoost uses level-wise (horizontal) growth, while LightGBM uses leaf-wise (vertical)
growth. This difference in certain scenarios makes LightGBM a faster and more accurate
choice compared to XGBoost. However, it depends on a specific use case.</p>
<p class="p"><strong class="ph b">When to use it</strong></p>
<ul class="ul" id="topic_qqt_v4k_fgc__ul_rqt_v4k_fgc">
<li class="li">At least a few months and preferably a year of historical data</li>
<li class="li">If data has complex non-linear patterns</li>
<li class="li">Large-scale data</li>
<li class="li">If performance is more important</li>
</ul>
</div>
</div>
</div>
<div aria-labelledby="ariaid-title9" class="topic nested1" id="topic_hm4_f2j_fgc">
<h2 class="title topictitle2" id="ariaid-title9">Understanding AI algorithms</h2>
<div aria-labelledby="ariaid-title10" class="topic nested2" id="topic_fgt_jpk_fgc">
<h3 class="title topictitle3" id="ariaid-title10">Long Short-Term Memory (LSTM) Neural Network</h3>
<div class="body">
<p class="p">Long Short-Term Memory (LSTM) Neural Network is one of the most advanced models for
forecasting time series. Its ability to learn long-term sequences of observations makes it
a popular approach to modern forecasting.</p>
<p class="p">It's an artificial recurrent neural network (RNN) used in the field of deep learning. A
common LSTM unit is composed of a cell, an input gate, an output gate and a forget gate.
The cell remembers values over arbitrary time intervals and the three gates regulate the
flow of information into and out of the cell.</p>
<p class="p">The LSTM is capable of capturing the patterns of both long term seasonalities, such as a
yearly pattern, and short term seasonalities, such as weekly patterns. It works well with
outstanding events. Such events impact demand on the day when it's happening, as well as
the days before and after the event is happening. The different gates inside LSTM boost
its capability for capturing non-linear relationships for forecasting.</p>
<p class="p">For example, people may book more days of accommodation in order to attend a sports
event. The LSTM has the ability to triage the impact patterns from different categories of
events.</p>
<p class="p">Zendesk WFM has several LSTM models trained on different frequencies of the data:</p>
<ul class="ul" id="topic_fgt_jpk_fgc__ul_r1w_lpk_fgc">
<li class="li">15 min - Raw data that is used for training and, as a result, gets intraday forecasts
immediately.</li>
<li class="li">Hourly - Data aggregated on an hourly level is used for training the model, which then
produces a forecast on an hourly level.</li>
<li class="li">Daily - Data aggregated on daily level is used for training the model. The model then
produces a daily forecast and applies historical patterns to get an intraday
forecast.</li>
</ul>
<p class="p"><strong class="ph b">When to use it:</strong></p>
<ul class="ul" id="topic_fgt_jpk_fgc__ul_s1w_lpk_fgc">
<li class="li">A good amount of historical data, preferably over a year</li>
<li class="li">Medium to high volume workstreams</li>
<li class="li">Working hours that usually don't have periods with no inbound volume</li>
<li class="li">Need to account for strong seasonality patterns as well as some outstanding repeated
events</li>
</ul>
</div>
</div>
</div>
<script id="docs-schema-markup" type="application/ld+json">{
"@context": "https://schema.org",
"@type": "TechArticle",
"@id": "https://support.zendesk.com/hc/en-us/articles/6443365725210-About-WFM-forecast-algorithms",
"url": "https://support.zendesk.com/hc/en-us/articles/6443365725210-About-WFM-forecast-algorithms",
"headline": "About WFM forecast algorithms",
"description": "You can select and customize forecasting algorithms based on historical data patterns to predict future outcomes for workforce management accurately.",
"articleSection": "Scheduling your workforce (WFM add-on)",
"datePublished": "2023-11-30T20:11:57+00:00",
"dateModified": "2026-06-25T09:23:50.403290+00:00",
"inLanguage": "en-US",
"mainEntityOfPage": {
"@type": "WebPage",
"@id": "https://support.zendesk.com/hc/en-us/articles/6443365725210-About-WFM-forecast-algorithms"
},
"author": {
"@type": "Organization",
"name": "Zendesk",
"url": "https://www.zendesk.com"
},
"publisher": {
"@type": "Organization",
"name": "Zendesk"
},
"isPartOf": {
"@type": "WebSite",
"name": "Zendesk Help",
"url": "https://support.zendesk.com/hc/en-us"
},
"about": {
"@type": "SoftwareApplication",
"name": "Zendesk"
}
}</script><script id="ai-summary-script">
//<![CDATA[
const ai_summary_style = document.createElement('style');
ai_summary_style.innerHTML = `#styled-article-body{padding:0 0 0}#article-body #docs-ai-summary{background-color:#f3f3f3;border:1px solid #d3d3d3;padding:10px 10px 6px;margin-bottom:16px}#article-body #docs-ai-summary #docs-ai-summary-toggle{font-size:.9em;font-weight:700;margin-bottom:4px;cursor:pointer;display:flex;justify-content:space-between;align-items:center}#article-body #docs-ai-summary #docs-ai-summary-toggle #up-triangle{margin-left:auto;padding-right:10px;display:none}#article-body #docs-ai-summary #docs-ai-summary-toggle #down-triangle{margin-left:auto;padding-right:10px}#article-body #docs-ai-summary #docs-ai-summary-content{font-size:.9em;padding-left:25px;padding-right:25px;margin-bottom:12px}`;
document.head.appendChild(ai_summary_style);

const toggleAISummary = () => {
const summary = document.getElementById("docs-ai-summary-content");
const upTriangle = document.getElementById("up-triangle");
const downTriangle = document.getElementById("down-triangle");
if (summary.style.display === "none") {
summary.style.display = "block";
upTriangle.style.display = "none";
downTriangle.style.display = "inline";
} else {
summary.style.display = "none";
upTriangle.style.display = "inline";
downTriangle.style.display = "none";
}
};

document.getElementById("docs-ai-summary-toggle").addEventListener("click", toggleAISummary);
//]]>
</script>
</body>