WooCommerce Tips

How to Set Up a ‘Deal of the Day’ in WooCommerce Using Random Product Rotation

How to Set Up a 'Deal of the Day' in WooCommerce Using Random Product Rotation
🎉

WooCommerce Tips

The Deal That Picks Itself

How to run a WooCommerce deal of the day that rotates products automatically โ€” so you never have to pick the featured items manually, and customers always have a reason to come back tomorrow.

A “deal of the day” sounds like a marketing tactic, but structurally it’s a behavioral pattern: give customers a reason to check your store every day, and a small group of them will. The repeat visit is the goal. The discount is the trigger.

The problem is execution. Most stores that try a deal of the day end up manually selecting the featured product each morning, remembering to set the discount, and then either forgetting the next day or burning out after a week. The promotion collapses under its own maintenance cost.

There’s a better way to think about it. The product selection shouldn’t be a daily decision โ€” it should be automated. Combined with a recurring daily schedule, you can set up a rotating deal of the day once and let it run indefinitely. This post walks through exactly how to do that, including the specific edge cases that trip people up.

What actually makes a deal of the day work

A WooCommerce deal of the day works when it creates a genuine reason to return. That sounds obvious, but the mechanics behind it are worth understanding โ€” because they shape every decision in the setup.

The return-visit pattern

Customers don’t return to your store out of loyalty alone. They return because they expect to find something. A deal of the day sets that expectation: “something is on sale today, and it wasn’t yesterday.” That’s enough to drive a daily check-in for a subset of your customers โ€” particularly regulars and bargain-seekers.

The key word is different. If the same product is discounted every day, the deal of the day stops being daily. It becomes a permanent discount, and customers either buy it once or ignore it. The variation is what creates the habit.

The predictability-vs-surprise balance

There’s a counterintuitive tension in daily deals. You want the promotion to be predictable enough that customers trust it will be there โ€” “there’s always a deal of the day” โ€” but surprising enough in its product selection that each day feels worth checking. Both sides need to be true simultaneously.

The right setup achieves this by making the structure predictable (always a deal, always at the same discount, always changing at midnight) while the product selection is genuinely unpredictable. Customers learn the rhythm without getting bored by the rotation.

The two ways it fails

Most deal-of-the-day setups fail for one of two reasons. Understanding both helps you avoid either.

Failure mode 1: Always the same products

You pick five products manually, discount them, and forget to change them next week. Two weeks later those same five products are still “today’s deal.” Customers who visited early in the campaign saw it. Customers who check back see the same thing. The return-visit habit never forms because there’s nothing new to come back for.

This is the most common failure. It happens because manual product selection is a friction point, and friction kills consistency.

Failure mode 2: So random it feels arbitrary

The opposite problem: rotation that feels like it has no logic. A high-end camera one day, a kitchen sponge set the next, then a dog toy. The lack of coherence confuses customers about what kind of store they’re shopping in and what the deal of the day actually means.

Pure randomness across your entire catalog isn’t always better than no randomness. If your catalog is narrow or well-defined โ€” all outdoor gear, all craft supplies, all skincare products โ€” randomness works cleanly. If your catalog is very mixed, you may want to constrain the random pool to a specific category so the deals feel coherent even when they vary.

How random product rotation solves the problem

Smart Cycle Discounts includes a “Random Products” selection mode (available as of version 2.0.3) that handles the manual-selection problem directly. Instead of you specifying which products to discount, the plugin draws a random set from your catalog โ€” or from a category you specify โ€” each time the campaign activates.

You define how many products get featured per cycle. The plugin picks a fresh random set each day. You never touch the product list after the initial setup.

Combined with a daily recurring schedule, this gives you a deal of the day that is genuinely automatic on both axes: the schedule fires on its own, and the product selection rotates on its own. The campaign you configure on day one will still be running, rotating fresh products, six months from now without any intervention.


Free feature

Both Random Products selection and recurring daily scheduling are included in the free version of Smart Cycle Discounts. You don’t need to upgrade to run a fully automated daily deal.

Step-by-step: setting up a rotating daily deal

Here’s the complete setup using Smart Cycle Discounts’ 5-step campaign wizard. The concept applies to any plugin that supports random product selection and recurring schedules, but those two features together are uncommon โ€” most discount plugins require you to specify products manually.

