How to
How long do a competitor's sales last? Measure it yourself
Nobody can tell you the average length of a Shopify sale, and anyone quoting one is guessing. Here is how to measure it for the shops you actually compete with.
Published 7 min read

Nobody can honestly tell you the average length of a sale on Shopify stores, including us. There is no public register of promotions, every shop behaves differently, and any figure you find quoted is either from a small private sample or invented. What you can do — and what is actually more useful — is measure it for the handful of shops you compete with, which takes about five minutes a week and gives you an answer that applies to your market rather than to an average of everybody's.
Why there is no honest general answerLink to this section
Three reasons, and they are worth knowing because they also explain why you should distrust the figures you see quoted.
Sales are not announced anywhere machine-readable. A shop marks products down, and the only public trace is that the prices changed. Nothing says "this promotion runs until Friday".
"A sale" is not one thing. A weekend promotion, a two-week seasonal clearance, a permanent outlet section and an end-of-line markdown that never reverses all look identical from outside: a lower price with a higher one crossed out.
The answer differs enormously by category. A fashion shop clearing a season and a coffee roaster shifting beans before they stale are running different clocks. An average across both describes neither.
So when you see "the average Shopify sale lasts X days", ask who measured it, across how many shops, over what period, and how they decided a sale had ended. Usually at least one of those answers does not exist.
Measuring it for your own competitorsLink to this section
The method is a log, not an analysis. Five minutes a week.
What you needLink to this section
A spreadsheet with one row per product per markdown, and these columns: shop, product, normal price, sale price, date first seen discounted, date first seen back at full price, and a notes field.
The weekly routineLink to this section
- Pull each competitor's product list —the method is here — on the same day each week.
- Filter to the products where the compare-at price is higher than the price. Shopify's help pages describe how a shop sets that second figure when something goes on sale.
- New rows: anything discounted this week that was not last week. Record today's date as the start.
- Closed rows: anything that was discounted last week and is not now. Record today's date as the end.
- That is it. Do not analyse weekly; the data is not interesting until you have a few months.
What you will have after a quarterLink to this section
For each competitor: how many promotions they ran, roughly how long each lasted, how deep the discounts were, and which parts of their range go on sale.
That is a real answer about the shops that actually matter to you, and it is worth more than any published average.
The accuracy you can honestly claimLink to this section
This is where people overstate, so be precise about it.
Checking weekly gives you sale lengths accurate to about a week. A sale that started on Tuesday and ended on Friday may appear in your log as a single check with a discount, or as nothing at all if it began and ended between two checks.
So write it as a range. "Their seasonal markdowns ran somewhere between three and five weeks" is honest when you checked weekly. "Their sale lasted 24 days" is not, unless you checked daily.
Check more often for a shorter measurement. Daily checks give you day-accurate answers. The cost is doing it daily, which is the part that fails.
What you will not catchLink to this section
Anything shorter than your checking interval. A 48-hour flash sale is invisible to a weekly check. If a competitor's strategy is short, sharp promotions, weekly checking will tell you they rarely discount — the exact opposite of the truth.
Any promotion that does not change the listed price. Discount codes, basket-level offers, free delivery thresholds and email-only deals leave the product prices untouched. The full list of invisible discounts is here. This is the big one: a shop can run its most aggressive promotion of the year and your log will show nothing at all.
Prices shown to shoppers elsewhere. A shop can set different prices for different countries, so your log records the version you see.
A markdown that never reverses. If a product is discounted and then withdrawn, there is no end date — it was a clearance, not a sale. Note it as a separate outcome rather than leaving the row open forever.
What to do with the answerLink to this section
Time your own promotions around theirs, or deliberately away from them.
Recognise the difference between a shop that discounts on a rhythm and one that discounts under pressure. Regular, predictable, shallow markdowns are a merchandising plan. Irregular, deepening ones usually mean stock that is not moving.
Stop matching a "sale" that is permanent. If a competitor's compare-at prices never change, their sale price is their price, and matching their headline discount means cutting below them for no reason. Reading their price bands will show you this faster than product-level tracking.
Reading the log once you have a few monthsLink to this section
Three patterns show up, and they mean different things.
Regular, shallow, predictable. Markdowns at the same points in the year, at similar depths, ending on schedule. This is a merchandising plan, and the useful response is to know the calendar and plan around it rather than react to each one.
Irregular and deepening. Sales appearing at odd times, each a little deeper than the last, some never reverting to full price. That usually means stock that is not moving. It is also the pattern that most often precedes a shop withdrawing a product line altogether.
Almost never, then suddenly everything. A shop that holds its prices and then discounts broadly is either clearing for a range change or responding to something. Look at what appeared in their catalogue in the weeks afterwards; a big markdown followed by a wave of new products is a planned transition rather than distress.
None of these tell you why, and you should not write a reason into the log. Record the pattern; keep the interpretation in a separate note where it can be wrong without contaminating the data.
If you want a general answerLink to this section
The honest route is a proper study: a defined sample of shops, a stated period, a stated definition of when a sale starts and ends, and the numbers published with their method. We may publish one. We have not, so we are not quoting a figure — and neither should anyone else who has not done the work.
Watching listed prices closely enough to catch short promotions is exactly the repetitive checking StoreLenz is being built to take over. Price tracking and sale alerts are being built rather than finished today; what it does now says which is which.
Related readingLink to this section
- How to tell whether a store is really running a sale
- How to track a competitor's price changes
- How to read a competitor's price bands
SourcesLink to this section
- Shopify Help Center, Setting sale prices for products — https://help.shopify.com/en/manual/products/details/product-pricing/sale-pricing — read 2026-09-22
- No figure for average sale length appears in this article, because we have not measured one and will not quote somebody else's unsourced number
Written by Cristiano Pinto
shopify store expert


