Skip to content
  • There are no suggestions because the search field is empty.

Forecast Calculations

Overview

This article explains how Vividly calculates forecast values across each forecast type — the data it uses, the logic behind projections, and why numbers change when inputs are updated. It is intended for advanced users and power users who want a deeper understanding of what drives the numbers they see.

This article assumes you're familiar with how to navigate the Forecast module. For a foundational overview, see Forecast SOP: A Complete Guide.


The Four Forecast Types

Vividly maintains four interconnected forecast types. Each answers a different business question and draws from a different data source:

  • Retailer Forecast: What consumers buy at retail stores. Powered by Forecast Revenue Sources (SPINS, Nielsen, IRI). Best for promotion planning and retail performance tracking.
  • All-Other Buckets (AOB) Forecast: Estimated sales to smaller, untracked retailers ("mom-and-pop" stores) not captured in your syndicated data. Calculated as the gap between distributor shipments and tracked retailer consumption.
  • Distributor Forecast: What distributors ship to retailers. Powered by Accounting Sources (QuickBooks, NetSuite) for actual weeks, and derived from the retailer and AOB forecasts for future weeks.
  • First Receiver Forecast: Your total outbound shipment volume — everything that leaves your warehouse to distributors and direct customers. Available in the Export only (not visible on screen). Best for production planning and supply chain.

Think of the flow as a chain:

Your warehouse (First Receiver) → Distributor → Retailer shelf → Consumer

Each forecast type corresponds to a different point in that chain. The Retailer forecast works backward from consumer demand; the Distributor and First Receiver forecasts roll that demand forward in time, adjusted for the delay between when a product sells at retail and when it was actually shipped.


Actualized vs. Forecasted Weeks

Captura de pantalla 2026-05-10 a la(s) 2.50.10 p.m.

Every week in the forecast is classified as either actualized or forecasted.

  • Actualized weeks (shown in gray) are weeks for which real revenue data has been uploaded. These cells are locked — the system displays actual values and you cannot edit them.
  • Forecasted weeks (shown in white) are weeks beyond your most recent data upload. These are projections you can edit using manual overrides.

The dividing line is called the Forecast Start — defined as 7 days after the Sunday on or after your most recent revenue upload date.

Important: All customers that share the same Forecast Revenue Source (for example, all retailers using SPINS) share the same Forecast Start date. Their actualization point is driven by the most recent data upload for that source — not per individual customer. This means that if you accidentally omit a retailer from a SPINS export, that retailer's recent weeks will actualize as zero — even though you have data for your other SPINS retailers.


What Data Feeds Each Forecast Type

Before understanding the calculations, it's important to know which revenue data each forecast type draws from:

  • Retailers and All-Other Buckets use data from each customer's designated Forecast Revenue Source (e.g., SPINS, Nielsen, IRI). This is configured per customer in Manage → Customers → Customer Profile. Only revenue entries uploaded under the selected source are considered; all others are ignored.

Captura de pantalla 2026-05-10 a la(s) 2.53.34 p.m.

  • Distributors use data from the Accounting Sources configured in Settings → Deductions & Revenue (e.g., QuickBooks, NetSuite). All distributors in the company share the same Accounting Source(s).

     

  • Direct Retailers (retailers that receive product directly without going through a distributor) can have both data types. Their Forecast Revenue Source data feeds the Retailer forecast; their Accounting Source data feeds the First Receiver forecast.


Retailer Forecast: The Core Calculation

The Retailer forecast is the foundation of Vividly's projection engine. All other forecast types depend on it.

The Formula

For any forecasted week, units for a given customer and product are calculated as:

Units = (Velocity × Stores × (1 + Lift) × Seasonality) + Added Units

Revenue for all weeks (actualized and forecasted) is then:

Revenue = Units × Price (from Pricing Time Frames)

Each component of the units formula is explained below.

Velocity

Velocity is your baseline selling rate — average units sold per store per week, stripped of promotional effects and seasonal variation. It is your best measure of how a product sells under normal conditions.

For forecasted weeks, velocity is set to the average velocity of the most recent X actualized weeks, where X is the lookback period configured in Settings → Forecast (options: 4, 8, 12, 16, 26, or 52 weeks).

That averaged value is applied to the first forecasted week and carried forward into all future weeks — until a manual override exists, at which point the new value is carried forward from that week onward.

For example: if your lookback is 8 weeks and the average velocity over those weeks is 8.5, your forecast will show 8.5 velocity for all future weeks — until you apply a manual override. 

Stores

Stores is the number of stores actively selling the product in a given week. For forecasted weeks, stores is the average of the most recent X actualized weeks (using the same lookback period as velocity).

Manual store count overrides follow the same carry-forward logic as velocity. Use manual overrides when distribution changes — such as gaining a new retail account or losing shelf space — so that future projections reflect the correct store count.

