Skip to main content

Command Palette

Search for a command to run...

Your promotion generated 30% more sales. Great. But did it actually work?

Updated
•8 min read•View as Markdown
Your promotion generated 30% more sales. Great. But did it actually work?
M

I’m Prunella DOUSSO, an IT student with a passion for data science and software engineering. This blog is my space to share insights, experiences, and opinions, making tech discoveries fun and accessible to everyone, no matter your skill level.

Promotions are one of the main tools used by Product and Marketing teams. Discounts, bundles, coupons, displays, loyalty offers… they can create engagement, stimulate demand and sometimes help with retention. I mean, that's the goal.

But here's the thing: not every sale generated during a promotion is a sale that happened because of the promotion. And not every sale is equal.

Let me develop. I think we have all got the joy of being about to buy something and come across a sale ! In that case, the promotion didn't exactly lure us in (even if it helped XD), we would have bought the product anyway.

Now, what if the promotion increased sales of one product but took sales away from another product in the same portfolio? And is the additional revenue even enough to compensate for the discount?

So much questions emerge when trying to understand promotions, evaluate if they worked and what to do next. Hopefully, data science equips us with sufficient tools to perform such evaluations and operations. Fundamentally, it answers two questions here:

1. Did the promotion actually create value?

2. Given what we learned, what should we promote next, when, and under which conditions?


First: why do companies test promotions?

Promotions are essentially business experiments. You don't really know what's going to work, at least not to their full effect. A company changes something (price, offer, placement, timing, mechanic) and observes what happens.

The problem is that we only observe one reality. For instance, if we run a 20% discount and sell 1,400 units, we know that 1,400 units were sold. We don't really know how many would have been sold without the discount. 1000, 1250, maybe ? That missing number is the counterfactual: what would have happened if we had not run the promotion?

We need to estimate that number to be able to measure the true impact of the promotion.

A few concepts that come up again and again...and again

Care for a little bit of theory before we dig in ? So many terms and concepts come into play that it is important to know about them to proceed peacefully.

Baseline sales

The baseline is our estimate of what sales would have looked like without the promotion. If we expect 1,000 units without the promotion and actually sell 1,300, the apparent uplift is 300 units. But those 300 units aren't automatically incremental.

Incremental sales

Incremental sales are the additional sales that can reasonably be attributed to the promotion compared with the counterfactual.

Counterfactual

The counterfactual is the alternative scenario we cannot directly observe. The "what would have happened without it". We can't run the exact same store, with the exact same customers, on the exact same day both with and without the promotion. So we need to estimate that alternative reality using experiments, control groups or statistical models.

Cannibalisation

It's the event of a product completely eating up another, when it was supposed to enlarge the customer base and increase the revenue.

It happens when for instance, a customer buys a promoted product instead of another product they would have bought anyway. Cannibalization can happen across products, pack sizes, brands or categories, which is one reason why looking only at the promoted SKU can be misleading.

But yeah, the business may have generated very little additional demand while giving away margin.

Pull-forward / stock-up

Simply, that's when a promotion moves a purchase forward in time. Let's say you are supposed to buy detergent next week, it's scheduled. But now, there is a promotion on detergents so you just jump on it and buy two bottles. The sales have gone up this week, but the thing is the promotion didn't necessarily create a new purchase.

Now, how do we actually evaluate a promotion?

This promotion evaluation and planning is a 6-steps loop.

1. Building the data foundation

Before modelling anything, we need the right data.

That might include:

  • Transaction data

  • Product and SKU information

  • Store information

  • Customer data

  • Prices and discounts

  • Promotion mechanics

  • Financial data such as costs and margins

  • Marketing and promotion calendars

What's important here is making sure the data works together: product IDs and prices consistency, correct promotion dates, precision on who/what received which offer, transactions records straight. A sophisticated model cannot fix a broken foundation.

2. Preparing the modelling dataset

Once the foundation is reliable, we can build the dataset used for analysis.

This can involve:

  • Filtering and aggregating transactions

  • Handling outliers

  • Joining product, store and promotion information

  • Creating features around price, timing, seasonality and promotion type

  • Potentially segmenting stores or customers where behaviour differs significantly

The objective is to get to something we can actually reason about:

What happened, where, when, under which promotion, and under what conditions?

3. Causal demand modelling

Now, with the data that we have, we try to understand the real drivers of the sales made. A causal demand model can help estimate relationships between demand and factors such as:

  • Price

  • Discount depth

  • Promotion type

  • Timing

  • Product

  • Store

  • Seasonality

  • Competitor activity

  • Other relevant demand drivers

This analysis can result in so many things: price elasticity (If the price changes, how much does demand tend to change?), which promotion mechanics work better for which products, stores or customer segments.

The goal really is to understand how demand responds to different decisions.

4. Synthesising the modelling insights

The model tells us A LOT. Through driver analysis (completing causal modelling), we can answer for example:

  • Which promotion mechanics tend to generate genuine incremental sales?

  • Which products respond strongly to discounts?

  • Which stores respond differently?

  • Which promotions generate margin rather than just volume?

  • Where does cannibalisation occur?

  • Which promotion types repeatedly underperform?

  • Are there common characteristics of successful promotions?

After accumulating data from past promotional events, we can start identifying patterns between promotion characteristics, their drivers and their outcomes.

From looking backwards to planning forwards

At this point, we have been able to measure past promotions effectiveness. And it is useful. But the real opportunity is using those learnings to make better decisions before spending the money.

And this is where promotion planning comes in. The star of the show, really. And the next step of our process.

5. Building a promotion simulator

Once we have a model of demand, we can start asking: What if?

What if we offer 10% instead of 20%? What if we promote Product A instead of Product B? What if we run the promotion in these stores but not those ones?

What if we run it for one week instead of two? What if we promote two products together?

There are so many possibilities so instead of choosing one promotion and hoping it works, we can simulate different scenarios before making the decision.

6. Promotion replanning

After prediction, we can move to optimisation as it is very important for the business to achieve the best result making the most (and in the smartest way possible) of what they have, their constraints.

The constraints could include budget, inventory, store capacity, product availability, marketing calendars.

We can then compare possible scenarios and identify the ones that best fit the business objectives.

The whole process in a nutshell

To sum it up, it's a loop: Run → Measure → Learn → Simulate → Plan → Run again. This is what you can take as the end-to-end workflow:

1. Build data foundation → Bring together transactions, products, stores, customers, financial data and promotion information.

2. Prepare modelling dataset → Clean, join, aggregate and engineer the variables needed for analysis.

3. Build causal demand models → Estimate baselines, price response and promotion effects.

4. Synthesise insights → Understand the drivers of successful and unsuccessful promotions.

5. Build a promotion simulator → Run “what-if” scenarios for different products, prices, mechanics and timings.

6. Optimise the promotion plan → Select the best scenarios under real business constraints.

That's how one evaluates promotion using data science. Every promotion gives us another opportunity to understand what actually creates incremental value.

The bigger Data Science lesson

This is no life lesson but I think promotion effectiveness and planning bring up something in data science that I call the "eagle view". You don't always measure one specific thing. You do have a goal and an overall outcome that you'd want to quantify but you really have to pay attention to all the "small" things that come into play in that big thing you are measuring.

In this case particularly, if we measure promotional sales without thinking about the counterfactual, we can mistake correlation for impact.  If we look only at the promotional week, we can miss demand that was simply moved from another period. If we look only at the promoted product, we could miss cannibalisation.

And if we optimise without understanding the economics, we can end up optimising for sales volume instead of business value.

The Data Scientist's role isn't just to build the model. It's to help make sure we're asking the right question and answering it properly.