Skip to content

How to Account for Promotions in Demand Forecasts

Jannik SemmelhaackCEO & Founder, VOIDS

Promotion adjustments protect your baseline forecast: Definition

Account for promotions in demand forecasts as documented, time-bound adjustments that sit alongside baseline demand. I keep the normal forecast visible, define the campaign conditions before changing demand, approve the adjustment before launch, and close or revise it after the campaign. That prevents promotional sales from being silently treated as ordinary future demand.

Promotions can materially influence demand. If they are absent from the planning record, sales history becomes more variable and unexpected spikes can make the forecast harder to interpret. Promotional activity can increase sales-history variability when it is not accounted for. The practical response is simple: preserve the baseline and add a separately identifiable campaign layer.

For optional broader context, see this retail demand forecasting guide; in the promotion record, document the campaign window and planning inputs.

Before step 1, I require:

  • a baseline forecast for the relevant planning period;
  • a promotion calendar and the campaign start and end date;
  • the affected SKU list, including variants where relevant;
  • the planned offer, channel, and placement;
  • an available-stock view; and
  • one named forecast owner and one named approver.

For example, a store plans a limited-time offer on a small SKU set. Before anyone edits demand, the team records the exact SKUs, the campaign window, and the offer. If the SKU scope is still vague, the promotion is not ready for a forecast adjustment. That is a hard stop, not an administrative preference.

Step 1-2: Workflow for building the record and testing the adjustment

A promotion record should contain the affected SKUs, start and end dates, offer, channel or placement, baseline forecast, proposed adjustment, stock status, owner, approver, and review date. This record turns a campaign assumption into a reviewable operational object before it changes demand, purchasing, or replenishment decisions.

Step 1 is to create one record per campaign assumption. A campaign can involve several SKUs, but it should not be hidden across chat messages, calendar entries, and spreadsheet comments. Demand forecasting combines information and judgment to support supply-chain decisions, which is why the campaign input needs a clear owner and a defined planning purpose. Demand forecasting is used to inform supply-chain planning decisions.

Use this compact template:

  • Campaign: internal name and planned channel.
  • Scope: SKUs and variants included or explicitly excluded.
  • Timing: start date, end date, and any early-access period.
  • Offer: the commercial mechanic in plain language.
  • Forecast: baseline demand plus the proposed time-bound adjustment.
  • Constraints: available stock and known execution limits.
  • Governance: forecast owner, approver, and review date.

Step 2 is the sufficiency test. Ask whether a person who was not in the campaign meeting could identify what will run, for which SKUs, when, and what has changed in the forecast. A request that says “launch a discount next week” fails this test if it has no SKU list or end date. Keep the baseline unchanged and return the request for completion.

Verify the step by opening the record and checking that every forecasted SKU has a campaign window, a baseline value, and a stated stock status. Missing fields mean the adjustment remains proposed, not published. I have seen teams spend too much time debating an uplift while the basic campaign scope was still undefined. The scope comes first.

Step 3: Approve one version before the campaign goes live

I run the approval handoff with one accountable forecast owner and one named business approver. Before launch, I require the campaign record to show the baseline demand, proposed adjustment, campaign dates, and review date so every operating team works from the same stated assumption.

The forecast owner prepares the promotion record, checks that it is complete, and explains the proposed adjustment. The business approver accepts or rejects it. I keep those responsibilities distinct so the preparation and approval decisions are clear.

For a planned email and site placement, I have the forecast owner submit the campaign record and the commercial owner confirm the listed SKUs, dates, and offer. After approval, purchasing and inventory teams receive that same version rather than separate messages. If the offer changes, I create a revision and require a new approval point; I do not overwrite the prior assumption without a trace.

Before I publish an adjustment, I check four visible fields: approval status, approver name, approval date, and version identifier. I then publish it only for the stated campaign window. The practical check is simple: the forecast owner must be able to identify which version the team is executing today.

For recurring campaigns, use VOIDS Setup to structure the next setup review around the forecast owner, business approver, and published version for the campaign.

Step 4-5: Examples of verifying the campaign and closing the adjustment

