WooCommerce Tips

How to Run a WooCommerce Sale on the Same Day Every Week

How to Set Up a Recurring Weekly Sale in WooCommerce (That Runs Itself)
🔄

WooCommerce Tips

Pick One Weekday. Let the Sale Repeat Itself.

The exact setup for a short WooCommerce sale window that returns on the same weekday every week — without rebuilding dates or editing product prices.

Suppose you run a two-hour accessories promotion every Tuesday. Without recurrence, someone has to reopen the product editor or rebuild the campaign every week, enter another date range, and remember to remove the price when the window ends. The promotion is simple; the repetitive administration is the problem.

There is no native WooCommerce option to make a sale repeat. WooCommerce’s sale price scheduler is designed for one-off promotions — a start date, an end date, done. When that end date passes, the sale is over. The store has no concept of “run this every week.”

This guide owns the single-weekday use case: one repeating Tuesday deal, Wednesday members’ hour, or Thursday category promotion. For a campaign that stays active across several days, use the dedicated Friday-to-Sunday recurring weekend-sale guide. For daily, monthly, and seasonal patterns, start with the broader recurring WooCommerce sales guide.


Quick answer (for featured-snippet readers)

To run a WooCommerce sale on the same day every week, install Smart Cycle Discounts (free), create a campaign, choose Weekly recurrence, select one active weekday, set that day’s start and end times, and use Continuous mode. The same campaign then activates and deactivates in that window every week.

Why WooCommerce’s built-in scheduler can’t repeat

WooCommerce stores sale prices at the product level. Each product has a “Sale price” field and two optional date fields — “Sale price dates from” and “Sale price dates to.” When you set those dates, WooCommerce activates the sale price at midnight on the start date and deactivates it at midnight on the end date.

That mechanism works perfectly for a one-off Black Friday promotion. It has no answer for “run this every Tuesday from 10 AM to 2 PM indefinitely.”

Specifically, the limitations are:

  • One date range per product. You can set “starts November 28, ends December 1,” but not “active every Tuesday from 10 AM to 2 PM.”
  • Per-product, not per-campaign. There is no grouped campaign concept in core WooCommerce. Applying a recurring weekly sale to 30 products means updating 30 products every cycle.
  • No repeat trigger. When a scheduled sale ends, WooCommerce’s job is done. There is no “would you like to schedule the next occurrence?” step.

The manual cost compounds fast. A 20-product weekly sale means 40 manual operations per month (set prices, reset prices). At 50 products, that’s 100 operations. Most people manage it for six to eight weeks before something slips — a forgotten reset, a sale that ran an extra day, a price that stayed at 20% off for a week nobody noticed.

What you need before starting (2-minute check)

Before opening the campaign wizard, verify two things:

  1. Your store timezone is correct. Go to WordPress Admin → Settings → General → Timezone. Set it to the timezone your customers are in (or your operating timezone). This is the most common source of “the sale started at the wrong time” complaints. If the store uses UTC while buyers are in US Eastern time, “10:00 AM Tuesday” will not mean the local time you intended.
  2. Smart Cycle Discounts is installed. The free version from WordPress.org includes recurring scheduling — weekly, daily, and monthly patterns, both Continuous and Instances modes, no upgrade needed. If you’re already running another discount plugin that supports recurring campaigns, the setup concepts here transfer; the field names may differ slightly.

That’s it. If both are confirmed, you can complete the setup below in one session.

Step-by-step: run a sale on the same weekday every week

The example below creates a 10% Accessories promotion every Tuesday from 10:00 AM to 2:00 PM using Smart Cycle Discounts. It is deliberately a one-day, four-hour window so it does not compete with the separate weekend-sale walkthrough.

Step 1 — Create a new campaign

In your WordPress admin, go to Smart Cycle Discounts → Campaigns → Add New. Give the campaign a schedule-specific name such as “Tuesday Accessories 10%” or “Wednesday Member Hour.” A name that includes the weekday and offer is easier to recognize later than “Campaign 7.”

Step 2 — Select your products

In Product Selection, target the Accessories category for this example. A narrow category makes a weekly window feel like a rotating merchandising event instead of teaching shoppers that the whole store is predictably cheaper one day every week. Use All Products only when a storewide recurring offer is genuinely the strategy.

Step 3 — Set the discount

In the Discount step, choose Percentage discount and enter 10. A modest discount suits a promotion customers may see every week. If the goal is different — clearing inventory, increasing AOV, or pairing products — select the discount mechanism that matches it rather than increasing the percentage by habit.

Step 4 — Configure the recurring schedule

This is the key step. In the Schedule section, toggle Enable Recurring on. Set the following fields:

  • Pattern: Weekly
  • Active days: Tuesday only
  • Start time: 10:00 AM
  • End time: 2:00 PM
  • End condition: Never (or pick a future review date if you prefer to revisit in 3 months)

The active-day choice and time window combine into one precise rule: “active Tuesday from 10:00 AM through 2:00 PM, every week.” Selecting one weekday is what distinguishes this setup from a multi-day weekend campaign.