Step 1 โ€” Name the campaign clearly

Call it “Deal of the Day” or something equally specific. The campaign name is what you’ll see in your dashboard list six months from now, and it may appear in your store’s promotional banners or widgets. Clarity here saves confusion later. If you’re running multiple daily deal campaigns for different product categories, name them accordingly: “Deal of the Day โ€” Clothing,” “Deal of the Day โ€” Home Goods.”

Step 2 โ€” Choose Random Products mode and set the count

In the Product Selection step, choose Random Products. Set the number of products to feature each day โ€” 3 to 5 is a reasonable starting range. Fewer products creates stronger focus; more products broadens appeal but dilutes the “deal” feel. If you want to constrain the random pool to a specific part of your catalog, filter by category here. This is how you solve the “arbitrary rotation” problem from earlier: the plugin picks randomly, but only from within a coherent product group.

Step 3 โ€” Set the discount

Choose a discount type (percentage off or fixed amount) and set the value. For a daily deal, 20โ€“25% off is a common range โ€” meaningful enough to motivate action, not so deep that it erodes your margin daily. Whatever you choose, keep it consistent. Part of what makes a daily deal trustworthy is that customers know what to expect: not which products, but what kind of deal. “Always 25% off something” is a predictable promise even when the something changes.

Step 4 โ€” Configure a daily recurring schedule

In the Schedule step, enable recurring and 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 and gives customers a clear midnight cutoff. Each day at midnight the campaign deactivates and reactivates, and the random product selection is drawn fresh for the new cycle. Set the end condition to Never unless you have a specific end date in mind.

Step 5 โ€” Use Continuous mode

Set the recurrence mode to Continuous. For a daily deal, you don’t need per-day analytics in the form of separate campaign records. You care about the strategy’s overall performance โ€” does it increase repeat visits? Does it drive sales on slow days? Continuous mode keeps your campaign list clean: one entry, running indefinitely, rotating products each cycle. If you ever want to compare specific days, WooCommerce’s native analytics filtered by date will give you that without needing individual campaign instances.

Step 6 โ€” Verify your timezone before activating

Before activating, check your WooCommerce store timezone under Settings โ†’ General โ†’ Timezone. If your store is set to UTC and your customers are in a different zone, “midnight” means different things. For a deal that resets at midnight, the timezone you use defines when “today” starts for your customers. Set it to match where most of your buyers are located. This one step prevents a surprisingly common problem where the “daily” deal rotates at 3 AM or 7 AM local time rather than midnight.

Step 7 โ€” Activate and verify the first rotation

Activate the campaign and confirm it’s live. Check that the randomly selected products show the discounted price with strikethrough formatting. Note which products were selected on day one โ€” you won’t know in advance, and that’s the point. On day two, check again. The product selection should have rotated to a fresh set. If the same products appear two days in a row, that’s within the expected behavior of random selection โ€” with a small catalog or a small random count, repetition can happen by chance. It doesn’t mean the rotation isn’t working.

What to do when a randomly selected product is out of stock

This is the practical edge case that daily deal setups tend to underestimate.

Random Products mode draws from your catalog at the time the campaign activates. If a product in that day’s random selection is out of stock, it still receives the discounted price โ€” the campaign doesn’t automatically skip out-of-stock products. The discount is applied, but customers who land on that product page can’t actually buy it.

That’s not a bug. It’s how WooCommerce discount campaigns work generally: the sale price and the stock status are independent properties. But for a daily deal specifically, it creates a visible problem โ€” customers click on what looks like today’s featured deal and hit an “out of stock” dead end.

There are a few practical ways to handle this:

  • Constrain the random pool to in-stock categories. If you know certain product categories are reliably stocked, filter the random selection to those categories. Your craft supply basics won’t go out of stock the way your limited-edition items might. Using a category filter in the Random Products setup effectively constrains the pool to products you’re confident will be available.
  • Increase the random count slightly. If you feature 5 products per day and one is occasionally out of stock, customers still have 4 accessible deals. A random count of 5โ€“8 provides buffer without making the page feel like a clearance dump.
  • Use Campaign Intelligence. Smart Cycle Discounts flags stock exposure in its Campaign Intelligence panel. If the system detects a high proportion of your randomly selected products are low-stock or out-of-stock, it surfaces that as a caution. Checking the intelligence dashboard periodically lets you catch this pattern before customers do.
  • Review the campaign monthly. Once a month, look at which products have been featured and whether stock issues came up. If your catalog has a small core of reliably-stocked products, you might want to constrain the random pool to that group rather than drawing from everything.

