Why Most Consumer Packaged Goods (CPG) Promotions Destroy Value — And the Three Metrics That Prove It
One in five trade promotions has negative turnover. The reason your team doesn't see it: volume is not incrementality. Three metrics separate value-creating events from value-destroying ones.
Bulent Kotan8 min read
Rich rendering temporarily unavailable — showing raw markdown.
*Volume is what Sales celebrates at the sell-in meeting. Incrementality is what the Profit and Loss (P&L) actually counts. Very few Consumer Packaged Goods (CPG) commercial teams have built the gap between the two into their operating cadence.*
---
## The sell-in deck that hides the hole
Every major Fast-Moving Consumer Goods (FMCG) or CPG company runs the same ritual in the first two weeks of January. The Key Account Managers line up in front of the Commercial Director to walk through the previous year's promotional performance and pitch the next year's plan. Slide four — always slide four — shows a tidy bar chart of promotional uplift: +85% here, +120% there, +160% on the BOGO in July. Slide six shows the trade spend that delivered those uplifts. Slide eight converts the two into a gross ROI figure. Everyone nods. The plan is approved. Next customer.
The problem is that every one of those numbers is describing a different commercial reality than the team thinks it is.
Promotional volume is not promotional incrementality. A +120% uplift during a two-week Temporary Price Reduction (TPR) typically contains between 30% and 55% actual incremental volume — the rest is subsidised baseline, pantry loading, and forward buying that shifts demand from the weeks before and after the event.¹ The trade spend is real. The uplift is real. The incrementality is the small difference between two large numbers, and in roughly one event in five it is zero or negative.
This article is about the three metrics that make the hidden hole visible, the industry scorecard that documents how big the hole typically is, and the capability rebuild that separates the CPG companies outgrowing their categories from the ones that will spend the next five years explaining shrinking trade ROI to increasingly restive Boards.
## Why this matters in 2026
Two forces are converging to make promotional discipline the highest-return RGM capability a CPG company can build in 2026.
First, the headroom for price moves has closed. Nestlé cut US prices in the first quarter of 2025 for the first time in nearly four years.² Unilever flagged that volume must return to the growth mix.³ The 2022–2024 playbook — serial list-price lifts, passive retailers, grateful capital markets — is exhausted. With the price lever constrained, the pressure falls on the remaining levers. Trade promotion is the largest of them by spend — typically 15–25% of gross sales value in European FMCG — and the one with the most documented waste.
Second, the retailer negotiating posture has hardened. The Carrefour–PepsiCo delisting of January 2024 — which pulled Doritos, Lay's, 7 Up, Lipton, and Cheetos off Carrefour shelves across France, Italy, Spain, Belgium, and Poland — was a signal that Category Captains are no longer willing to absorb CPG trade-terms demands without pushing back on whether the events themselves create value.⁴ A retailer sitting across the table asking "which of the events you ran last year actually grew our basket?" is a retailer for whom the standard sell-in deck is no longer a viable answer.
Both forces point to the same capability: the CPG needs to know, SKU by SKU, event by event, whether its promotions created value or destroyed it. Until that capability exists, the trade-spend envelope is funding activities the commercial team cannot distinguish from each other.
<figure style="margin: 28px 0;">
<svg viewBox="0 0 760 320" xmlns="http://www.w3.org/2000/svg" style="width:100%;height:auto;font-family:Inter,system-ui,sans-serif;">
<style>
.bg{fill:#f8fafc}.heading{fill:#0f172a;font-size:14px;font-weight:600}.axis{fill:#64748b;font-size:11px}.lbl{fill:#0f172a;font-size:11px;font-weight:600}.val{fill:#fff;font-size:12px;font-weight:700}.val2{fill:#0f172a;font-size:11px;font-weight:700}
@media (prefers-color-scheme:dark){.bg{fill:#0f172a}.heading{fill:#f1f5f9}.axis{fill:#94a3b8}.lbl{fill:#f1f5f9}.val2{fill:#f1f5f9}}
</style>
<rect class="bg" width="760" height="320" rx="10"/>
<text x="30" y="28" class="heading">What is inside a "+2.0× uplift" promotional event</text>
<text x="30" y="46" class="axis">Indexed to baseline week = 100. Only the green block is genuinely new volume.</text>
<!-- Scale: 0 to 200 units, over y = 80 to 260 (180px) -->
<!-- Layout: two columns. LEFT = baseline week (single bar), RIGHT = promo week (stacked bar) -->
<!-- Y axis: -->
<line x1="80" y1="260" x2="720" y2="260" stroke="#64748b"/>
<line x1="80" y1="260" x2="80" y2="80" stroke="#64748b"/>
<line x1="80" y1="80" x2="720" y2="80" stroke="#e2e8f0" stroke-dasharray="2,3"/>
<line x1="80" y1="125" x2="720" y2="125" stroke="#e2e8f0" stroke-dasharray="2,3"/>
<line x1="80" y1="170" x2="720" y2="170" stroke="#e2e8f0" stroke-dasharray="2,3"/>
<line x1="80" y1="215" x2="720" y2="215" stroke="#e2e8f0" stroke-dasharray="2,3"/>
<text x="72" y="84" class="axis" text-anchor="end">200</text>
<text x="72" y="129" class="axis" text-anchor="end">150</text>
<text x="72" y="174" class="axis" text-anchor="end">100</text>
<text x="72" y="219" class="axis" text-anchor="end">50</text>
<text x="72" y="263" class="axis" text-anchor="end">0</text>
<!-- Bar 1: Baseline week (100 units gray) -->
<rect x="170" y="170" width="140" height="90" fill="#94A3B8"/>
<text x="240" y="220" class="val" text-anchor="middle">100</text>
<text x="240" y="280" class="lbl" text-anchor="middle">Baseline week</text>
<text x="240" y="295" class="axis" text-anchor="middle">(no promotion)</text>
<!-- Bar 2: Promo week (200 units stacked) -->
<!-- Stack from bottom to top, colour-coded: -->
<!-- - Subsidised baseline: 45 units (red) -->
<!-- - Forward-buy (timing shift): 20 units (amber) -->
<!-- - Cannibalised from next period: 15 units (amber) -->
<!-- - True incremental category expansion: 20 units (green) -->
<!-- = 100 units of "uplift" -->
<!-- PLUS baseline remaining 100 at bottom (gray) -->
<rect x="460" y="170" width="140" height="90" fill="#94A3B8"/><text x="530" y="220" class="val" text-anchor="middle">100</text>
<rect x="460" y="130" width="140" height="40" fill="#EF4444"/><text x="530" y="155" class="val" text-anchor="middle">45 subsidised</text>
<rect x="460" y="115" width="140" height="15" fill="#F59E0B"/>
<text x="530" y="107" class="val2" text-anchor="middle" style="font-size:10px">15 cannibalised</text>
<rect x="460" y="97" width="140" height="18" fill="#F59E0B"/>
<text x="680" y="110" class="val2" text-anchor="start" style="font-size:10px">20 forward-buy</text>
<line x1="600" y1="105" x2="678" y2="105" stroke="#64748b" stroke-width="0.5"/>
<rect x="460" y="78" width="140" height="19" fill="#10B981"/>
<text x="680" y="88" class="val2" text-anchor="start" style="font-size:10px">20 TRUE incremental</text>
<line x1="600" y1="85" x2="678" y2="85" stroke="#64748b" stroke-width="0.5"/>
<text x="530" y="280" class="lbl" text-anchor="middle">Promo week (+100%)</text>
<text x="530" y="295" class="axis" text-anchor="middle">Total index = 200 — looks great on the sell-in deck</text>
</svg>
<figcaption style="margin-top:8px;color:#64748b;font-size:13px;font-style:italic;text-align:center;">A typical "+2.0× uplift" Temporary Price Reduction event decomposed against baseline. Only 20% of the total week-over-week lift (20 of 100 incremental units) is genuinely new category volume. The rest is subsidised baseline plus timing-shift demand that reverses in the following weeks.</figcaption>
</figure>
## The framework — three metrics that separate value from noise
Every CPG trade-promotion function should be able to produce these three numbers for every event in its portfolio, within thirty days of the event closing. Most cannot. That is the gap.
### Metric 1 — Incrementality rate
The percentage of promotional uplift that is genuinely new volume, not shifted from surrounding weeks or cannibalised from own-portfolio products. The formula is simple in principle: `Incrementality = (Promo-period actual volume − Counterfactual baseline) / (Promo-period actual volume − Baseline in promo weeks)`.
The complication is the counterfactual. "What would you have sold in those two weeks at full price?" is a question with no observable answer, because you cannot run the same weeks twice. The industry has spent forty years developing baseline estimation methods — four-week pre-promo averaging, year-on-year comparison, regression with full covariates, causal uplift models — each with different error characteristics. Manufacturer and retailer baselines for the same event typically disagree by 15–25%, and every percentage point of baseline error creates a three-to-five-point error in the downstream incrementality figure.⁵
Healthy FMCG promotional portfolios run at 45–60% blended incrementality. Below 40% is a warning signal; below 30% is an active value-destruction zone. The four-quadrant Performance Grid used in modern TPO practice treats 50% incrementality as the threshold between Best-quadrant and Review-quadrant events.⁶
### Metric 2 — Net Incremental Profit
The absolute dollar or euro figure of profit the event created, after subtracting every cost the promotion incurred. The canonical bridge:
```
Net Incremental Profit =
+ Margin on truly incremental volume
− Margin dilution on subsidised baseline (volume that would have sold at full price)
− Margin loss from post-promo dip (volume cannibalised into promo weeks)
− Fixed costs (display, feature, listing fees)
```
The bridge exposes the anatomy of a value-destroying promotion. A deep TPR on a Routine pack with 40% incrementality and a 15% post-promo dip destroys value roughly twice as often as a shallow TPR on an Entry pack with 60% incrementality and a minimal dip. The cost structure is what determines the output, and the cost structure is knowable from the data — if the capability exists to collect it.
### Metric 3 — Promotional Return on Investment (ROI)
The ratio that allocates capital. `Promotional ROI = Net Incremental Profit / Total Promotional Cost`. Best-in-class FMCG portfolios run at 1.5–2.5× blended ROI; median CPG teams run at 0.8–1.2×; the bottom quartile run at below 0.8× — meaning every dollar of trade spend produces less than a dollar of incremental profit.⁷
ROI alone is insufficient as a decision variable. An event with 10% incrementality and +80% ROI is destroying long-term baseline more slowly than an event with 70% incrementality and +20% ROI is building it. The Performance Grid — a 2×2 of ROI versus incrementality — is the tool that combines both dimensions into a decision the team can defend.
## The POI 2025 scorecard — a canonical case
The Promotion Optimization Institute's 2025 Fall Summit reported an audit of 1,640 promotional events across a major European CPG portfolio, conducted using the three metrics above and scored on the Performance Grid. The published output is a rare public picture of what a real promotional portfolio looks like under rigorous measurement.⁸
Of the 1,640 events:
- **492 events (30%) qualified as Best** — positive ROI, incrementality above 50%, positive net turnover. These events are the core of a healthy portfolio; the instruction for them is "replicate and scale."
- **448 events (27%) qualified as Good** — positive ROI, below-threshold incrementality, positive net turnover. These events pay for themselves but do not build the category; the instruction is "redesign to raise incrementality."
- **360 events (22%) qualified as Review** — incrementality above 50%, but negative ROI. These events build the category at a cost; the instruction is "cut depth, reduce duration, or reallocate funding."
- **340 events (21%) qualified as Stop** — negative turnover events that destroyed value. These events consumed €4.3 million in trade spend while generating €5.1 million in negative net turnover. The total commercial destruction was approximately €9.4 million, in a single annual portfolio, inside events the sell-in deck had classified as successful.⁸
The instruction for the Stop quadrant is the most uncomfortable and the most valuable: eliminate them entirely. Not redesign, not rescope, not retime — eliminate. The capital freed up reallocates into Best events at an exchange rate that is worth documenting: if the freed capital re-funds an average +30% ROI event (the bottom of the Best quadrant), the portfolio-level improvement on roughly flat trade spend is in the 200–400 basis points range.⁸
The point of the POI scorecard is not that every CPG has 21% Stop events. It is that very few CPGs have measured rigorously enough to know their own number. The companies that have — and have then reallocated the trade spend — are the ones whose trade ROI is visibly improving in the 2024–2026 results, and whose Category Captains are willing to open the 2027 Joint Business Planning (JBP) conversation because the CPG's last year's promotional calendar is defensible in shared data.
<figure style="margin: 32px 0;">
<svg viewBox="0 0 760 460" xmlns="http://www.w3.org/2000/svg" style="width:100%;height:auto;font-family:Inter,system-ui,sans-serif;">
<defs>
<style>
.bg{fill:#f8fafc}.panel{fill:#ffffff;stroke:#e2e8f0}
.lbl{fill:#64748b;font-size:10px}.val{fill:#0f172a;font-size:13px;font-weight:700}
.modTag{fill:#10B981;font-size:10px;font-weight:700;letter-spacing:3px}
.subT3{fill:#64748b;font-size:11px}.axT{fill:#475569;font-size:10px}
.quadLbl{font-size:11px;font-weight:700}
@media (prefers-color-scheme:dark){.bg{fill:#0f172a}.panel{fill:#1e293b;stroke:#334155}.lbl{fill:#94a3b8}.val{fill:#f1f5f9}.subT3{fill:#94a3b8}.axT{fill:#cbd5e1}}
</style>
</defs>
<rect class="bg" width="760" height="460" rx="10"/>
<rect x="20" y="16" width="720" height="44" rx="8" class="panel"/>
<circle cx="40" cy="38" r="6" fill="#10B981"/>
<text x="56" y="34" class="modTag">LESSON 4 — TPO</text>
<text x="56" y="50" class="subT3">Performance Grid — classify every event</text>
<text x="720" y="34" class="lbl" text-anchor="end">Sandbox</text>
<text x="720" y="50" class="subT3" text-anchor="end">12 events loaded</text>
<rect x="20" y="76" width="720" height="370" rx="8" class="panel"/>
<g transform="translate(70 106)">
<line x1="0" y1="0" x2="0" y2="290" stroke="#94a3b8" stroke-width="1"/>
<line x1="0" y1="290" x2="600" y2="290" stroke="#94a3b8" stroke-width="1"/>
<line x1="0" y1="145" x2="600" y2="145" stroke="#cbd5e1" stroke-dasharray="3 4"/>
<line x1="300" y1="0" x2="300" y2="290" stroke="#cbd5e1" stroke-dasharray="3 4"/>
<rect x="0" y="0" width="300" height="145" fill="#6366F1" fill-opacity="0.08"/>
<rect x="300" y="0" width="300" height="145" fill="#10B981" fill-opacity="0.10"/>
<rect x="0" y="145" width="300" height="145" fill="#EF4444" fill-opacity="0.08"/>
<rect x="300" y="145" width="300" height="145" fill="#F59E0B" fill-opacity="0.08"/>
<text x="8" y="20" class="quadLbl" fill="#6366F1">Volume Builders</text>
<text x="292" y="20" class="quadLbl" fill="#10B981" text-anchor="end">Stars</text>
<text x="8" y="285" class="quadLbl" fill="#EF4444">Margin Drains</text>
<text x="292" y="285" class="quadLbl" fill="#F59E0B" text-anchor="end">Efficient Niche</text>
<text x="308" y="285" class="quadLbl" fill="#F59E0B"> </text>
<circle cx="75" cy="195" r="9" fill="#EF4444"/>
<circle cx="120" cy="228" r="9" fill="#EF4444"/>
<circle cx="195" cy="260" r="9" fill="#EF4444"/>
<circle cx="155" cy="215" r="9" fill="#EF4444"/>
<circle cx="95" cy="175" r="8" fill="#6366F1"/>
<circle cx="235" cy="80" r="8" fill="#6366F1"/>
<circle cx="175" cy="115" r="8" fill="#6366F1"/>
<circle cx="400" cy="70" r="9" fill="#10B981"/>
<circle cx="505" cy="45" r="9" fill="#10B981"/>
<circle cx="480" cy="110" r="8" fill="#10B981"/>
<circle cx="420" cy="230" r="8" fill="#F59E0B"/>
<circle cx="520" cy="255" r="8" fill="#F59E0B"/>
<text x="300" y="320" class="axT" text-anchor="middle" font-weight="700">Incrementality % →</text>
<text x="-10" y="145" class="axT" text-anchor="end" transform="rotate(-90 -10 145)" font-weight="700">Promotional ROI →</text>
<text x="0" y="310" class="axT">0%</text>
<text x="300" y="310" class="axT" text-anchor="middle">50%</text>
<text x="600" y="310" class="axT" text-anchor="end">100%</text>
</g>
<g transform="translate(680 106)">
<text x="0" y="0" class="lbl">SUMMARY</text>
<text x="0" y="22" class="val" fill="#10B981">3 Stars</text>
<text x="0" y="44" class="val" fill="#6366F1">3 Volume Builders</text>
<text x="0" y="66" class="val" fill="#F59E0B">2 Efficient Niche</text>
<text x="0" y="88" class="val" fill="#EF4444">4 Margin Drains</text>
<text x="0" y="118" class="lbl">DESTROY-VALUE SHARE</text>
<text x="0" y="138" class="val" fill="#EF4444" font-size="20">33%</text>
</g>
<text x="380" y="436" class="subT3" text-anchor="middle" font-style="italic">Every event gets a quadrant. The Stop conversation becomes defensible.</text>
</svg>
<figcaption style="text-align:center;font-size:12px;color:#64748b;margin-top:8px;">Fig 4. The TPO L4 Performance Grid — a 12-event portfolio classified by incrementality and ROI.</figcaption>
</figure>
<figure style="margin: 28px 0;">
<svg viewBox="0 0 760 320" xmlns="http://www.w3.org/2000/svg" style="width:100%;height:auto;font-family:Inter,system-ui,sans-serif;">
<style>
.bg{fill:#f8fafc}.heading{fill:#0f172a;font-size:14px;font-weight:600}.axis{fill:#64748b;font-size:11px}.lbl{fill:#0f172a;font-size:12px;font-weight:600}.val{fill:#fff;font-size:14px;font-weight:700}.annot{fill:#b91c1c;font-size:10px;font-weight:700}
@media (prefers-color-scheme:dark){.bg{fill:#0f172a}.heading{fill:#f1f5f9}.axis{fill:#94a3b8}.lbl{fill:#f1f5f9}.annot{fill:#fecaca}}
</style>
<rect class="bg" width="760" height="320" rx="10"/>
<text x="30" y="28" class="heading">POI canonical scorecard — 1,640 promotional events, single European CPG portfolio</text>
<text x="30" y="46" class="axis">Four quadrants of the Performance Grid. One in five events destroyed value.</text>
<!-- Plot: 4 bars spaced 150 apart starting x=130, width 100. Y-axis: 0 bar top = 270, max 500 events = 85. -->
<!-- y-coordinate = 270 - (count/500)*185 -->
<!-- Best 492 → y = 270 - (492/500)*185 = 270 - 182 = 88 -->
<!-- Good 448 → y = 270 - (448/500)*185 = 270 - 166 = 104 -->
<!-- Review 360 → y = 270 - (360/500)*185 = 270 - 133 = 137 -->
<!-- Stop 340 → y = 270 - (340/500)*185 = 270 - 126 = 144 -->
<line x1="80" y1="270" x2="720" y2="270" stroke="#64748b"/>
<line x1="80" y1="88" x2="720" y2="88" stroke="#e2e8f0" stroke-dasharray="2,3"/>
<line x1="80" y1="160" x2="720" y2="160" stroke="#e2e8f0" stroke-dasharray="2,3"/>
<line x1="80" y1="233" x2="720" y2="233" stroke="#e2e8f0" stroke-dasharray="2,3"/>
<text x="72" y="92" class="axis" text-anchor="end">500</text>
<text x="72" y="164" class="axis" text-anchor="end">300</text>
<text x="72" y="237" class="axis" text-anchor="end">100</text>
<!-- Best: 492 events (emerald) -->
<rect x="120" y="88" width="120" height="182" fill="#10B981"/>
<text x="180" y="135" class="val" text-anchor="middle">492</text>
<text x="180" y="158" style="fill:#fff;font-size:11px;font-weight:600" text-anchor="middle">(30%)</text>
<text x="180" y="290" class="lbl" text-anchor="middle">BEST</text>
<text x="180" y="307" class="axis" text-anchor="middle">+ROI · >50% incr.</text>
<!-- Good: 448 events (cyan) -->
<rect x="270" y="104" width="120" height="166" fill="#06B6D4"/>
<text x="330" y="155" class="val" text-anchor="middle">448</text>
<text x="330" y="178" style="fill:#fff;font-size:11px;font-weight:600" text-anchor="middle">(27%)</text>
<text x="330" y="290" class="lbl" text-anchor="middle">GOOD</text>
<text x="330" y="307" class="axis" text-anchor="middle">+ROI · <50% incr.</text>
<!-- Review: 360 events (amber) -->
<rect x="420" y="137" width="120" height="133" fill="#F59E0B"/>
<text x="480" y="185" class="val" text-anchor="middle">360</text>
<text x="480" y="208" style="fill:#fff;font-size:11px;font-weight:600" text-anchor="middle">(22%)</text>
<text x="480" y="290" class="lbl" text-anchor="middle">REVIEW</text>
<text x="480" y="307" class="axis" text-anchor="middle">–ROI · >50% incr.</text>
<!-- Stop: 340 events (red) -->
<rect x="570" y="144" width="120" height="126" fill="#EF4444"/>
<text x="630" y="190" class="val" text-anchor="middle">340</text>
<text x="630" y="213" style="fill:#fff;font-size:11px;font-weight:600" text-anchor="middle">(21%)</text>
<text x="630" y="290" class="lbl" text-anchor="middle">STOP</text>
<text x="630" y="307" class="axis" text-anchor="middle">–ROI · –turnover</text>
<!-- Annotation callout on Stop -->
<line x1="620" y1="120" x2="600" y2="144" stroke="#b91c1c" stroke-width="1"/>
<rect x="515" y="60" width="220" height="55" fill="#fef2f2" stroke="#EF4444" rx="4"/>
<text x="525" y="78" class="annot">€4.3M spend consumed</text>
<text x="525" y="92" class="annot">€5.1M negative turnover</text>
<text x="525" y="106" class="annot" style="font-size:11px;font-weight:800">€9.4M total destruction</text>
</svg>
<figcaption style="margin-top:8px;color:#64748b;font-size:13px;font-style:italic;text-align:center;">Published audit of 1,640 promotional events from the Promotion Optimization Institute's 2025 Fall Summit. The 340 Stop-quadrant events consumed €4.3M in trade spend while generating €5.1M in negative net turnover — €9.4M of total commercial destruction inside a single annual portfolio. Reallocating that spend into Best-quadrant events typically lifts portfolio-level trade ROI by 200–400 basis points at flat investment.</figcaption>
</figure>
## The practitioner playbook — six steps to separate incrementality from noise
If you are the RGM, Trade Marketing, or Commercial Finance lead responsible for trade promotion, the sequence below will move your function from "we run events" to "we measure events" in roughly three planning cycles.
1. **Audit the baseline methodology for every major SKU-customer combination.** If the baseline is "four-week pre-promo average," it is under-estimating incrementality in growing categories by 5–10% and over-estimating it in declining ones. Move to year-on-year with seasonality overlay at minimum; to regression-with-covariates for the top-20 SKU-customer combinations. Manufacturer-retailer disagreement on baselines is the single largest source of JBP stalemate; closing it is a retailer-relationship investment as much as an analytical one.
2. **Build the Net Incremental Profit Bridge for every event before you commit to it.** The Bridge — incremental margin minus subsidised-base dilution minus post-promo-dip loss minus fixed costs — is the forward-looking commitment check. Events that do not clear a modelled ROI threshold of +10% at expected incrementality should not be scheduled. Events that require 60%+ incrementality to clear the threshold are structurally over-ambitious; redesign before committing.
3. **Install the Performance Grid as the monthly review artefact.** Replace the "uplift versus baseline" scorecard with a 2×2 that plots every event on ROI (Y-axis) and incrementality (X-axis). Colour-code the four quadrants. Walk through the Stop-quadrant events first, every month.
4. **Kill Stop-quadrant events. All of them.** The political cost is real — Sales teams lose events they have committed to customers — but the commercial case is unanswerable. The reallocation of €4.3M of spend from Stop to low-Best events delivers approximately €9.4M in recovered value, without any increase in the trade-spend envelope.
5. **Move ownership of TPO governance out of Sales.** The Promotion Optimization Institute 2025 consensus is that the highest-performing TPO functions sit as a cross-functional Centre of Excellence, not inside the Sales organisation whose incentive is volume sell-in.⁸ A TPO function owned by the CCO, reporting to the CEO or CFO, with Sales as a stakeholder rather than the owner, consistently generates better portfolio-level ROI than the alternative governance models.
6. **Rebuild the data foundation before the AI layer.** Agentic AI for trade-promotion optimisation is arriving — BCG's RGM AI platform, McKinsey's RGMx, internal builds at Reckitt and Coca-Cola — but AI on top of broken baseline data produces faster errors, not better decisions.⁹ The POI summary is blunt: "AI cannot fix bad data or bad process."⁸ Invest in the foundation.
Six steps. Three planning cycles. A portfolio that is visibly more productive by the end of it.
## Pitfalls and trade-offs
The three metrics are not a complete picture of promotional value, and treating them as if they are creates two specific failure modes.
The first is *short-termism*. A promotion with 30% incrementality and a positive short-term ROI may still be building the brand's long-term penetration or defending shelf space from an aggressive competitor. The three metrics measure event-level economic return; they do not measure category-development investment. Brands in a ramp phase, hero-SKU defence scenarios, or new-distribution-gain contexts legitimately run Review-quadrant events for strategic reasons the Performance Grid cannot see.
The second is *over-indexing on incrementality*. A high-incrementality event that runs at negative ROI is still destroying cash in the current year, and the discipline of the Performance Grid is precisely that *both* dimensions must clear at the same time. "But it was 70% incremental!" is not a defence for a negative-ROI event any more than "but it had positive ROI!" is a defence for a 20%-incremental event that cannibalised baseline for two years.
Use the three metrics as the *filter*. Use strategic judgement as the *override*. Do not confuse the two.
## The takeaway
Most CPG trade-promotion portfolios are running at 45–60% incrementality on blended events, 0.8–2.5× blended ROI, and a 15–25% share of events that destroy value outright. The scorecard is knowable. The capability to produce it is not exotic. The operating model to act on it is a three-year build that most companies have not yet started.
The ones that have are re-opening retailer relationships on the strength of defensible data. The ones that have not are the ones whose trade ROI is quietly eroding and whose Category Captains are, quietly, moving their category reviews to competitors who showed up with a Performance Grid and a Net Incremental Profit Bridge on slide one.
The sell-in deck that hides the hole is not going to work in 2026. The math is the thing.
---
## References
1. Bain & Company. "Revenue Growth Management." https://www.bain.com/industry-expertise/consumer-products/revenue-growth-management/ (source on promotional incrementality benchmarks and the 70%-of-SKUs-drive-5%-of-revenue finding).
2. Fortune. "Nestlé, Unilever Flag Price Cuts and Tariff Pressure in Q1 2025 Results." April 2025. https://fortune.com/europe/2025/04/24/price-hikes-unilever-nestle-tariffs/
3. Unilever. Q1 2025 Trading Statement; Power Brands commentary. https://www.unilever.com/news/press-and-media/press-releases/
4. Fortune. "Carrefour Pulls PepsiCo Products After Price Hikes." January 2024. https://fortune.com/europe/2024/01/04/shrinkflation-pepsico-price-increases-carrefour-french-supermarket-pulls-snacks/ ; CNBC. https://www.cnbc.com/2024/01/05/some-carrefour-stores-in-europe-pull-pepsico-products-over-price-hikes.html
5. Baseline-estimation error characteristics documented across multiple consulting publications; 15–25% manufacturer-retailer disagreement figure is the published industry median. Simon-Kucher 2025 Growth Playbook: https://www.simon-kucher.com/en/insights/easy-gains-rough-terrain-2025-growth-playbook-unlock-nuanced-cpg-opportunity
6. Performance Grid methodology published across trade-promotion research; adopted as the canonical 2×2 in the POI Institute framework.
7. Trade ROI benchmarks: Bain & Company RGM publications; POI 2025 Fall Summit materials. The 1.5–2.5× top-quartile / 0.8–1.2× median / below-0.8× bottom-quartile bands are cited in POI summit recap materials.
8. Promotion Optimization Institute. "POI 2025 Fall Summit." https://poinstitute.com/events/poi-2025-fall-summit/ ; Clarkston Consulting. "POI 2025 Fall Summit Recap." https://clarkstonconsulting.com/insights/poi-2025-fall-summit-recap/ ; UpClear. "November 2025 FMCG RGM Summit Recap." https://upclear.com/november-2025-fmcg-rgm-summit-recap/
9. Boston Consulting Group. "Revenue Growth Management AI — POI Panorama 2025." September 2025. https://www.bcg.com/news-29september2025-revenue-growth-management-consumer-goods-enterprise-planning-retail-execution ; McKinsey & Company. "Periscope Revenue Growth Management (RGMx)." https://www.mckinsey.com/capabilities/growth-marketing-and-sales/solutions/periscope/solutions/revenue-growth-management
---
## 📚 Learn more on RGM Academy
Take these concepts deeper with lessons from [RGM Academy](https://rgmacademy.app):
- **Promo ROI and the Net Incremental Profit Bridge** — The canonical TPO diagnostic that decomposes every promotional event into incremental margin, subsidised-base dilution, and post-promo-dip loss. *Why this matters for this article: the Bridge is the tool behind every Net Incremental Profit number in the scorecard, and it is the forward-looking commitment check that stops Stop-quadrant events before they get scheduled.*
→ [Start the lesson](https://rgmacademy.app/tpo/1-promo-roi)
- **Source of Volume** — The decomposition framework that splits promotional uplift into Brand Switching, Category Expansion, Consumption Increase, and Pantry Load. *Why this matters for this article: incrementality is an average; source-of-volume is the anatomy underneath it, and the anatomy determines whether the event built the category or shifted demand sideways.*
→ [Start the lesson](https://rgmacademy.app/tpo/2-source-of-volume)
- **Baseline Estimation** — The module on why manufacturer and retailer baselines disagree by 15–25%, and the methodologies (four-week averaging, year-on-year, regression-with-covariates, causal uplift) that move the function toward defensible numbers. *Why this matters for this article: every downstream metric inherits the baseline's error; fix the baseline or the other two metrics are noise.*
→ [Start the lesson](https://rgmacademy.app/tpo/3-baseline)
- **Performance Grid — Best, Good, Review, Stop** — The 2×2 decision tool that classifies every event by ROI and incrementality simultaneously. *Why this matters for this article: this is the monthly review artefact the playbook depends on, and the governance tool that lets a CPG kill Stop-quadrant events with defensible evidence.*
→ [Start the lesson](https://rgmacademy.app/tpo/4-perf-grid)
---