Promotion Cannibalization and Halo Effects: How to Model Them in Demand Planning
Promoting one SKU distorts demand for its neighbours. Why cannibalization and halo effects corrupt your baseline forecast -and how to model them, not just report.

TrueGradient Editorial Team

Put one SKU on promotion and three things happen at once. The promoted SKU sells more -that part everyone plans for. But its close substitutes sell less, as shoppers switch to the deal. And its complements sell more, pulled along by the promoted item. The first effect is called cannibalization; the second is the halo effect; together they're the promotional cross-item effects, and most demand plans handle them badly or not at all.
Here's the part that matters, and that most treatments skip: these effects aren't just a reporting nuisance -they corrupt your forecast. If your model doesn't explicitly separate the promotional cannibalization dip and the halo spike from normal demand, it does something quietly destructive: it absorbs them into the baseline of the neighbouring products. The dip gets learned as "this substitute is trending down"; the spike as "this complement is trending up." Both are false, and both persist into every future forecast -including the weeks with no promotion at all.
This guide is about modelling cannibalization and halo effects properly: what they are, why unmodelled they wreck your baseline, and how to separate them so the rest of your plan stays clean.
(A note on scope: this piece is about promotional cannibalization and halo -the effect of putting a SKU on deal. The related question of what happens to demand when you add or remove a SKU from the assortment is demand transference, which we cover separately in leveraging demand transference and the halo effect.)
What is promotion cannibalization?
Cannibalization is the drop in sales of a non-promoted product caused by the promotion of a related one. When you discount one brand of coffee, its close substitutes on the same shelf sell less -the promotion didn't create entirely new demand; it pulled demand from neighbours. The sales didn't vanish; they moved.
Cannibalization is strongest between close substitutes -same category, same need, similar price tier -because those are the products a shopper trades between. A promotion on your premium SKU cannibalizes your mid-tier SKU far more than it touches an unrelated category. Left unmodelled, it produces a specific, damaging error: the demand plan for the cannibalized SKU reads its promo-week dip as a genuine downturn and under-forecasts it going forward, so you under-buy a product that was actually selling fine outside the promotion.
What is the halo effect in demand planning?
The halo effect is the opposite: the lift in sales of a non-promoted product caused by the promotion of a related one. Promote the flagship grill and the sales of charcoal, tools, and covers rise alongside it -complements pulled along by the promoted item's traffic. In demand-planning terms (distinct from the marketing sense of "halo," which usually means cross-channel media spillover), the halo is a cross-item complementary lift within the assortment.
Unmodelled, the halo causes the mirror-image error: the complement's promo-week spike gets read as organic growth, the plan over-forecasts it afterward, and you over-buy a product whose lift was really borrowed from someone else's promotion.
Cannibalization and halo are two sides of the same coin -one subtracts from substitutes, the other adds to complements -and both are triggered by a promotion on a different SKU than the one whose forecast they distort.
Why unmodelled cannibalization and halo corrupt your baseline
This is the core argument, and it's where most demand plans go wrong without anyone noticing.