Tip: Toggle on "Show empty rows" when adding distribution for a new item, so you can see and update store counts for products that have no current volume.

Promotional Lift

Lift is the expected percent increase in sales during a promotion. For each customer/product/week combination, Vividly assigns a lift value based on any applicable promotion lines running during that week.

Which promotion lines count: Only lines whose fund type is set to "Include in Forecast" in Settings → Forecast are considered. Fund types not marked for inclusion are ignored entirely — even if a promotion is running.

How lift is assigned: For a given week, Vividly looks at all applicable promotion lines for that customer and product. The maximum lift value across all qualifying lines is used for that week.

Which dates drive lift: Performance dates (in-store dates when they exist; otherwise the overall promotion start/end dates) determine which weeks a promotion's lift is applied to.

The Promotion row indicator in the Forecast table is controlled by the fund type's Forecast Date Range setting (buy-in, in-store, or scan-back) — which may show a different set of weeks than where lift is actually applied. It shows None when there's no promotion associated to the Forecast, but it shows a hyperlinked View, which you can click on to open the Promotion profile of the associated promotion. 

 

Completed promotions: If your account uses actual lifts for completed promotions, Vividly will use the recorded actual lift instead of expected lift for any promotion marked as Completed — as long as the actual lift field is not blank. An actual lift of 0 is treated as a real value, not blank.

Important: Because the forecast is a snapshot, promotion lift values reflect the promotions as of the last time you clicked "Generate Forecast." Creating or updating a promotion will not affect the forecast until you regenerate.

Seasonality

Seasonality is a multiplier — typically close to 1.0 — that adjusts for predictable highs and lows in sales throughout the year. You configure seasonality indexes in Settings → Forecast → Seasonality Indexes.

  • A value of 1.0 = no seasonal adjustment.
  • A value of 1.2 = 20% above baseline for that period.
  • A value of 0.8 = 20% below baseline for that period.

Each seasonality bucket is assigned to a specific combination of customers and products. A given customer/product pair can only belong to one seasonality bucket.

Added Units

Added Units is a manually entered volume adjustment added on top of the core formula. It does not affect velocity, stores, or any other calculated metric. Use Added Units for:

  • One-time pipeline fills when a new retailer activates
  • Pre-buys or irregular order timing that would skew baseline velocity if included
  • Known one-time volume events that aren't part of your recurring run rate

Revenue Calculation

Revenue for all weeks (actualized and forecasted) is calculated as:

Revenue = Units × Price

The price is pulled from the Pricing Time Frame configured for the given customer and product group. If a product belongs to more than one product group with pricing enabled, the highest price among those groups is used.

Note: The forecast always recalculates revenue from units × price. The raw dollar revenue amounts in your uploaded data are not used in the Retailer forecast calculation — only units are. This means that if you update pricing after generating a forecast, the forecasted revenue will not change until you regenerate. However, Budget always uses the most current pricing, which is why Forecast and Budget revenue can differ.


All-Other Buckets (AOB): How It's Calculated

All-Other Buckets capture the estimated sales volume going to smaller retailers not tracked in your syndicated data — the gap between what your distributor ships and what you can account for through your tracked retail customers.

For actualized weeks, the AOB is calculated as the difference between distributor actual shipments and the sum of tracked retailer sales (each retailer shifted backward by its Weeks to Retail and multiplied by its Distributor Split). When this number is positive, it represents volume going to untracked stores. When it goes negative, it usually means shipments haven't caught up with consumption yet — a common scenario when orders are delayed.

For forecasted weeks, the system averages the most recent actualized AOB base units using the lookback period configured in Settings. Seasonality and Added Units can be applied:

Units = (Base Units × Seasonality) + Added Units

 

Tip: Review your All-Other Buckets every time you generate a new forecast — large swings often originate here. Apply manual overrides to set unrealistic values to zero rather than letting them carry forward and distort your distributor projections.


Distributor Forecast: How It's Calculated

For actualized weeks, the distributor forecast directly reflects the accounting source revenue uploaded for that distributor in Business → Revenue. There is no calculation — it mirrors what was uploaded.

For forecasted weeks, the calculation rolls up the retailer and AOB forecasts into the distributor's frame of reference:

Distributor Units = Σ (Retailer Units × Distributor Split, shifted by Weeks to Retail) + AOB Units

 

In plain language: Vividly takes the retailer forecast for each customer assigned to that distributor, shifts it backward in time by that customer's Weeks to Retail value, multiplies it by the customer's Distributor Split percentage, and sums across all customers. The All-Other Bucket units are then added on top.

Distributor Revenue is calculated as a direct sum of the retailer forecast revenue (shifted and split-adjusted). Unlike the Retailer forecast, it does not recalculate from units × distributor pricing — this avoids discrepancies caused by retailers and distributors having different prices for the same product.