Step 5 — Set the recurrence mode to Continuous

For a weekly sale that repeats indefinitely, choose Continuous mode. This keeps a single campaign record that toggles active and inactive on the weekly schedule. (The alternative, Instances mode, creates a separate campaign record for each occurrence — useful for monthly events where you want to compare performance month-over-month, but unnecessary overhead for a standard weekly sale. See the next section for a fuller explanation if you need it.)

Step 6 — Review and activate

In Review, confirm Weekly, Tuesday, 10:00–14:00, and the intended end condition. Then activate the campaign. It will turn on at the next Tuesday 10:00 AM in the campaign timezone, turn off at 2:00 PM, and repeat the following Tuesday.

Step 7 — Verify the first cycle

After the first Tuesday activation, check one targeted product on the storefront. It should show the campaign price during the window and return to its normal price afterward. If it does not, check campaign status, product scope, and timezone before changing the recurrence pattern.

That’s the complete setup. After Step 7, you don’t need to touch the campaign again. It will run on its own schedule every week until you pause it, change the end condition, or deactivate it.

Continuous vs Instances — the one decision that matters

When configuring a recurring campaign in Smart Cycle Discounts, you choose between two modes. This single choice changes how the plugin tracks and stores your campaign data.

Continuous mode keeps one campaign record. The same record activates and deactivates on a weekly schedule. Your campaign list stays clean — one entry, perpetually cycling. You can check the campaign at any time to see its current status (active or inactive), but there’s no per-occurrence breakdown. Use this for a standard weekly sale where the discount, products, and timing stay the same every week.

Instances mode creates a separate campaign record for each occurrence. Week 1 gets its own record, Week 2 gets its own record, and so on. Each record carries its own analytics. This is the right choice when you need to answer questions like “was the second week of March more effective than the first?” For a standard repeating weekly sale with no per-week variation, Instances mode adds list clutter without adding useful data. Continuous is the simpler, cleaner choice.


When Instances mode makes sense for a weekly campaign

If you plan to run A/B tests — alternating discount depths week over week to find the most effective percentage — Instances mode makes that comparison tractable. Week 1 at 15%, Week 2 at 20%, compared directly in the campaign list. For a standard set-and-forget weekly promotion, Continuous is the right call.

WP-Cron timing: will it actually fire on schedule?

Smart Cycle Discounts uses WordPress’s Action Scheduler library (the same job runner WooCommerce itself uses) to trigger recurring campaign transitions. Action Scheduler runs on WP-Cron, which means it depends on site traffic to execute.

Here is what that means in practice for a weekly sale:

High-traffic stores (100+ daily visitors): WP-Cron fires frequently throughout the day. A 10:00 AM Tuesday activation will usually trigger within a few minutes of the scheduled time. For most stores, this is accurate enough that customers will not notice a delay.

Lower-traffic stores (fewer than 50 daily visitors): WP-Cron fires when traffic reaches the site. If Tuesday 10 AM is quiet, the activation may wait for the next visit. That delay matters more for a four-hour flash window than for an all-weekend promotion, so use a real server cron when the advertised opening time must be precise.

If timing precision matters for your business, the reliable fix is a server-side cron job. Most hosting control panels (cPanel, Plesk, your hosting dashboard) have a cron job scheduler. Add a job that calls wp-cron.php every 5 minutes:

*/5 * * * * wget -q -O- https://yourstore.com/wp-cron.php?doing_wp_cron >/dev/null 2>&1

With that in place, WP-Cron fires every 5 minutes regardless of traffic, and your weekly sale activation will be within 5 minutes of the configured time. The full WP-Cron guide explains the mechanics in more detail if you’re setting this up for the first time.


One timezone detail that trips people up consistently

Smart Cycle Discounts reads the timezone from the campaign settings, which defaults to the WordPress site timezone. If the site is set to UTC and buyers are in New York, “Tuesday 10:00 AM” means 10:00 AM UTC, not Eastern time. Confirm the timezone before the first short weekly window.

Three things that cause weekly sales to underperform

The setup above gets the campaign running. These are the operational mistakes that make a technically-correct recurring sale underperform or create friction over time.

Discount depth that trains customers to wait

A 25–30% discount that appears on the same weekday indefinitely eventually becomes the expected Tuesday price. Regular customers learn to wait for it. A narrow product scope, rotating category, or modest discount keeps the recurring window from replacing your normal price in shoppers’ minds.

Weekly recurring promotions work best at 10–15%. That’s meaningful enough to notice and act on, but not so deep that customers feel cheated paying full price during the week. If your margin requires a deeper discount to make the campaign worthwhile, consider running it less frequently — bi-weekly, or a genuine monthly event — rather than going deeper every week. The guide on discount fatigue in WooCommerce stores covers this dynamic in more detail.

Running it alongside conflicting campaigns

If you already have other active campaigns — a spend-threshold deal, a BOGO promotion, a new-customer discount — you need to check how they interact with the weekly sale. Two active campaigns targeting the same product can stack in unexpected ways depending on your priority settings.