For a deeper look at what happens to a WooCommerce campaign when a product sells out mid-cycle, this guide covers the exact behavior and a troubleshooting checklist.


Cart timing edge case

If a customer adds today’s deal to their cart at 11:50 PM and returns after midnight, the product is no longer discounted โ€” today’s deal has ended and a new random selection has started. The cart price updates to the regular price at checkout. Add a short note near your “Deal of the Day” section: “Today’s deals change at midnight.” It sets expectations and reduces support questions.

The honest scheduling caveat

WooCommerce scheduling โ€” including the midnight activation and deactivation of your daily deal โ€” runs through WP-Cron, which is a pseudo-scheduler that only fires when someone visits your site. On low-traffic stores, the midnight rotation may happen at 12:05 AM or 12:30 AM rather than exactly at midnight, depending on when the first visitor arrives after the hour.

For most stores, this is a minor inconvenience. “Deal of the day” customers don’t expect millisecond precision. If the deal changes sometime around midnight, the concept still holds.

If timing precision matters โ€” say you’re promoting the rotation actively on social media and customers will be checking exactly at midnight โ€” you can replace WP-Cron with a real server cron job via your hosting control panel. This post explains exactly how WP-Cron works and when to switch to a real cron job โ€” it’s worth reading before you commit to precise scheduling promises.

For the vast majority of daily deal setups, WP-Cron is fine. The rotation happens, customers see fresh deals, and the small timing window between midnight and the first visitor is invisible to everyone.

Surfacing the deal to customers

Automation handles the discount side. The other half of a successful daily deal is making sure customers actually see it.

A “Deal of the Day” section on your homepage

The simplest approach: add a WooCommerce “Products on Sale” block to your homepage. This block automatically shows whatever is currently discounted โ€” which, with your rotating daily deal active, reflects today’s random selection. No manual updates needed on your end; the block reads live sale prices and updates itself.

Position it prominently โ€” above the fold if your homepage design allows. Customers should see the deal without scrolling.

A dedicated “Today’s Deals” page

A dedicated page gives you a URL to share in email newsletters, social posts, and push notifications: “See today’s deals at yourstore.com/todays-deals.” Add the “on sale” product block here and update your email footer to link to this page. Even a weekly mention in your email โ€” “today’s deals are live” โ€” can drive a consistent habit among newsletter subscribers without requiring you to say which products are on sale (because you don’t know, and that’s fine).

Site-wide badge

A small banner or callout in your store header โ€” “Deal of the Day: check what’s on sale today” โ€” with a link to the deals page creates passive visibility. Customers who weren’t thinking about deals are reminded. The call to action is curious rather than urgent: “see what’s on sale” rather than “BUY NOW BEFORE IT’S GONE.” That tone fits the daily deal concept better โ€” it’s a habit, not an emergency.


Promotion cadence

You don’t need to mention the daily deal in every email or social post โ€” that gets exhausting for both you and your customers. Mention it in a weekly newsletter roundup (“this week’s daily deals included…”), then let the homepage and dedicated page do the ongoing work. Occasional reminders beat constant promotion, and customers who’ve discovered the habit will check without prompting.

FAQ

Does a WooCommerce deal of the day need a plugin?

For a truly automated deal of the day โ€” where products rotate without manual selection โ€” yes, you need a plugin. WooCommerce’s built-in sale price scheduler supports a fixed start date and end date per product; there is no repeat option and no random selection. You can simulate a daily deal by manually picking products each morning and editing their sale prices, but that manual work is exactly what makes daily deals unsustainable for most store owners.

What does “random products” actually mean in practice?

