How to run a sale without training customers to wait
Run sales on a Shopify store that do not teach customers to hold off: fewer, planned sales with real reasons, honest was prices, and full-price reasons in between.
What this is for
Customers learn your pricing faster than you think. If a code arrives every few weeks, the sensible thing for them to do is wait for it, and your full price becomes a price nobody pays. The cost does not show up on the sale day, which looks great. It shows up in the quiet weeks before each sale, when people who were ready to buy hold off.
This guide is about running sales that still work without teaching that habit: fewer of them, each with a real reason and a real end, honest reference prices set up correctly in Shopify, and something other than a discount in the emails in between. It is general guidance on pricing claims, not legal advice for your country.
Time needed and what you need
Time needed: about 4 hours. Three hours once a year to measure last year and plan the sales, then about an hour per sale to set prices in Shopify and switch them back.
- Last year's orders with the discount code or sale price each one used
- Your price history for any product you plan to show with a crossed-out price
- Staff access to products and discounts in Shopify
- Next year's calendar, so you can place the sales before anything else fills it
The steps
Steps 1 to 3 are decisions you make once a year. Steps 4 to 7 are for every sale.
1. Measure how much of your revenue already waits for a discount
Export last year's orders and split them into full price and discounted, month by month. Then look at the weeks just before each sale. If orders dip before a sale and jump during it, customers are already timing you. Write down the share of orders at full price; that is the number this whole plan is trying to raise.
2. Plan a small number of sales for the year, each with a reason
Pick the sales you will run and put them on the calendar now: end of season to clear stock, your anniversary, Black Friday. A reason customers can understand makes a sale feel like an event rather than a habit. Sales that come at the same few points each year are easier on your full price than codes that turn up at random, because nobody needs to wait for a sale that is months away.
Frequency also has legal weight in some markets. If you sell into the EEA and cut prices more than once in 30 days, you have to think about which earlier price you are allowed to compare against. source, checked 28 September 2026
3. Choose what goes on sale and what never does
Keep your core products, the ones people come back for, out of most sales or at a shallow discount. Put end-of-line stock, last season's colours and slower sellers at the deeper cuts. A gift with purchase or a bundle can make a sale feel generous without cutting the price of the product people would have bought anyway.
4. Only compare against a price you really charged
A struck-through price is a claim. In the UK the regulator's view is that a genuine reference price is one you expected to sell at, and usually did, in significant numbers. A price you listed for a week so you could discount from it does not qualify, and if a product has spent longer on sale than off, the sale price has become the real price. source, checked 28 September 2026
In the EEA the rule is more mechanical: when you announce a reduction, show the lowest price you charged in the previous 30 days or more. In the US, the FTC applies its usual truthfulness standard to sale claims and points to its Guides Against Deceptive Pricing. source, checked 28 September 2026
5. Set the sale up correctly in Shopify
For a crossed-out price on product and collection pages, set the product's Compare-at price to the genuine earlier price and lower the Price field. The compare-at value has to be higher than the price or the sale does not display. A discount, by contrast, shows its saving at checkout but not on product pages unless you add an app. source, checked 28 September 2026
Check every variant. If some variants have a compare-at price and others are blank or set to zero, the collection page will not show the product as on sale even though some variants are. source, checked 28 September 2026
6. Make the deadline real and keep it
Announce the end date and end the sale on that date. Extending it by a day because it went well teaches everyone that deadlines move. The same goes for countdown timers: the UK regulator took action against a retailer over clocks that gave shoppers a false sense of urgency, and made it commit to clocks that do not mislead about acting quickly. source, checked 28 September 2026
7. Give people reasons to buy at full price between sales
Most of the emails in your monthly email calendar should sell without a discount: new products, how-to content, reviews, restocks. Reward loyal customers with things that are not money off, such as early access to a launch or a small gift in their next order. When every email carries a code, the email itself teaches people to wait for the next one.
8. Reset prices and compare before and after
When the sale ends, clear the compare-at prices, end any codes, and remove banners the same day. A month later, compare the share of full-price orders in the four weeks after the sale with the four weeks before it. If full-price orders recover, the sale did its job. If they stay low, the next sale should be smaller or later.
A worked example
For a jewellery store that ran a discount code every month
Worked example (an invented store, with invented numbers)
Last year the store sent a 20% code roughly every month. Of its 1,800 orders, 1,260 used a code, so only 540 were at full price, and orders fell in the week before each code arrived.
This year it plans three sales: end of summer, its anniversary in October and Black Friday. Between them, emails feature new pieces, care guides and customer photos, with no codes. Compare-at prices are set only on pieces that sold at full price for most of the previous quarter.
The year ends with 1,900 orders: 570 at a sale price and 1,330 at full price. Total orders rose by 100, and full-price orders went from 540 to 1,330.
Common mistakes
Raising a price shortly before a sale so the discount looks bigger. It misleads customers and it is exactly what reference pricing rules are aimed at. Only show a price you really sold at.
Keeping a product permanently on sale. After a while the crossed-out price is not a former price at all, and customers stop believing any of your sale prices. Take it off sale or lower the regular price honestly. source, checked 28 September 2026
Extending the sale because it went well. The next deadline you announce will be ignored. End it on the day you said.
Putting a code in every email to hit this week's number. It works this week and costs you full-price orders for months. Keep codes for planned sales and for flows where you have decided on a rule, such as a second abandoned cart email.
Doing this with Tilly
Tilly's email calendar agent plans your campaigns around the sales you have fixed, at no credit cost, which makes it easier to see when a month has drifted into discounting. Each campaign it writes costs 10 credits and goes to Klaviyo as a draft, and any discount you put in an email is your decision at approval.
Questions people ask
Does a welcome discount for new subscribers train people to wait?
Less than a monthly code, because each person gets it once. Keep it to new subscribers, give it an expiry, and do not repeat it to people who already bought. The guide to building a welcome series covers where it fits.
Can I use the manufacturer's recommended price as my compare-at price?
Only if it is a genuine price the product sells at and you say what it is. Showing a recommended price nobody charges as if it were your own former price is the kind of comparison regulators look at.
What does the US rule say about sale claims?
The FTC's small business advertising guide says sale and "on sale" claims are held to the same truthfulness standard as any other advertising, and refers businesses to its Guides Against Deceptive Pricing. Check your state's rules too. source, checked 28 September 2026
See this on your own store
Paste your store URL. The first pass takes about a minute and needs no account. Save a card (nothing is charged) and Tilly reads the whole store and works out who buys from you.