How do you run a Shopify sale that actually moves inventory?
Most sales get planned in the wrong order. A store picks a percentage, makes a graphic, sends an email, and hopes. Then the week ends, some inventory moved, average order value dipped, and nobody is quite sure whether it worked.
A sale is a small campaign, and campaigns have parts. The discount is only one of them. The pricing mechanics, the page people land on, the ads that carry it, and the way you measure it all decide whether the sale clears the shelf or just gives away margin to people who were going to buy anyway.
Here is the order we walk stores through, and the trade-offs to make on purpose instead of by accident.
Start with what the sale is actually for
Before the percentage, answer one question: is this sale about clearing specific inventory, or about bringing in new customers?
They lead to different sales. Clearing inventory means deep discounts on a defined set of products, a hard end date, and messaging that makes the tiers obvious. Bringing in new customers means a lighter, broader offer that does not train your audience to wait for markdowns.
Trying to do both in one sale is where things get muddy. Pick one, and let the other be a nice side effect.
Decide how the discount will show up
There are two ways to run the mechanics in Shopify, and the easy one has a catch.
Automatic discounts by collection are the low-lift option. You set a rule, tag the products, done. The catch is that the sale price never appears on the product page. The customer has to add the item to their cart to find out what they are actually paying, which is exactly the wrong moment to make someone do math.
The other option is compare-at pricing, which produces the visible strike-through. The old price with a line through it and the new price beside it. For an "up to X percent off" sale, this is what you want, because the discount does the selling on the page instead of hiding in the cart.
The reason people avoid it is time. Changing compare-at prices by hand across a real catalog is a multi-hour job.
It does not have to be. A bulk price editor app will set the whole thing in minutes and let you schedule both the start and the revert, so the sale turns itself on Friday morning and turns itself off when it ends. If you do a lot of bulk product work in general, a spreadsheet-based tool that exports only the columns you need is worth keeping in the stack year round.
Build the sale its own page
Do not send sale traffic to your homepage. You promised a specific thing in the ad, and the homepage does not deliver it.
Build a custom collection template and use it as the sale landing page. The version we have seen work well is simple: a grid of images, each with the percentage overlaid on it, each linking to that tier's collection. Someone who clicked "up to 50 percent off" lands somewhere that matches the promise and can go straight to what interests them.
A useful note on Shopify mechanics: an unassigned template is invisible. If you create the template but do not assign it to a collection, nobody can reach it, so you can build the whole thing on your live theme without a duplicate. Duplicate the theme only when you are editing something already published.
Know the trade-off you are making
Letting people shop by discount tier changes buyer behavior in a predictable way.
Conversion rate tends to go up, because shoppers can find the deepest markdowns quickly and the decision gets easier. Average order value tends to go down, for exactly the same reason. Most people head straight for the 50 percent shelf.
Combining everything into one sale collection does the reverse. AOV holds up better because people shop by what they want rather than by what is cheapest, and conversion softens a little.
Neither is the right answer in general. If the point of the sale is to clear deeply discounted inventory, break the tiers out on purpose and accept the AOV dip. If the point is a healthy revenue week, keep it combined.
Run ads that carry the offer, not just announce it
A sale is not an excuse to run flat graphics for three weeks.
Put the offer into video content, not only into statics. Take the creative that already performs, add the sale message to the hook or the closing line, and let it keep doing what it was doing. Statics are useful for retargeting people who already engaged, but they are not what earns new attention.
Give the sale a name that creates real scarcity. "Semiannual sale" carries more weight than "summer sale" because it tells people this happens twice a year, so waiting has a cost.
And point every one of those ads at the sale landing page you built, not the homepage.
A simple run sheet
If you want a repeatable version, this is the order:
- Decide the goal: clear inventory, or acquire customers.
- Set the tiers and tag the products into collections.
- Use a bulk price editor to set compare-at prices, and schedule the start and the revert.
- Build the sale landing page as an unassigned collection template, then assign it when it is ready.
- Add a "Sale" item to your navigation so organic traffic can find it.
- Refresh two or three proven ads with the sale message in the hook, plus statics for retargeting.
- Send the early access email to your VIP segment first, then the broad send a day or two later, then a reminder before it closes.
- Watch conversion rate and AOV together, not separately, so you can see the trade-off happening.
The point of all of it
A sale run well does more than move product. It gives new customers a low-risk first purchase, wakes up buyers who have gone quiet, and tells you which products people actually want when price stops being the objection.
A sale run carelessly trains your audience to wait, gives margin to people who would have paid full price, and leaves you with the same inventory and a smaller number at the bottom.
The difference is not the size of the discount. It is doing the parts in the right order, which is the whole idea behind Growth Made Simple.
Frequently asked questions
Should I use automatic discounts or compare-at prices for a Shopify sale?
Use compare-at prices when you want the sale price visible on the product page with a strike-through, which is almost always better for an "up to X percent off" sale. Automatic discounts by collection are quicker to set up, but the customer only sees the discount in their cart, which removes the discount's ability to sell on the page. A bulk price editor app makes compare-at pricing a minutes-long job instead of an hours-long one.
Where should I send my sale traffic?
To a dedicated sale landing page, not your homepage. Build a custom collection template with a grid of images, each showing a discount tier and linking to that tier's collection, then point your ads and emails there. The page should match whatever the ad promised so nobody has to hunt for the offer they clicked on.
Does breaking a sale into discount tiers hurt average order value?
Usually yes, a little. Letting shoppers browse by discount tends to raise conversion rate and lower average order value, because most people go straight to the deepest markdowns. Combining everything into one sale collection protects AOV and converts slightly softer. Choose based on the goal of the sale: break out the tiers when clearing deeply discounted inventory is the priority.