Skip to content

How to schedule a sale in WooCommerce (step by step)

Set sale prices that start and end on their own — for single products, variations and whole categories — and avoid the mistakes that make scheduled sales fail.

· 2 MIN READ

WooCommerce can start and stop a sale for you. Set a sale price, pick dates, and the discount appears and disappears automatically — no need to be at your desk at midnight on Black Friday. Here is how to do it properly, plus the gotchas that trip up most stores.

Schedule a sale on a simple product#

  1. Go to Products and edit the product.
  2. In the Product data box, on the General tab, enter a Sale price lower than the regular price.
  3. Click Schedule next to the sale price.
  4. Choose a From date and a To date, then Update the product.

WooCommerce applies the sale price at the start of the From date and removes it at the end of the To date. Before the sale starts, the product shows its regular price as normal.

Schedule a sale on a variable product#

Each variation has its own prices, so each variation has its own schedule:

  1. Edit the product and open the Variations tab.
  2. Expand a variation, enter its Sale price and click Schedule.
  3. Set the dates and Save changes.

To discount every variation at once, use the Bulk actions dropdown at the top of the Variations tab: choose Set sale prices (or Set sale prices – decrease by %) and then Set scheduled sale dates.

Schedule a sale across many products#

For a category-wide sale, the built-in bulk edit is the quickest route without a plugin:

  1. Go to Products, filter by category, and select the products.
  2. Choose Bulk actions → Edit.
  3. Set Sale to Set to regular price decreased by (fixed amount or %) and enter, for example, 20%.

Bulk edit doesn’t set schedule dates, so either run it when the sale starts, or set dates product by product. For large catalogs, a CSV import with Date sale price starts and Date sale price ends columns does both at once.

Mistakes that break scheduled sales#

  • Timezone mismatch. Sale dates follow the timezone in Settings → General. If that still says UTC+0 but your customers are in New York, your sale starts five hours early. Set a city, not an offset, so daylight saving is handled.
  • Caching. A full-page cache can keep serving the old price after the sale starts or ends. Purge the cache when a sale begins, or use tools that fetch prices fresh.
  • WP-Cron not running. WooCommerce uses scheduled actions to switch prices. On low-traffic sites, or where DISABLE_WP_CRON is set without a real server cron, sales can start late. Check WooCommerce → Status → Scheduled Actions for overdue items.
  • Forgetting the end date. Without a To date, the sale runs until you remove it by hand.

Make sure shoppers actually see it#

A scheduled sale changes prices — it doesn’t tell anyone. Most visitors land on a product page or a blog post, not on your sale category, so a perfectly scheduled discount can go almost unnoticed.

That’s the gap Sale Drawer fills: it detects every product WooCommerce considers on sale — including scheduled ones — and shows them in a slide-out drawer on every page, the moment the sale starts. When the sale ends, the products leave the drawer on their own. The core plugin is a free download.