How to set up recurring sales on Shopify
A recurring sale repeats on a schedule — a weekly happy hour, a monthly clearance, a first-of-the-month promo — without you rebuilding it each time. The appeal is obvious: set the cadence once and it runs itself. The catch is that a repeating sale repeats its risks too, so the thing that matters most is that every occurrence reverts to the exact original price before the next one starts. Here’s how to set one up on Shopify and keep it clean over time.
Can Shopify run recurring sales natively?
Not with real prices. Shopify can schedule a single automatic discount or discount code to start and stop, but it can’t repeat a price change (and its revert) on a weekly or monthly cadence, and a discount applies at checkout rather than showing a strikethrough sale price on the product page. For a recurring, visible, self-reverting sale you need a scheduled-sale app.
What’s a recurring sale good for?
- A weekly “happy hour” — e.g. 20% off every Friday 6–9pm.
- A monthly clearance on a collection or a vendor.
- A first-of-the-month or payday promo.
- A recurring flash sale you want on a rhythm (see how to run a flash sale).
The point is the same each time: you set it once instead of remembering to start and stop it, week after week.
Why recurring sales drift if you’re not careful
A one-off sale that reverts a cent off is a nuisance. A recurring one that reverts a cent off every week compounds — and the errors stack:
- Revert drift. If the tool re-derives the “original” each time instead of restoring the recorded one, small rounding errors accumulate over occurrences.
- Mid-cycle edits. Change a product’s real price between runs and a careless recurrence can overwrite it, or discount from the wrong base.
- Forgotten stops. With manual repeats, one missed “end” leaves products discounted until you notice.
How to set up a clean recurring sale
Build it as a scheduled sale with a recurrence (daily, weekly, or monthly) and an explicit window, and use a tool that records the exact prior price before each run and restores that value at the end of every occurrence — so the tenth run reverts as cleanly as the first. Target by collection, tag, or vendor so the sale always covers the right products even as your catalog changes, and if margins are tight on a repeating discount, set a price floor so no occurrence ever drops below what you can afford. (For a one-off, start with how to schedule a sale on Shopify; for seasonal timing, see the Black Friday prep guide.)
Do it cleanly with Reprisely
Reprisely (Pro) runs sales on a daily, weekly, or monthly recurrence, targets products by collection, tag, or vendor so the right items are always included, and restores the exact original price — to the cent — at the end of every occurrence, with a price floor / max-discount guardrail so a repeating discount never goes below your margin. You preview the math before it runs, and a product edited mid-cycle is skipped on revert rather than overwritten — so a sale you set once keeps reverting correctly, run after run.
Frequently asked questions
- Can Shopify run recurring sales automatically?
- Not with real prices. Shopify can schedule a single automatic discount or code with a start and end date, but it can't repeat a price change (and its revert) on a weekly or monthly cadence, and it won't show a strikethrough sale price on the product. For a sale that repeats on a schedule and reverts to the exact original each time, you need a scheduled-sale app.
- What's a good use for a recurring sale?
- Anything you want to run on a rhythm without rebuilding it: a weekly 'happy hour' discount, a monthly clearance on a collection, a first-of-the-month promo, or a recurring flash sale on a vendor. The value is that it runs itself — you set the cadence once instead of remembering to start and stop it every time.
- How do I make sure prices go back to normal between recurrences?
- Each run of a recurring sale has to revert to the exact original price before the next one — otherwise drift compounds over weeks. Use a tool that records the exact prior price and restores that value (not a recalculated one) at the end of every occurrence, so the tenth run reverts as cleanly as the first.