Key takeaways
- Recurring sales suit predictable shopping patterns, such as weekends or a quiet weekday, better than they suit the products you most want to sell at full price.
- A Shopify discount has one set of active dates; you can duplicate it with new dates for each run, or build a repeating Shopify Flow workflow.
- Flow's Scheduled time trigger repeats by days, weeks or months in your store's time zone, but Flow has no dedicated price action, so you build the change and the revert yourself.
- Every 30 days is not the same as monthly: the date drifts, so a sale tied to a calendar date needs its own schedule each month.
- Sale Scheduler by SalePilot repeats a sale weekly or every 1 to 90 days, restores prices after each run, and can be paused, resumed or stopped.
What is a recurring sale, and when does it make sense?
A recurring sale is the same promotion repeated on a schedule: the same products and the same price change, at regular intervals. Each run has a start and an end, and prices return to normal in between.
It makes sense when the rhythm matches how your customers shop. A weekend sale fits stores whose visitors browse on weekends. A midweek sale gives a quiet day a reason to visit. A rotating category every 14 days gives returning customers something new to check. It makes less sense for your bestsellers: if the same product is on sale every week, regular shoppers learn to wait, and the full price stops being the price people actually pay.
There's also a reference-price question. A crossed-out compare-at price tells shoppers what the product normally sells for. If a product spends more time on sale than off, that "normal" price may no longer be true, and in some countries reference-price rules look at the price you actually charged before the sale. Keep the regular price as the price you really sell at most of the time.
Which recurring sale patterns are common?
These are the patterns most worth considering, with the settings that drive each one.
| Pattern | Example schedule | Length of each run | Watch out for |
|---|---|---|---|
| Weekend sale | Every Friday at 6 p.m. | Until Sunday at 11:59 p.m. | Ads and emails must show the same end time |
| Quiet-day sale | Every Tuesday at 9 a.m. | 24 hours | Customers moving purchases from other days |
| Rotating category | Every 14 days, one collection per schedule | 3 days | Stagger the start dates so collections take turns |
| Daily deal | Every day at noon | 2 hours | Margin on products discounted every single day |
| Payday-style sale | Every 30 days | 2 days | The date drifts against the calendar |
Can you repeat a sale in Shopify without an app?
Yes, with some manual work or some building. These are the native options and what each one costs you:
- Duplicate a discount. Shopify lets you duplicate an existing discount (managing discounts), so a weekly code or automatic discount can be copied and given new active dates each week. It's simple, but someone has to do it every time, and shoppers see the discount in the cart and at checkout rather than as a crossed-out price.
- Rollouts. A Markets rollout can activate a catalog or discounts for a set period and roll them back at the end, on the Basic plan or higher. Each rollout has its own start and end, so a weekly sale means a new rollout every week.
- Shopify Flow. The Scheduled time trigger can repeat by days, weeks or months, uses your store's time zone by default, and runs at most once every 10 minutes. Flow has no dedicated action for a variant's price, so you'd use the Send Admin API request action, plus a second workflow to put the old prices back and a place to keep them.
- By hand. Set a reminder and edit prices at the start and end of each run. It works for a handful of products, and it breaks the first time the person responsible is sick or asleep.
How do you set up a weekly weekend sale?
Here's a weekend sale built with the recurring sales feature of Sale Scheduler by SalePilot, which changes product prices and compare-at prices on a repeating schedule and restores them after each run:
- Open Recurring sales and create a new one. Give it a name your team will recognize, such as "Weekend 15% Outerwear".
- Set the price change, for example Decrease price by 15%, with Set compare-at to original price so the regular price shows crossed out. Add a price ending such as .99 if you use one.
- Choose the products: all products, a collection, specific products or variants, or one advanced condition such as a tag. Add one type of exclusion if you need it.
- Set the repeat to Weekly, choose Friday, and set the start time to 6:00 p.m.
- Set the length to "until weekday": Sunday at 11:59 p.m. You can also set a length in hours (1 to 168) or days (1 to 14).
- Check the list of upcoming start and end times, then review the affected variants with their prices before and after.
- Click Start recurring sale. No prices change until the first start time.
What happens at each run of a recurring sale?
At each start time, Sale Scheduler reads your current catalog, calculates the sale prices from the prices live at that moment, applies them, and restores the previous prices automatically when that run ends. Runs start within about one minute of the scheduled time, and times follow your shop's time zone. If the shop's time zone isn't available, UTC is used and shown.
Reading the catalog fresh at every run has two practical effects. Products you add to a targeted collection are picked up at the next run. And if you change a regular price between runs, the next sale is calculated from the new price, not from an old copy.
Each run must be shorter than the repeat interval, so runs never overlap. A run that has already started always restores prices at its scheduled end, even if you pause or stop the series in the meantime.
How do you pause, resume or stop a recurring sale?
Every recurring sale has three controls, and each one behaves in a specific way:
- Pause: no new runs start, and any upcoming run that hasn't started yet is cancelled.
- Resume: the schedule continues from the next future window. Windows missed while it was paused are not made up.
- Stop: ends the series permanently. It can't be undone, and the series stays visible for your records.
A recurring sale can't be edited. To change its schedule, prices or products, stop it and create a new one. There's also no option to skip a single run: pause before the run you want to skip, and resume after its window has passed.
What about monthly and payday sales?
Repeating every 30 days is not the same as repeating on the same date each month, because months have 28 to 31 days. In a non-leap year, a sale that starts on January 25 and repeats every 30 days runs on February 24, March 26 and April 25, so it drifts away from a fixed payday.
Sale Scheduler's recurring sales repeat weekly or every set number of days, not on a day of the month. For a sale tied to a date, such as the 25th, set up a one-time scheduled sale for each month in advance; each one still starts and ends on its own and restores prices at the end. Our guide on how to schedule a sale covers the steps. If you're building your own workflow, Flow's Scheduled time trigger also offers a monthly interval.
How often should a sale repeat?
Often enough to matter, rarely enough that full price stays normal. A useful check is the share of the week a product spends on sale. A weekend sale from Friday 6 p.m. to Sunday 11:59 p.m. lasts 54 hours, about a third of the week, so products sell at full price roughly two-thirds of the time. A daily 2-hour deal leaves them at full price 22 hours a day.
Then check the margin. Take a $40 product that costs $16. At full price you keep $24, a 60% margin. At 20% off it sells for $32 and you keep $16, a 50% margin. To earn the same gross profit during the sale, you need to sell 1.5 times as many units ($24 ÷ $16). Run your own numbers with the margin calculator, and read how much discount to offer before you set the depth.
- Rotate the products or collections on sale rather than discounting the same items every week.
- Keep the depth modest for frequent sales, and save deeper cuts for rare events.
- Compare full-price sales on the days between runs with the period before you started. If they fall, the rhythm is too frequent.
- Show shoppers when each run ends with a countdown timer tied to the real end time.