Ecommerce Promo Analysis: How to Measure Lift (Without Fooling Yourself)
by Om Rathod
|
8 min read
Aug 24, 2026
Why Most Brands Get Promo Lift Wrong
Here's the mistake, and almost every brand makes it at least once: you run a 20% off promo, revenue jumps during the promo week, you compare it to the week before, and you call the difference "lift."
That number is basically meaningless.
It ignores the fact that sales were probably trending up or down anyway. It ignores seasonality (Black Friday week doesn't compare to a random Tuesday in March). It ignores the organic demand that would've converted with or without a discount code. A promo landing during a traffic spike from a viral TikTok looks like a massive win when really the discount had nothing to do with it.
Real lift is narrower and less flattering: it's the incremental revenue or units that would not have happened without the promo. Not total sales during the promo. Not the delta from last week. The incremental piece, and only the incremental piece.
This post walks through how ecommerce promo analysis, how to measure lift properly actually works: building a defensible baseline, picking a measurement method, running the math, and dodging the traps that make brands think a promo worked when it just moved money around.
What "Lift" Actually Means in Ecommerce Promo Analysis
Lift is actual performance during the promo minus the expected baseline performance without the promo. That's the whole definition. Everything else is noise dressed up as insight.
It's not the same as total promo period sales. It's not ROAS. It's not units sold. Those are all real metrics, but they get conflated with lift constantly, usually by whoever's presenting the promo results to leadership and wants the number to look good.
The trickier issue is cannibalization. A promo can post $80,000 in revenue and still have weak true lift if most of that revenue would've happened anyway, just at full price, spread across the next three weeks. Customers who were already planning to buy just moved their purchase up to grab the discount. That's not incremental demand. That's demand you already owned, sold at a lower margin.
Then there's the post-promo dip: sales that look strong during the promo window but come from borrowed demand. Someone who normally reorders every 60 days stocks up during your sale and doesn't show up again for 150 days. If you only measure the promo week, you'll miss this completely, and you'll repeat the same "successful" promo next quarter without realizing it's quietly cannibalizing your baseline.
Step 1: Build a Reliable Baseline Before You Launch
Your baseline is the sales number you'd expect without any promo running. Build it before launch, not after, or you'll unconsciously shape it to match whatever result you want to see.
Start with trailing 4 to 8 weeks of sales, adjusted for day-of-week patterns (weekends convert differently than weekdays for most DTC brands) and any seasonal trend already in motion. If revenue's been climbing 3% week over week for a month, your baseline needs to reflect that climb, not a flat average.
Account for anything else changing in the same window: a new ad budget increase, a SKU launch, an influencer post driving referral traffic. If you bump Meta spend 30% the same week you launch a promo, you can't cleanly credit the resulting lift to the discount alone. This is where a lot of DIY spreadsheet models fall apart, because nobody's tracking ad spend changes and sales baselines in the same place.
If you've run this same promo before, pull last year's comparable window and sanity-check your forecast against it. Doesn't need to match exactly, but if it's wildly off, something in your baseline logic is broken.
This step deserves more time than the promo planning itself. A bad baseline invalidates every lift number downstream. If you want this handled automatically instead of rebuilt in a spreadsheet every cycle, this is exactly what forecasting and simulation tools are built for.
Step 2: Choose a Measurement Method (Before/After vs. Control Group)
Before/After Comparison
What it measures: Actual promo period sales against your baseline forecast
Best for: Smaller brands without enough volume or audience size to split-test
Weakness: Vulnerable to confounding events, an ad spend change, a press mention, a competitor stockout, anything happening in parallel gets bundled into your "lift"
Holdout / Control Group Testing
What it measures: Performance of a promo-exposed group against a comparable group that saw no promo at all
Best for: Brands running frequent promos with enough traffic and customer volume to split reliably
Weakness: Requires enough scale that the holdout group doesn't just look like noise
If you're a smaller brand, before/after with a solid baseline is honestly fine. Don't overbuild your measurement setup before you have the volume to justify it.
If you're running promos monthly and have enough regional spread, geo-holdout testing is a solid middle ground: run the promo in some markets, hold it out in comparable ones, compare the two. It's one of the more practical ways DTC brands validate paid promo lift without needing a full experimentation platform. Pulling this off cleanly usually means your ad platform data and funnel data need to live in the same place, which is where a lot of brands start looking at GA4 funnel reporting alongside their ad and sales data instead of stitching it together by hand.
The Lift Calculation, Step by Step
The formula itself isn't complicated:
Lift % = ((Actual Sales during promo - Baseline Forecast) / Baseline Forecast) x 100
Worked example. Your baseline forecast for the promo window is $50,000. Actual sales come in at $68,000.
($68,000 - $50,000) / $50,000 = 0.36, or 36% lift.
That looks great on a slide. It's incomplete without margin.
Say the promo was 25% off, and your average COGS runs 35% of retail. Revenue lift of 36% might still translate to negative profit lift once you factor in the discount depth and cost of goods on every unit sold. Run the lift calculation on gross margin dollars, not just revenue, before deciding a promo "worked."
Last piece: extend your measurement window 1 to 2 weeks past the promo end date. If sales drop below baseline right after the promo closes, that's the stockpiling effect showing up, and it needs to get netted against the lift you measured during the promo itself. A promo that shows 36% lift during the week but a 15% dip for the following two weeks isn't nearly as strong as it first looked.
Common Traps That Inflate or Hide Real Lift
Attribution overlap. Running paid ad spend at the same time as the promo makes it nearly impossible to isolate which one actually drove the bump. Did the promo work, or did the extra ad dollars just buy more traffic that would've converted anyway? If you can't answer that cleanly, don't launch both changes in the same week.
Repeat-buyer cannibalization. Your most loyal customers were probably going to buy this month regardless. The promo just gave them a discount on a purchase you already had locked in. That's real margin lost with zero incremental revenue gained.
Stockpiling. Customers load up on 3 to 6 months of product during the sale, then vanish from your reorder cycle. Big spike now, demand vacuum later. If you're not extending your measurement window (see above), you'll never catch this.
Not segmenting by new vs. returning. This is the one most dashboards get wrong. Total lift can look healthy while hiding the fact that the promo did nothing to bring in new customers, it just got existing ones to buy sooner at a lower margin. Segment lift by customer type every time, or you're flying blind on whether the promo actually grew anything.
Turning Promo Lift Data Into Better Promo Decisions
One promo's lift number doesn't tell you much on its own. The value shows up when you track lift across every promo you run and start comparing discount depths, formats, and timing against each other. A 15% off flash sale might consistently outperform a 30% off sitewide sale once you strip out cannibalization, and you'd only know that by looking across a dozen promos, not one.
That kind of comparison needs unified data: ad platform spend, Shopify or Amazon sales, GA4 funnel behavior, all in one place instead of exported into separate spreadsheets you're manually reconciling every promo cycle. That reconciliation work is exactly where lift calculations quietly go wrong, someone fat-fingers a baseline formula or forgets to adjust for a seasonality shift, and the whole analysis is off before anyone notices.
Automated baseline forecasting removes most of that manual guesswork, and consistent BI reporting across channels means you're comparing promos on the same footing every time instead of rebuilding the model from scratch. If you're a marketing leader trying to defend promo ROI in a budget meeting, having that history on hand beats reconstructing it under deadline pressure.
If you're rebuilding this analysis by hand every promo cycle, it's worth seeing what it looks like automated. Take a look at Trivas's forecasting tools and see if it saves you the spreadsheet work next time around.
Revenue growth leader and co-founder driving Trivas's commercial strategy. Om has led the product vision and execution from scratch. With a strong background in SaaS sales and GTM strategy, Om bridges product innovation with real-world customer needs.
Continue Reading
explore more insights
Best Way to Find Which Channel Drives Highest LTV
3 min read
Triple Whale Alternative for Small Brands: What's Coming and How to Get Ahead
3 min read
Ecommerce Analytics for CMO and Board Reporting: What to Show