Did My Sale Work? A Plain Way to Tell
Updated November 2026
Sales rose while the sale ran. That does not mean the sale caused it. Here is how to check.
Your sale ran for a week. Sales went up. It feels like a win.
But sales go up and down all the time. A holiday, a payday, or a post that went around can lift them too. So the real question is this: how many sales did you get beyond what you would have got anyway?
Our position: judge a sale by the gap between what happened and what the days before say would have happened.
The answer first
A sale worked if sales during it were higher than the path from before the sale predicts, by more than chance explains. The size of that gap, with its range, is the number to report.
How the check works
- Look at the days before the sale. They show your usual level and any trend, up or down.
- Project that path forward. This is the "anyway" line: what sales would have been with no sale.
- Compare. Subtract the "anyway" line from the real sales. The gap is what the sale added.
- Ask if the gap is bigger than noise. Daily sales bounce. A good check gives a range, and tells you if the range includes zero.
This method is called causal impact. The article Causal impact, the practical guide goes deeper.
What can fool you
- Pulled-forward sales. People who would have bought next week bought now. Look at the weeks after the sale too. If sales dip, part of the lift was borrowed.
- Something else changed. An email, an ad, a price change in the same week. The check cannot tell these apart, so list what else happened.
- Too few days before. A few days of history is a thin base. More weeks make a steadier "anyway" line.
- A season. If your sale fell in a busy season, the line from before may be too low. See Are my sales growing, or is it the season?
If you can hold some people out
A random group that never sees the sale gives a cleaner answer than any projection. If you can do that, read Incrementality: did the offer cause anything? If you cannot, the method above is the next best thing. A change in one place or time that you could not test is also covered in interrupted time series.
Run this on your GA4 or Shopify data
From Shopify: open Analytics, then Reports, then Sales over time. Set the dates to cover at least a few weeks before the change. Choose daily. Export as CSV.
From GA4: open Explore and make a table with date as the rows and purchase revenue (or sessions, or whatever you are judging) as the value. Export it as CSV.
What your file needs: one row per day, one column for the date, one column for the number. Add a column for the thing that changed if you have one, such as the day the sale began.
What you get back: the average gap per day between real sales and the "anyway" line, a range for it, the total across the sale, and a plain note on what the method cannot rule out. Use the free causal impact tool. Files over 10,000 rows are sampled on the free page.
Questions owners ask
Is it enough to compare sales to last year?
It helps, but last year had its own events. Comparing to the days just before the sale, with the trend carried forward, is usually fairer. Using both is better than either.
How long should the sale run for me to tell?
Longer runs give a clearer read, because daily sales are noisy. A one day sale can still be checked, but expect a wide range.
What if the range includes zero?
Then the data cannot tell a lift from noise. That is an honest answer. It does not prove the sale did nothing.
Do I need to be a statistician?
No. You need a daily file and the date the sale began. The tool does the math and explains the result.