Weeks to Retail

Weeks to Retail is the estimated number of weeks it takes for product to travel from a distributor's warehouse to a retailer's shelf. It is configured per retailer in Manage → Customers.

  • A Weeks to Retail of 2 for Kroger means that if Kroger sells 50 units in Week 10, those units are attributed to the distributor in Week 8 — because the product was shipped two weeks before it was sold.
  • All retailer consumption data is "shifted" into the distributor's frame of reference using this value when building the distributor and first receiver forecasts.

Note: Typical ranges are 1–4 weeks. Confirm with your CSM if you're unsure what values to use.

Distributor Splits

Distributor Splits define the percentage of a retailer's volume allocated to each of its distributors. They are configured in the Customer Profile in Manage → Customers.

  • If a retailer has multiple distributors (e.g., 60% UNFI / 40% KeHE), each distributor's forecast includes only its share of that retailer's volume.
  • If splits are not configured for a retailer with multiple distributors, Vividly defaults to an even split across all assigned distributors.
  • If a retailer has no distributor assigned at all, it is excluded from distributor and AOB calculations.

First Receiver Forecast: What It Is and How to Access It

The First Receiver forecast represents your total outbound volume — everything you ship to distributors plus everything you ship directly to direct retail customers.

The First Receiver forecast is not shown in the Forecast module. It is only available via the Export (Insights → Forecast → Export → Excel), which produces a file with four tabs: Retailer, All-Other Buckets, Distributor, and First Receiver.

  • For actualized weeks, it reflects the accounting source revenue uploaded for all customers — distributors and direct retailers combined.
  • For forecasted weeks, it combines the distributor forecast with the retailer forecasts for direct customers, each adjusted for their Weeks to Retail and Distributor Splits.

Cases

If you switch the unit of measure to Cases, values are computed as:

Cases = Units ÷ Units per Case

 

Units per Case is configured per product. This conversion is applied dynamically on display — it is not stored in the forecast itself. This means Cases values can change if the Units per Case configuration is updated, even without generating a new forecast version.


What Triggers a Forecast Recalculation

The forecast does not update automatically. You must click "Generate Forecast" after any of the following:

  • Uploading new revenue or POS data
  • Creating or updating promotions (including lift changes)
  • Changing product pricing
  • Updating customer settings — revenue sources, Weeks to Retail, or distributor splits
  • Modifying Seasonality Indexes in Settings

Each click of Generate Forecast creates a new version — a locked snapshot of your data at that moment. Previous versions remain accessible for comparison.

Warning: Generating a new forecast while other users are actively working in the Forecast module will force those users into the prior version, and their changes will not be reflected in the new version. Designate a single admin responsible for generating forecasts, and communicate before doing so.


Why Forecast and Budget Can Differ

It is expected and normal for Forecast revenue and Budget revenue to differ. Here's why:

  • The Forecast uses a pricing snapshot. When you generate a forecast, pricing is locked in at that moment. Budget always uses the most current pricing data. If pricing is updated after a forecast is generated, Budget reflects the new price immediately — but the Forecast won't until you regenerate.
  • The Forecast is a version. Budgeting references live data. Any change to promotions, revenue, or settings will update Budget in real time but will only update the Forecast after a new version is generated.

Fix: Click Generate Forecast and then compare against Budget again. If they still differ, check whether promotions, pricing, or customer settings have been updated since the last generation.


Common Pitfalls for Power Users

  • Uploading partial weeks. Vividly weeks end on Sunday. If you upload ERP data through a Monday, Tuesday, or mid-week date, the system treats that partial week as fully actualized — which will under-report that week's volume. Always upload complete weeks (through Saturday) to avoid this. Note: Nielsen data ends on Saturday, not Sunday.
  • Omitting a retailer from a data upload. Because all retailers sharing the same Forecast Revenue Source share a Forecast Start date, accidentally excluding one retailer from an upload causes its latest weeks to actualize as zero — dragging down your forecast for that customer.
  • Not regenerating after changes. The forecast is a snapshot. Changes to promotions, pricing, or customer settings won't appear until you click "Generate Forecast."
  • All-Other Buckets going negative. If distributor shipments are less than tracked retailer consumption, AOB units can go negative. Review and apply manual overrides of 0 to correct unrealistic values and prevent them from distorting your distributor projections.
  • New products with no velocity history. New items have no historical velocity to average. Set manual overrides for velocity, store count, and Added Units (for pipeline fills) to prevent severe underforecasting in the first several weeks of distribution.
  • Year-end carryover of manual overrides. Manual overrides do not automatically carry over when the calendar year rolls over. Review and re-enter any overrides needed for the new year, especially for shipment-based retailer forecasts.