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

Source: https://salesdrawer.com/blog/how-to-schedule-a-sale-in-woocommerce/ · Published 2026-09-16

> 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.

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](/download/).
