WooCommerce schedule sale: how to set the dates so the sale ends by itself

You schedule a sale in WooCommerce on the sale price: enter the price, click Schedule and set the from and to dates. WooCommerce switches that price on and off by itself. But the free shipping threshold, banners and sale prices entered without dates have no end date. Coupons have their own expiry date, which is counted differently from prices.

Author: The TellMyShop team. A guide for WordPress site and WooCommerce store owners: the cause, the manual fix and the same work in a chat conversation.
Last updated: · 6 min read

Monday after the sale

Monday, 8:30. The weekend sale ended at midnight on Sunday. Coffee in hand, you open the store and see that half the garden lamps still have a struck-through price. The code AUTUMN20 stopped working in the night from Saturday to Sunday, and you have three emails from customers in your inbox. Free shipping over €25 still applies, even though it is normally over €49.

Nothing broke here. WooCommerce did exactly what it was set to do. Some products got a sale price with an end date, and some without, because they were added to the sale at the last minute. The coupon was given an expiry date of Sunday. You changed the shipping threshold by hand, and nothing is going to restore it.

What in WooCommerce has an end date, and what doesn't

Sale itemHas an end dateHow the end worksWhat to watch for
Sale price of a simple productyes, when you click Schedulethe last day lasts until 23:59a price entered without dates lasts forever
Sale price of a variationyes, separately in each variationas aboveit's easy to miss one colour or size
Couponyes, the expiry datethe code stops working at 00:00 on the expiry dateenter the day after the sale ends
Free shipping thresholdnoit has to be changed by handnote the previous value
A “Sale” category or bannernostays until you take it downa redirect or a content change after the sale
Discounts from sale pluginsdepends on the pluginthe plugin's own schedulecheck its settings

You'll find a description of the date fields in the WooCommerce documentation on product editor settings. The WooCommerce guide to creating coupons covers coupons, their restrictions and the expiry date.

How to plan a sale so it ends by itself

  1. Write down what you're changing. The list of products, the discount, the coupon, the shipping threshold and the old value of each. Without this list you'll be guessing after the sale.
  2. Set sale prices with both dates. In variations too. No sale price without an end date, even for products added at the last minute.
  3. Set the coupon to expire the day after the sale ends. A sale until Sunday means an expiry date of Monday.
  4. Note the changes without dates (shipping threshold, banners, menu) and set yourself a reminder for the first day after the sale.
  5. The day before the start, check two products, including one variable product, and check that the coupon works in the basket.
  6. The morning after the sale ends, search for products still on sale and check the coupons and shipping.

A scheduled price is switched on and off by a WordPress background task. On a site with little traffic it can run late, because such tasks are triggered by site visits. If the site has page caching, a customer may also see the old price on the product page for a while. So the morning after the sale, check a few products yourself.

A sale on a whole category and on variations

WooCommerce has no single admin field for “sale on this category from Friday to Sunday”. The date is set in the price of each product, and in variable products in each variation. With a few products that is a few minutes of clicking. With a category of dozens of products in three colours, it's easy to miss one variation, which then stays on sale for weeks.

You have three options. Bulk edit on the product list sets a sale price for many simple products, but you can't enter dates there. A CSV file lets you enter prices and dates for every row, variations included. A sale plugin applies a discount to a whole category on its own schedule. Whichever route you take, check the list of products on sale afterwards: it is the only reliable test that nothing has been left behind.

Omnibus: the seller's duty, a separate plugin

In the EU, the rules require that a price reduction notice shows the lowest price from the 30 days before the reduction. The details are in the Omnibus Directive (EU) 2019/2161. How to show it on the page is explained by national consumer authorities, and a KPMG legal alert summarises one regulator's position. WooCommerce doesn't calculate this, and neither does TellMyShop. A separate plugin usually does it, so check that your store has one before your first sale starts.

How the chat sets up and cleans up a sale

The TellMyShop plugin for WordPress and WooCommerce sets sale prices with a start and end date for a list of products or a whole category, variations included. The ready task “Clean-up after a sale” does the morning review from our scene. It checks what was changed for the sale, which products are still on sale, which coupons are active and what the free shipping threshold is.

You: Clean up after the weekend sale.

Your chat: I found three things left over from the sale.

The AUTUMN20 coupon has expired, nothing to do.

You: End the sales and restore the threshold.

Your chat: The two previews are above. I'll save it after your ‘yes’ and give you the operation numbers for undoing.

Card status: waiting for your “yes”
change preview

Garden lamps: 14 products on sale with no end date.

old version: sale price €19.99, no end

new version: sale ended, regular price €24.99

Free shipping, Courier: threshold lowered for the sale.

old version: over €25

new version: over €49, as before the sale

Illustration: products, numbers and replies are examples.

Prices, sales, coupons, stock and shipping need the Sales switch. The owner turns it on in the plugin panel, and it stays on until they turn it off. In TellMyShop Pro your chat (Claude or ChatGPT) reads coupons and shipping settings even without the switch and prepares a preview, but saves changes only once it is on. In the free TellMyShop Free version, the chat sees product prices and sale dates, but not coupons or shipping settings. So you can ask for a list of products that are still on sale or have no end date. You then check coupons and the shipping threshold yourself in the admin. The ready task “Clean-up after a sale” works in TellMyShop Pro with the Sales switch on: the chat saves changes after your agreement, and you can undo the whole sale operation from the change history. When setting up a discount, it reminds you about the lowest-30-day-price plugin and that price comparison sites will pick up the new prices. Details are on the TellMyShop for WordPress and WooCommerce page, prices on the pricing page.

If you raise regular prices before a sale, see the post on bulk price changes. We describe the plan for the whole November campaign, from choosing products to cleaning up, in the guide to Black Friday in WooCommerce, and codes that won't apply in the basket in the post WooCommerce coupon not working. Other guides for WooCommerce stores are on the blog.

Questions and answers

How do I set up a timed sale in WooCommerce?

When editing the product, in the product data, enter a sale price and click the Schedule link. Two dates appear: from and to. WooCommerce switches the sale price on on the first day and off after the last one. For variations you set the dates separately for each variation.

Why are prices still discounted after the sale has ended?

Most often because some products got a sale price without an end date. That price lasts until you remove it. The second reason is page caching: the store already has the regular price, but the old product page is still in the cache. Less often, the background task runs late on a site with little traffic.

Until when does a coupon with an expiry date work?

In WooCommerce a coupon stops working at midnight at the start of the day you enter as the expiry date. If the sale runs until Sunday inclusive, enter Monday. This is a common mistake that makes a code stop working a day early.

Does the free shipping threshold come back by itself after a sale?

No. The free shipping threshold in a shipping method has no end date. If you lowered it for the sale, you have to restore it by hand once the sale is over. So note the old value before changing it.

Does TellMyShop work out the lowest price from the 30 days before a sale?

No. The duty to show the lowest price from the 30 days before a price reduction lies with the seller, and in WooCommerce a separate plugin handles it. The chat reminds you about it when setting up a sale, but it doesn't calculate or display that price.

WordPress is a trademark of the WordPress Foundation. WooCommerce is a trademark of Automattic Inc. Claude is a trademark of Anthropic PBC. ChatGPT and OpenAI are trademarks of OpenAI. TellMyShop is not affiliated with these companies.

TellMyShop for WordPress and WooCommerce

Your chat reads the site, shows every change before saving it and saves only after your yes. You can undo most changes with one sentence. Works with Claude or ChatGPT, free accounts included.

Read next