Execution checks compare the live promotion with the approved record, then the review closes the time-bound adjustment after the campaign. Check SKU scope, dates, offer, and stock status before and during the campaign. Afterwards, compare observed sales with the baseline and approved adjustment, record material differences, and prevent campaign demand from flowing into future normal demand.

Step 4 starts at launch. Take the approved record and verify that the listed SKUs are actually included, the live offer matches the approved offer, and the campaign is running within the stated dates. Check stock status as well. A campaign may run as planned while an affected SKU is unavailable, which makes the observed sales an incomplete view of the planned demand.

Consider a campaign covering three variants. The team finds at launch that one variant was not included in the site placement. Record that execution difference immediately. Do not describe the result later as a clean test of the original adjustment. The campaign that ran was narrower than the campaign that was approved.

Step 5 is the closeout. After the end date, compare observed sales with both components of the forecast: baseline demand and the approved adjustment. Note whether the offer, SKU scope, timing, or stock constraints differed from the record. Then remove the campaign adjustment from future periods unless a newly approved campaign requires another one.

Verify closeout by confirming three things: the adjustment has an end date in the past, the review outcome is written down, and future baseline demand has not inherited campaign sales without an explicit decision. If a promotion ran out of stock, retain that constraint in the review. Sales during unavailable periods should not be treated as a clean measure of the planned campaign response.

Risks and limits: common mistakes that distort promotion forecasts

Promotion forecasts remain assumptions, not proof of future sales, availability, or margin. The main risks are missing campaign details, changed execution, unavailable stock, and unexplained differences between forecast and sales. Keeping the baseline and adjustment visible makes those issues reviewable; it does not remove uncertainty from promotional demand.

The first mistake is replacing the baseline with one combined number. That may look tidy during the campaign, but it removes the distinction needed to understand what normal demand was expected to do. Keep two fields or two clearly labelled components.

The second mistake is approving an adjustment before the commercial setup is settled. A changed offer, date, channel, or SKU list means the actual campaign differs from the planning assumption. Treat the change as a revision, even when it feels small.

The third mistake is reading an out-of-stock result as ordinary demand. If stock constrained sales, the review needs to say so. Do not invent a lost-sales number, and do not promote the observed sales figure into a new baseline by default.

The fourth mistake is leaving an adjustment active after its campaign window. This contaminates later periods with a campaign assumption that no longer applies. Close it on the review date, retain the record, and use the documented outcome to challenge the next proposal.

I would also avoid false precision. A proposed adjustment can support a planning decision while still being revised after execution. Keep the campaign record and use its documented outcome to review the next proposed adjustment.

Promotion forecasting FAQ

Promotion forecasting works when the team treats each campaign as a visible, time-bound adjustment rather than normal baseline demand. The FAQ below answers the operational questions that determine whether an adjustment can be created, approved, checked, and closed without losing the history of what was planned.

Should a promotion replace the baseline forecast?

No. Keep the baseline forecast visible and add the promotion as a separate, time-bound adjustment. This preserves the distinction between expected normal demand and the campaign assumption.

What should I include in a promotion record for forecasting?

Include affected SKUs, campaign dates, offer, channel or placement, baseline forecast, proposed adjustment, stock status, owner, approver, and review date.

Who should approve a promotion forecast before the campaign starts?

One accountable forecast owner should prepare the record, and one named business approver should accept or reject the proposed adjustment before launch.

How should I treat a promotion that ran out of stock in my forecast?

Document the stock constraint in the review. Do not treat sales during unavailable periods as a clean result of the planned campaign, and do not automatically fold them into future baseline demand.

When should I remove a promotion adjustment from the forecast?

Remove or close the adjustment after the campaign end date and review. Keep the record for learning, but do not leave a completed campaign adjustment embedded in future normal demand.

“HYROX is scaling merchandising to 9 figures with VOIDS: online and offline, across Europe, the US, and the rest of the world. 2,000 SKUs, specialized event demand forecasting, transfer logic, and global reorder quantities for Puma and other suppliers.”

Jochen MollerCCO, HYROX

Read customer story
HYROX customer story
HYROXVOIDS customer