How to Set Up a Recurring WooCommerce Sale (Weekly, Daily, or Seasonal) Without Re-Creating It Every Time
WooCommerce Tips
Stop Re-Creating the Same Sale Every Week
Three recurring sale setups — weekend flash sale, monthly clearance, daily deal rotation — configured once and running automatically from then on.
Here’s a scenario most WooCommerce store owners recognize: you’ve been running a weekend sale for three months. Every Thursday you edit your product prices. Every Sunday night you edit them back. You’ve done this twelve times. If you’ve missed a weekend, you know exactly how it feels — customer emails, a vague guilt, and the mental note to “set something up properly.”
WooCommerce’s built-in sale price scheduler lets you set a start date and end date. That’s it. There is no “repeat every week” or “run this every first Monday of the month.” The tool is designed for one-off sales, and most discount plugins work the same way.
This post walks through three specific recurring sale setups — a Friday-to-Sunday flash sale, a monthly clearance event, and a daily deal rotation — and shows exactly how to configure each one so it runs automatically without you touching it. The scenarios are different enough that each one reveals something the others don’t.
The actual problem with WooCommerce sale dates
WooCommerce stores sale prices per product. Each product has a “Sale price” field and optional “Schedule” date fields. When you set a schedule, the sale price becomes active between those dates and then automatically reverts.
That mechanism works fine for a two-week Black Friday promotion. It breaks down completely for anything that repeats.
The limitations are specific:
- Fixed start and end only. You can set “starts November 29, ends December 2.” You cannot set “runs every Friday through Sunday.”
- Per-product, not per-campaign. Applying a recurring sale to 40 products means setting and re-setting 40 individual schedules each cycle.
- No memory of past cycles. There’s no way to look at a product and know it ran on sale every weekend for six months. You just have to remember.
- No automation for re-activation. When a scheduled sale ends, it’s done. WooCommerce doesn’t ask “would you like to repeat this?”
The result is a maintenance burden that scales with the number of products and the frequency of the sale. A 10-product weekly sale means 20 manual operations per month (set prices, reset prices). A 50-product bi-weekly sale is 100 operations per month. Most people run out of patience somewhere in month two.
What this post covers
We’ll use Smart Cycle Discounts for the setup examples. Its recurring campaign feature is in the free version and supports daily, weekly, and monthly patterns. The concepts here transfer to any plugin that supports recurring promotions — but most don’t, at least not in free tiers.
How recurring campaigns work (and what the two modes mean)
Before jumping to the scenarios, one concept you need to understand: the difference between Continuous mode and Instances mode. It’s not just a technical setting — it changes how the campaign behaves in a way that affects your decision-making for each use case below.
Continuous mode: one campaign, repeating time windows
Think of Continuous mode like a programmable thermostat. One device. One set of rules. It turns on at a defined time, turns off at a defined time, and repeats that pattern automatically. The campaign record in your database stays the same — it just toggles active and inactive on a schedule.
Practical result: your Campaigns list shows one entry called “Weekend Flash Sale.” It’s either active (during the sale window) or inactive (between sale windows). Simple to manage. No clutter.
Instances mode: a new record per occurrence
Instances mode generates a separate campaign copy for each occurrence. Run a monthly clearance on Instances mode and you get twelve distinct campaign records by the end of the year — one for January, one for February, and so on. Each has its own analytics.
Practical result: you can answer “was the February clearance more effective than January’s?” because they’re tracked separately. The tradeoff is more entries in your campaign list over time.
The scenarios below will make it obvious which mode fits which situation.
Scenario 1: Weekend flash sale (every Friday–Sunday)
The real-world situation
You sell clothing accessories. Most of your sales happen on weekends — Friday afternoon through Sunday evening. You want a 15% discount running every Friday from 4 PM through Sunday at midnight. It should start and stop automatically. You don’t want to think about it.
This is the most common use case for recurring campaigns. It’s also where most store owners first realize they need automation, because the manual alternative is deeply tedious.
Why Continuous mode is the right choice here
You don’t need per-occurrence analytics for a weekly sale. What you care about is whether the weekend sale strategy is working over time — and you can check that by looking at weekend revenue trends in your WooCommerce analytics. Creating a new campaign record every seven days is unnecessary overhead.
Continuous mode keeps things clean: one campaign, one entry, running on its own cycle.
Step-by-step setup
Step 1 — Name the campaign clearly
Name it “Weekend Flash Sale” or something equally specific. You’ll thank yourself six months from now when you’re looking at a list of campaigns and need to know instantly what this one does. Vague names like “Sale Campaign 3” become mysterious in a hurry.
Step 2 — Select your products
If you want the entire catalog on sale: choose “All Products.” If you want specific categories: choose specific products filtered by category. For a weekend flash sale, “All Products” or a broad category usually works — the goal is to give shoppers a reason to buy this weekend specifically, so scope is fine wide.
Step 3 — Set the discount
15% is a reasonable starting point for a weekly sale. It’s meaningful enough that customers notice it without training them to wait for deeper discounts. If you find conversion doesn’t move, test 20%. If you’re worried about margin, start at 10% and measure for 4 weeks before adjusting.
Step 4 — Configure the recurring schedule
In the Schedule step, enable recurring. Set the pattern to Weekly. Select Friday, Saturday, Sunday as active days. Set the start time to Friday 4:00 PM and end time to Sunday 11:59 PM. Set the end condition to Never (or pick a future cutoff date if you want to review in three months).
Step 5 — Set mode to Continuous
Select Continuous mode. The campaign will toggle active at 4 PM every Friday and deactivate at midnight Sunday. One record. No manual work after initial setup.
Step 6 — Check the timezone
Before activating: verify your WooCommerce store timezone in Settings → General → Timezone. If your store is set to UTC and your customers are in US Eastern time, “4:00 PM” means different things. Set the timezone to match where most of your buyers are. This one detail causes most recurring schedule surprises.
Step 7 — Activate and verify the first cycle
Activate the campaign and verify that it goes active on Friday at the right time. Check one product from the campaign — it should show a strikethrough regular price and a sale price. If the campaign activates a few minutes late, that’s normal WP-Cron behavior. If it’s an hour off, the timezone is wrong.
One thing people miss with weekly flash sales
WooCommerce’s scheduling depends on WP-Cron, which only fires when someone visits your site. Low-traffic stores — particularly on Friday afternoons before the sale window opens — may see delays of 15–60 minutes. If precision matters, look at a real cron job via your hosting control panel or read more about the WP-Cron limitation here.
Scenario 2: Monthly clearance event
The real-world situation
You sell home goods and run a clearance on the last three days of every month to move slow inventory before restocking. The discount varies slightly each month (sometimes 20%, sometimes 25% depending on what needs to go), but the timing is always the same: the 29th, 30th, and 31st of the month, running all day.
You want to compare month-over-month performance: did March clearance move more units than February? Which months need a deeper discount to clear inventory?
Why Instances mode makes sense here
Unlike the weekend flash sale, a monthly clearance event is something you’ll want to analyze individually. The questions you’re asking are per-occurrence: how did this month compare to last month? Which clearance generated the most revenue? Instances mode creates a separate campaign record for each month, giving you per-event data to work with.
The tradeoff: your campaign list will accumulate entries over time. Twelve entries per year is manageable. If you’re running four different monthly Instances campaigns, that’s 48 entries per year — at some point you’ll want to archive expired ones.
Step-by-step setup
Step 1 — Name it with the event identity, not the date
Call it “Monthly End-of-Month Clearance.” When Instances mode generates copies, they’ll inherit a naming convention automatically. If you name it “March Clearance 2026,” you’ll have to manually rename it every month — defeating the purpose.
Step 2 — Select clearance-appropriate products
For a clearance, you typically want specific products — the ones you need to move. Use “Specific Products” mode and select your slow-movers. You’ll revisit this product list quarterly to swap in whatever is accumulating at the time. The campaign structure stays the same; only the product selection changes when you update it.
Step 3 — Set a starting discount and adjust monthly
Set 20% as the default. In months where inventory pressure is higher, you can edit the active campaign instance and increase the discount before the cycle starts. Instances mode allows this because each month is a separate record — you can tune one month without affecting the next.
Step 4 — Configure the monthly recurring schedule
Set pattern to Monthly. For “last three days of the month,” the cleanest approach is to target the 29th of each month and run for three days — this covers most months. Note that February only has 28 days, so the 29th won’t fire in most years. A workaround: target the 28th and run for three days, which covers February and adds a day to other months. Or simply note February as a manual exception each year.
Step 5 — Set mode to Instances
Select Instances mode. Set the end condition to “After 12 occurrences” or a specific end date one year out. This gives you a natural review point: at the end of the year, you’ll have 12 clearance instances to analyze before setting up the next year’s campaign.
Step 6 — Activate in Draft first
Save as Draft. Check the campaign settings carefully before activating — specifically that the first scheduled occurrence falls on the right date. A monthly campaign that fires on the wrong date can be hard to notice until customers start asking why the clearance sale appeared mid-month.
How to update the product list monthly without rebuilding the campaign
Once a month, before the clearance fires, open the campaign and update the specific product selection. Swap out products that sold through last month. Add anything that accumulated. The schedule and discount settings stay exactly the same — you’re only updating the product list. This takes about five minutes and keeps the clearance targeted at real inventory pressure rather than just the same products on autopilot.
Scenario 3: Deal of the day rotation
The real-world situation
You run a craft supply store with a large catalog. You want a “Deal of the Day” — a rotating set of products at 25% off, changing every 24 hours, running indefinitely. The goal is to drive repeat visits: customers come back each day to see what’s featured. You don’t want to manually pick new products every morning.
This scenario is different from the first two because the challenge isn’t just schedule automation — it’s also product rotation. Manually selecting a new “deal product” every day is just as tedious as manually changing prices every week.
The Random Products selection mode
Smart Cycle Discounts has a “Random Products” selection mode: instead of you specifying which products to discount, the plugin automatically selects a random set from your catalog each cycle. You define how many products get featured — say, 5 — and the plugin picks a fresh set each day.
For a daily deal rotation, this is the right approach. Combined with a daily recurring schedule, it creates a fully automated “today’s deals” section with zero daily manual work.
Step-by-step setup
Step 1 — Name it something customers will recognize
If you’re going to promote this on your homepage or via email, the name matters. “Deal of the Day” is clear and sets expectations. The campaign name also shows up in internal dashboards, so keep it descriptive.
Step 2 — Choose “Random Products” mode
In the Product Selection step, choose Random Products. Set the number of products to feature per cycle — 5 is a good starting number. The plugin will select a different random set each day. You can optionally filter the pool by category if you want the rotation to come from a specific part of your catalog.
Step 3 — Set the discount
25% off works well for a daily deal. It’s noticeable enough to motivate a purchase. Since the products rotate randomly, customers won’t know in advance which items will be featured — that uncertainty is part of the appeal. Keep the discount consistent so the “Deal of the Day” concept is predictable even if the products aren’t.
Step 4 — Configure a daily recurring schedule
Set the pattern to Daily, interval Every 1 day. Set the start time to 12:00 AM and end time to 11:59 PM — this covers the full calendar day. The campaign rotates its featured products at midnight each day.
Step 5 — Use Continuous mode
You don’t need per-day analytics here — you care about the strategy’s overall performance (does it increase repeat visits?) not how each individual day compared to the one before. Continuous mode keeps this clean: one campaign, running indefinitely, rotating products each cycle.
Step 6 — Create a “Today’s Deals” page or widget
The automation is only half the value. The other half is making sure customers know the deals rotate daily. Add a “Today’s Deals” section to your homepage that displays products currently on sale. WooCommerce’s built-in product blocks with “on sale” filter will show whatever’s currently discounted — which automatically reflects today’s random selection. Now customers have a reason to come back tomorrow.
What happens to carts when the daily deal rotates
If a customer adds a “Deal of the Day” product to their cart at 11:45 PM and comes back at 12:10 AM the next day, the product is no longer on sale. The cart price will update to regular price at checkout. This is technically correct behavior, but it can surprise customers. Consider adding a note on the deal page: “Today’s deals change at midnight.” It sets expectations and reduces support tickets.
How to choose between Continuous and Instances mode
The three scenarios above each lean clearly toward one mode or the other. Here’s the underlying logic:
| Choose Continuous when… | Choose Instances when… |
|---|---|
| You run the sale weekly or daily | You run it monthly or quarterly |
| You want a minimal campaign list | You want to compare performance between cycles |
| The discount stays the same every cycle | You might adjust the discount each occurrence |
| The campaign runs indefinitely | You want a defined end after N occurrences |
| You measure success by overall trend | You measure success per event (was March better than April?) |
When in doubt, Continuous is simpler. Instances is for when you have a genuine reason to look back at individual occurrences and compare them. If that comparison question isn’t relevant to how you operate, Continuous keeps things cleaner.
What tends to go wrong with recurring sales
Setting up the campaign is the easy part. Here’s what causes recurring promotions to underperform or create problems after they’re live.
The timezone drift problem
You set the campaign’s start time to Friday 4 PM. You check three weeks later and customers are getting the sale at 11 AM on Fridays. The likely culprit: your WooCommerce timezone is set to UTC, but you configured the campaign based on your local time. Check Settings → General → Timezone and make sure it reflects where most of your customers are located. This is worth verifying before activating any time-sensitive campaign, not just recurring ones.
Running too many recurring campaigns simultaneously
It’s tempting to set up a weekend sale, a daily deal, and a monthly clearance all at once. That’s fine in isolation. The problem is overlap: if your weekend sale runs Friday–Sunday and your monthly clearance happens to fall on a Saturday, the same product might be discounted by both campaigns at the same time. Use the priority system (1–5, where 5 is highest) to define which campaign wins when they overlap. Without that, behavior can be unpredictable.
Forgetting to update product selections
A monthly clearance that always discounts the same 10 products stops being useful when those products sell out or get discontinued. Build a quarterly reminder — a calendar event, a sticky note, whatever your system is — to review and update the product list for long-running recurring campaigns. The schedule automation saves you time. Keeping the product selection relevant requires a human check every few months.
Recurring discounts that train customers to wait
If your weekly sale runs 52 times a year at 20% off, a regular customer who visits once a week will quickly learn that there’s almost always a sale. After a few months, they’ll stop buying at full price. This isn’t a problem with the automation — it’s a problem with discount depth and frequency. Weekly recurring sales work best at 10–15%, not 25–30%. Save deeper discounts for genuinely special one-time events.
An honest note on automation
Recurring campaigns solve the logistics problem completely. They do not solve the strategy problem. A weekly 15% sale that doesn’t move the needle will still not move the needle when it’s automated — it’ll just fail reliably and automatically. The value of automation is that it frees up mental bandwidth to focus on the strategy questions: Is this the right discount? The right products? The right frequency? You can ask those questions when you’re not spending energy on manual price changes.
FAQ
Can I run a WooCommerce sale every weekend automatically without any plugin?
Not reliably. WooCommerce’s built-in sale price fields support a single date range per product — no repeat option. You can write custom PHP using WP-Cron hooks to trigger price changes on a schedule, but that requires development skills and ongoing maintenance when WooCommerce updates. A dedicated plugin is the practical path for most stores.
What’s the difference between a daily deal and a flash sale in WooCommerce?
Mostly framing and frequency. A flash sale typically runs for a short window (hours or a day) and is promoted as urgent and one-time. A daily deal is expected and repeating — customers know something will be discounted every day. Flash sales drive urgency through scarcity. Daily deals drive repeat visits through habit and curiosity. The underlying mechanics are the same: a time-limited discount applied to specific products.
Can I set a WooCommerce sale to repeat every Friday automatically?
Yes, with a recurring campaign plugin. You configure a weekly pattern with Friday selected as the active day, set your start and end time, and the plugin handles activation and deactivation each week. Smart Cycle Discounts includes this in the free version — choose Continuous mode so you get one campaign record that repeats rather than a new entry each week.
Does the recurring sale apply to variable products and their variations?
Yes. When a campaign targets a variable product, all variations receive the discount automatically. The strikethrough sale price shows on the product page and on individual variation selections. You don’t need to configure each variation separately.
What happens if a customer is in the middle of checkout when the recurring sale ends?
The cart reflects the current price at checkout. If the sale ends while a customer has items in their cart but hasn’t completed payment, they may see the price revert when they return. The simplest way to handle this: set your sale end time to 11:59 PM rather than midnight, so there’s a clear end-of-day cutoff that aligns with customer expectations.
Should I use a 15% or 20% discount for a weekly recurring sale?
Start at 15% and measure for 6–8 cycles before changing it. If conversion doesn’t improve, try 20%. If you’re seeing strong conversion at 15% with no sign of customers waiting for the sale, don’t increase it — you’re leaving margin on the table unnecessarily. The right number depends on your specific audience and product category. There’s no universal answer.
Can I pause a recurring campaign without deleting it?
Yes. Set the campaign status to Paused (or Inactive). The campaign record and its settings are preserved. When you’re ready to restart, reactivate it and it picks up the recurring schedule from the next occurrence forward. This is useful for seasonal pauses — you might pause the weekly sale during a major promotion like Black Friday so the discount logic doesn’t stack unexpectedly.
What if I want the monthly clearance discount to vary each month?
Use Instances mode. Each occurrence generates a separate campaign record. Before each monthly clearance fires, open that month’s instance and update the discount amount. The product selection and schedule settings are inherited from the original campaign — you only need to change the discount for that specific occurrence. This is the main practical advantage of Instances mode over Continuous for monthly events.
Key Takeaways
- WooCommerce has no native recurring sale option — its schedule fields are fixed start/end dates only, with no repeat option
- Weekend flash sales: use Continuous mode, weekly pattern, 15% discount — one campaign, runs forever, no manual work
- Monthly clearance events: use Instances mode so you can compare month-over-month performance and adjust the discount per occurrence
- Daily deal rotation: combine Random Products mode with a daily recurring schedule — product selection rotates automatically, no manual daily picks needed
- Timezone is the most common configuration mistake — verify Settings → General → Timezone before activating any time-sensitive campaign
- Keep recurring discounts moderate (10–15% weekly). Deep recurring discounts train customers to wait for sales rather than paying full price
- Automation handles logistics, not strategy. Measure after 6–8 cycles to know if the recurring sale is actually working
Set it up once
Smart Cycle Discounts includes recurring campaign scheduling — daily, weekly, and monthly patterns — in the free version. Continuous and Instances modes are both available without upgrading.