When you configure Random Products mode in Smart Cycle Discounts, you set a count โ€” say, 5 products. Each time the campaign activates (in this case, each day at midnight), the plugin draws 5 products at random from your catalog or from the category filter you specified. The selection changes each activation cycle. You don’t influence which products are chosen; the plugin handles it automatically at runtime.

Can I limit the random pool to specific product categories?

Yes. In the Product Selection step, you can filter the random pool by category. This means “pick 5 random products, but only from my Accessories category” rather than drawing from everything. This is useful for keeping the daily deal thematically coherent, and practically useful for avoiding stock issues in product categories you know are reliably stocked.

Will the discount show as a strikethrough sale price on the product page?

Yes. Smart Cycle Discounts applies discounts through WooCommerce’s price filters, so discounted products show the standard strikethrough pricing โ€” regular price crossed out, sale price shown โ€” on shop, category, and product pages, just like a manually set sale. (Campaign discounts apply at display time rather than being written to the stored sale price, so they won’t populate WooCommerce’s native “On Sale” shortcode/block or filter plugins that read stored sale data.) This is still a meaningful difference from plugins that apply discounts at checkout only, where the product page shows full price.

What happens if the same product is selected two days in a row?

That’s possible with random selection, especially if your random count is high relative to your catalog size or your category filter is narrow. From a customer’s perspective, it’s a minor issue โ€” they see the same deal two days in a row rather than a fresh one. If you’re concerned about repetition, there are two practical fixes: increase the category pool (more eligible products means lower chance of repeats) or increase the random count slightly so even if one product repeats, the others are fresh.

How is a deal of the day different from a flash sale?

Mostly framing and intent. A flash sale is typically promoted as a time-limited urgency event โ€” “sale ends tonight.” It drives immediate action through scarcity signals. A deal of the day is an ongoing, expected pattern โ€” customers know there will be a deal tomorrow too, and the day after. Flash sales are good for clearing inventory or driving a spike. Daily deals are better for building a repeat-visit habit over time. The underlying discount mechanics are similar; the behavioral outcome is different. For how to run flash sales in WooCommerce, this post walks through the setup.

Should I use a high or low discount for a daily deal?

Moderate discounts work better for recurring daily deals than deep ones. A daily 25% off something meaningful is compelling. A daily 50% off trains customers to see your regular prices as fictitious. There’s no universal right answer โ€” it depends on your margins, your product category, and what your customers respond to. Start at 20โ€“25%, run it for 6โ€“8 weeks, then look at whether repeat visits and conversion on deal products changed. Let the data guide adjustments rather than intuition alone.

Can I run a deal of the day alongside other campaigns?

Yes, with some care. A daily deal campaign runs simultaneously with any other active campaigns. If a product selected for today’s deal also appears in a separate campaign (say, a weekend sale), both discounts compete for that product. Smart Cycle Discounts resolves this through the priority system: the campaign with the highest priority setting (1โ€“5, where 5 is highest) wins. Set your daily deal to a specific priority and make sure any campaigns that should override it are set higher, and vice versa. The recurring sale setup guide covers how Continuous and Instances modes interact with multiple simultaneous campaigns in more detail.


Key Takeaways

  • A deal of the day works by creating a repeat-visit habit โ€” it needs to be different enough each day to be worth checking, and predictable enough in structure to be trusted
  • The two failure modes are always-the-same-products (no rotation) and completely-arbitrary-rotation (no coherence) โ€” category filtering solves the second one
  • Random Products mode + a daily recurring schedule gives you full automation: the plugin picks the products and activates on schedule, with no manual daily work
  • Random Products mode does not automatically exclude out-of-stock items โ€” increase the random count or filter by reliably-stocked categories to minimize customer dead ends
  • WP-Cron means the midnight rotation may happen a few minutes late on low-traffic stores โ€” for most daily deals, this is acceptable; for precision timing, use a real server cron job
  • Keep the discount consistent (same percentage every day) even as the products rotate โ€” the predictable structure is part of what makes the deal trustworthy
  • Both Random Products selection and recurring daily scheduling are free in Smart Cycle Discounts โ€” no Pro upgrade required

Set up your daily deal once

Smart Cycle Discounts includes Random Products selection and recurring daily scheduling in the free version. Configure it once โ€” products rotate automatically from then on.

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.