Smart Cycle Discounts uses a 1–5 priority scale (5 is highest) to resolve conflicts when multiple campaigns compete for the same product. Before activating a new recurring campaign, set its priority explicitly. Don’t leave it at the default and assume the behavior you want. A brief explanation of how the priority system works is in the campaign priority documentation.

Forgetting to pause the campaign during major promotions

Your weekly 15% sale running in the background during a Black Friday 40% promotion can interfere with the experience in subtle ways — particularly if you’re using Continuous mode and the weekly campaign happens to be active during the sale window. The easiest prevention: before any major promotional event, open the recurring campaign and set its status to Paused. The campaign record and all settings are preserved; it just skips occurrences while paused. Reactivate it after the event and it picks up the weekly schedule from the next occurrence forward.

FAQ

Can I set up a recurring weekly sale in WooCommerce without a plugin?

Not through the standard admin interface. WooCommerce’s built-in sale price fields support a single fixed date range per product — there is no repeat option. You could write custom PHP using WP-Cron hooks to trigger price changes on a schedule, but that requires developer skills, ongoing maintenance as WooCommerce updates, and doesn’t scale cleanly to many products. For most store owners, a dedicated campaign plugin is the practical path.

Is recurring scheduling free or Pro in Smart Cycle Discounts?

Recurring scheduling is included in the free version of Smart Cycle Discounts. Weekly, daily, and monthly patterns are all available without upgrading, as are both Continuous and Instances modes. You can verify this on the free vs Pro features page.

Does the weekly sale apply to variable products and their variations?

Yes. When a campaign targets a variable product, all of its variations receive the discount automatically. The strikethrough sale price displays on the product page and on individual variation selectors. You don’t configure each variation separately — the campaign covers the parent product and its children in one step.

What happens if I add new products after setting up the recurring sale?

If you used the “All Products” selection mode, new products are included automatically — the campaign applies to every product in your catalog at the time it activates, including any added since the campaign was created. If you used a specific product list, new products are not included until you manually add them to the campaign’s product selection. All Products mode is the lower-maintenance choice for a broad weekly sale.

How do I skip one weekly occurrence without deleting the campaign?

Pause the campaign before that week’s window and reactivate it afterward. The campaign record and schedule remain intact while paused. This is useful during a larger promotion when the normal Tuesday offer should stay out of the way.

Can I change the discount percentage after the campaign is already running?

Yes. Open the campaign, edit the discount step, and save. If the campaign is currently active, the updated discount applies to the live window; otherwise it will be used when the campaign next activates on the selected weekday.

How precisely does the campaign activate at the scheduled time?

Smart Cycle Discounts uses WordPress Action Scheduler to trigger campaign transitions — the same reliable job runner WooCommerce uses for order processing. On a site with normal traffic, activation typically fires within a few minutes of the scheduled time. On low-traffic sites, it fires when the next visitor triggers WP-Cron, which could add 15–45 minutes. For timing-critical promotions, set up a server cron job to call wp-cron.php every 5 minutes — your hosting control panel almost certainly has this option.

Will the weekly sale show strikethrough prices on the shop page automatically?

Yes. Smart Cycle Discounts applies discounts through WooCommerce’s price filters at display time, which means the theme’s native “Sale!” badge and strikethrough pricing render automatically on shop, category, product, and search pages — the same visual treatment as a native WooCommerce sale price. This happens without any additional configuration. Note that WooCommerce’s built-in “On Sale” product filter (used in some shortcodes and third-party filter plugins) reads stored sale data from the database, not the filtered display price, so campaign-discounted products may not appear in those filters — this is a known limitation shared by all runtime-based discount plugins.


Key Takeaways

  • WooCommerce has no native “repeat” option for scheduled discounts — recurring weekly sales require a campaign plugin
  • Smart Cycle Discounts includes recurring scheduling (weekly, daily, monthly) in the free version — no upgrade needed
  • For a standard weekly sale: Pattern = Weekly, choose active days, set start/end times, select Continuous mode — configured once, runs forever
  • Set the store timezone correctly before activating — Settings → General → Timezone — a wrong timezone is the single most common source of activation timing errors
  • Continuous mode = one campaign record, repeats on schedule; Instances mode = separate record per week (use for A/B tests or per-week analytics, not for standard repeating sales)
  • WP-Cron fires on site traffic, not a true clock — for precise timing, add a server cron job that calls wp-cron.php every 5 minutes
  • Keep weekly recurring discounts at 10–15%; deeper recurring discounts train customers to wait for sales rather than paying full price
  • Pause the recurring campaign before major promotions (Black Friday, seasonal events) so it doesn’t interfere — resume it afterward, settings intact

Set it up this week

Smart Cycle Discounts includes recurring campaign scheduling — weekly, daily, and monthly patterns, both modes — in the free version. One setup. Runs itself from there.

Webstepper

The Webstepper Team

WordPress Plugin Developers

We’re a husband-and-wife team building WordPress tools that solve problems we faced ourselves running online stores. Our plugins are built from experience — no guesswork, just practical solutions.