A demand forecast is built on a baseline -the underlying, de-promoted level of demand for each SKU - plus adjustments for known effects (promotions, seasonality, events). The baseline is sacred: it's what every future forecast, safety-stock calculation, and replenishment decision is built on. Anything that contaminates the baseline propagates everywhere.
Now consider what happens when SKU A is promoted, and your model doesn't know that SKU B is A's substitute. During the promo week, B's sales dip. The model sees a dip with no assigned cause -no promotion on B, no seasonality -so it does the only thing it can: it attributes the dip to B's own baseline, nudging B's underlying demand level down. The promotion ends, A goes back to normal, B recovers -but the model has already learned that B trends lower, and it carries that error forward. As one industry treatment puts it, a model that can't attribute the cross-item effect will misinterpret the biasing cannibalization and halo as part of baseline demand rather than as promotion-related.
The damage compounds because promotions are frequent. In a catalogue where something is always on deal, every SKU is constantly being cannibalized or halo-lifted by some neighbour's promotion - so a model blind to cross-item effects is continuously feeding contaminated signal into every baseline. The result is a forecast that's subtly wrong everywhere, in a way that's almost impossible to diagnose from the outside because no single number looks obviously broken.
So the reason to model cannibalization and halo is not to produce a nice promo report. It's to keep the promotional signal out of the baseline -to make sure the dip belongs to the promotion, not to the victim, and the spike to the promotion, not the beneficiary. Get that right, and every downstream forecast improves, including the ones nowhere near a promotion.
How to model cannibalization and halo effects
There's a clear progression in how planners handle this, from crude to genuinely predictive.
Level 0 -ignore it. Forecast each SKU independently, as if products don't interact. Simple, and wrong in exactly the baseline-contaminating way above. The independent-demand assumption is known to break down precisely because product demands interact through substitution and halo effects.
Level 1 -flag and exclude. Identify promo weeks and remove or flatten them before computing the baseline, so the dip and spike don't pollute it. This is a real improvement and a common practitioner fix -but it's blunt: it throws away data, and in a frequently promoting catalogue there may be little clean data left, which is why flattening promotions is often preferred to dropping those weeks entirely.
Level 2 -cross-item regression. Explicitly model each SKU's demand as a function of its own price and promotion and the prices and promotions of related SKUs. This is the classic approach -the SCAN*PRO promotional demand model and its descendants estimate cross-item elasticities so the model knows that A's promotion depresses B and lifts C by measurable amounts. It works, but traditionally requires defining the cross-item relationships and solving a large system of parameters.
Level 3 -choice-based and machine-learning models. Discrete-choice models (multinomial logit and its relatives) model the shopper's actual substitution behaviour -given a set of options, which do they pick -so cannibalization and halo fall out of the choice structure rather than being bolted on. Modern machine-learning demand models generalise this: they learn the cross-item relationships from transaction data directly, across thousands of SKU pairs, without a human pre-specifying every substitute and complement.
The jump from Level 2 to Level 3 is where AI earns its place, and it's worth being specific about why.
Where AI changes cannibalization and halo modelling
The historical barrier to modelling cross-item effects properly was combinatorial: with thousands of SKUs, the number of possible substitute/complement relationships is enormous, and defining them by hand -or estimating a full cross-elasticity matrix -was impractical. That constraint is what AI removes.
It learns the relationships instead of being told them. A machine-learning demand model can infer which SKUs are substitutes and which are complements from the data -which products' sales move together, which move oppositely during a promotion -without a planner mapping every pair. The cross-item structure is discovered, not hand-built. This is the same driver-attribution machinery that decomposes any demand signal into its causes, applied across SKUs rather than within one.
It attributes the effect, protecting the baseline automatically. When the model correctly assigns B's dip to A's promotion, B's baseline stays clean -the contamination described above simply doesn't happen. Getting promotions and events out of the baseline is the same discipline as capturing events and seasonality properly, extended to cross-item effects.
It handles the frequency problem. Because the model attributes rather than excludes, it doesn't need clean non-promo weeks to learn from -it can use the promo weeks too, extracting the cross-item signal instead of throwing the data away. In a catalogue that's always promoting something, that's the difference between having enough data and not.
It plans the promotion, not just the promoted SKU. Once cannibalization and halo are modelled, promotion optimization and trade promotion optimization can evaluate a promotion's net effect -the promoted SKU's lift minus what it steals from substitutes plus what it lends to complements -rather than the gross lift that makes every promotion look better than it is. That net view is the difference between a promotion that grows the category and one that just reshuffles it. The supply-side coordination this requires is covered in the promotion puzzle.
The through-line: AI doesn't just report cannibalization and halo after the fact -it models them into the forecast, so the promoted SKU, its victims, and its beneficiaries are all planned correctly, and the baseline stays uncontaminated.
What this means for inventory and promotions
Getting cross-item effects right changes real decisions, not just forecast metrics.
You stop under-buying cannibalized SKUs. When the plan knows a substitute's dip was promo-driven, it doesn't cut its replenishment -so the substitute is in stock when the promotion ends and demand returns.
You stop over-buying halo SKUs. When the plan knows a complement's spike was borrowed, it doesn't extrapolate it -so you're not left with excess after the promotion.
You buy correctly for the promoted SKU's neighbours during the promo. Cannibalization means less of the substitute is needed that week; halo means more of the complement is. Modelling both lets inventory optimization position stock for the whole affected set, not just the promoted item -the probabilistic version sizes each SKU's buffer to its own promo-week distribution.
You evaluate promotions honestly. A promotion that lifts its SKU 40% but cannibalizes 30% from substitutes is a very different investment from one that lifts 40% with genuine category expansion. Only a cross-item model can tell them apart, which is what makes pricing and promotion decisions trustworthy.
Cannibalization and halo effect FAQs
What is the difference between cannibalization and the halo effect? Cannibalization is the decrease in a non-promoted product's sales caused by promoting a related substitute -shoppers switch to the deal, so the substitute loses volume. The halo effect is the increase in a non-promoted product's sales caused by promoting a related complement -the promoted item pulls its complements along. Both are cross-item effects triggered by a promotion on a different SKU; cannibalization subtracts from substitutes, halo adds to complements.
Why do cannibalization and halo effects matter in demand planning? Because if they aren't modelled explicitly, the forecast misattributes them to the neighbouring products' baselines. A cannibalized substitute's promo-week dip gets learned as a genuine downward trend, causing chronic under-forecasting; a halo-lifted complement's spike gets learned as organic growth, causing over-forecasting. Since promotions are frequent, this contamination is continuous and corrupts baselines across the whole catalogue -making the forecast subtly wrong even in non-promotional weeks.
How do you model cannibalization in a demand forecast? Approaches range from excluding or flattening promo weeks so they don't pollute the baseline (crude but common), to cross-item regression models like SCAN*PRO that estimate how one SKU's promotion affects related SKUs, to choice-based and machine-learning models that learn substitution and complementarity directly from transaction data. The modern approach lets the model infer which SKUs are substitutes and complements automatically, rather than requiring a planner to define every relationship by hand.
What is baseline contamination? Baseline contamination is when promotional cross-item effects get absorbed into a product's underlying demand level instead of being attributed to the promotion that caused them. When a model can't explain why a substitute's sales dipped during a neighbour's promotion, it adjusts that product's baseline downward -and carries the error forward into every future forecast. Correctly attributing the dip to the promotion keeps the baseline clean, which is the main reason to model cannibalization and halo at all.
How does AI improve cannibalization and halo modelling? AI removes the combinatorial barrier that made cross-item modelling impractical at scale. Instead of a planner defining every substitute/complement pair or estimating a full cross-elasticity matrix, a machine-learning model infers the relationships from data -which SKUs move together, which move oppositely during promotions. It attributes the effects correctly (protecting baselines), uses promotional weeks as signal rather than discarding them, and enables net-effect promotion evaluation across the affected set of products.
Is the halo effect in demand planning the same as in marketing? No, and the overlap in terminology is confusing. In demand planning, the halo effect is a cross-item lift -promoting one SKU raises demand for its complements within the assortment. In marketing, "halo effect" usually means cross-channel media spillover -a campaign on one channel lifting sales on another. This article is about the demand-planning sense: complementary product lift from a promotion, modelled into the forecast.
How do cannibalization and halo effects differ from demand transference? They're closely related but triggered differently. Cannibalization and halo here are promotional -caused by putting a SKU on deal. Demand transference is an assortment effect -caused by adding or removing a SKU from the range, which redistributes its demand to substitutes. The modelling overlaps (both quantify how products steal or lend demand to each other), but the trigger and the decision differ: one informs promotion planning, the other informs assortment optimization.
Where TrueGradient fits
TrueGradient models promotional cross-item effects as part of the forecast, not as an afterthought. AI demand forecasting learns which SKUs are substitutes and complements directly from transaction data and attributes each promotion's cannibalization and halo to the promotion itself -so the neighbouring products' baselines stay clean and every downstream forecast improves, including in non-promotional weeks. That flows into promotion optimization, trade promotion optimization, and inventory optimization on one substrate, so a promotion is planned for its whole affected set of products and evaluated on its net rather than gross effect.
Typical time to first measurable outcome is 8–12 weeks -see what the first 90 days look like.
Related reading: Leveraging demand transference and the halo effect for retail success · The promotion puzzle: aligning supply with marketing · Decoding price elasticity · Factor contribution in demand forecasting · Optimising marketing spends and promotions

TrueGradient Editorial Team
The TrueGradient Editorial Team creates expert, research-backed content on AI-powered supply chain planning, including demand forecasting, demand planning, inventory optimization, production planning, S&OP, and IBP. Our articles are developed with insights from supply chain practitioners, AI specialists, and product experts, and are reviewed for technical accuracy, industry relevance, and practical value. By combining real-world experience with the latest advancements in AI and machine learning, we help consumer brands, retailers, distributors, and manufacturers make smarter, data-driven planning decisions.
Add TrueGradient as a Preferred Source on Google
Helps your Top Stories and AI results prioritize TrueGradient.
