product expiry icon

Product Expiry for WooCommerce

WooCommerce plugin, free and Pro

Put an expiry date on every WooCommerce product.

Give any product or variation an expiration date, then let the plugin handle it when the day arrives. Send it to draft, set it out of stock or mark it as expired, on schedule and in your store’s timezone.

Free version on WordPress.org. Pro from $39 a year.

Read the documentation
  • 2,000+ active stores
  • Simple and variable products
  • HPOS compatible
Product Expiry panel in the WooCommerce product editor with an expiry date and on expiry action

Stop removing expired products by hand.

Sale items that should be gone are still live. Last season’s products keep selling. Perishable goods need pulling the moment they pass their sell by date.

Product expiration dates end the manual cleanup. You set the date once and your WooCommerce catalog stays current without you watching the calendar.

How WooCommerce product expiration works.

  1. Expiry date and note fields on a WooCommerce product variation
    Step 1

    Set the date

    Open any product and pick its expiry date, with an optional note like “Sold out for the season”. Each variation can have its own date.

  2. Dropdown for choosing what happens to a product on its expiry date
    Step 2

    Choose the action

    Decide what happens on the expiration date: draft, out of stock, reduce stock or mark as expired. Set it once per product.

  3. Email notification sent when a WooCommerce product expires
    Step 3

    Let it run

    The change is scheduled per product and runs at the end of the chosen day in your store’s timezone. You can get an email the moment it happens.

You decide what happens when a product expires.

Five actions, set per product or per variation. Pick the one that matches how you sell.

Action What your customers see
Leave as is Nothing changes. The expiry is recorded for your reference.
Move to draft The product is unpublished and disappears from the store.
Out of stock The page stays live, but no new orders can be placed.
Reduce stock Managed stock drops by the amount you set, kept in sync with HPOS.
Mark expired An Expired badge appears and add to cart is turned off.

Free on WordPress.org

A complete expiry workflow in the free plugin.

No add ons needed to start expiring products. Works with any well coded WooCommerce theme, without template overrides.

Download from WordPress.org
WooCommerce products list with a sortable Expiry column and expiry filters
  • Dates on products and variations

    Set an expiry date on any simple or variable product, with an optional note shown instead of the date.

  • Timezone correct scheduling

    Each product expires at the end of its chosen day in your store’s timezone, scheduled one product at a time.

  • Email alerts on expiry

    Get an email when a product expires, with your own recipients, subject and message.

  • Storefront display control

    Show or hide the expiry date on product and shop pages, choose where it appears and style the Expired badge.

  • Admin filters and email log

    Filter products by expiry window, sort by date, quick edit inline and review the last 30 days of plugin emails.

  • WPML and Polylang ready

    Expiry data syncs across translated products, with RTL support and translation ready strings.

Pro version

More control for busy stores.

Everything in the free plugin, plus exact expiry times, countdowns, customer reminders and batch tracking.

Product Expiry Pro dashboard listing upcoming and expired products
  • Live countdown timer

    Show a real countdown on product pages in three styles, with colors that shift as expiry gets closer.

  • Exact expiry time

    Set an hour and minute, not just a date, so a flash sale ends at 6:00 PM on the dot.

  • Customer reminders

    Email buyers before a product they purchased expires. One branded email per order, with duplicates removed automatically.

  • Auto discount before expiry

    Put products on sale a set number of days before expiry, by percentage or fixed amount. The price is restored afterwards.

  • Batch and lot tracking

    Track batches with quantity, supplier and lot number, listed earliest expiry first, with a recall lookup.

  • CSV bulk tools and dashboard

    Export, edit in a spreadsheet and import again to update thousands of products at once, then monitor everything from one dashboard.

Free and Pro compared.

Features included in the free and Pro versions of Product Expiry for WooCommerce
FeatureFreePro
Expiry date on products and variationsIncludedIncluded
On expiry actions (draft, out of stock, reduce stock, expired)IncludedIncluded
Storefront display and Expired badgeIncludedIncluded
Admin email on expiryIncludedIncluded
List filters and email logIncludedIncluded
WPML and Polylang syncIncludedIncluded
Exact expiry time (hour and minute)Not includedIncluded
Live countdown timerNot includedIncluded
Customer reminder emailsNot includedIncluded
Auto discount before expiryNot includedIncluded
Batch and lot trackingNot includedIncluded
CSV export and importNot includedIncluded
Pro dashboard and inline updatesNot includedIncluded

Start free, upgrade when you need more.

Begin with the free plugin on WordPress.org and move to Pro whenever your store needs it.

Free

The full expiry workflow.

$0forever

  • Expiry dates on every product and variation
  • Draft, out of stock, reduce stock or expired
  • Storefront display and email alerts
  • Filters, email log, WPML and Polylang
Download free

Pro Lifetime

Pay once and keep it.

$199one time

  • Every Pro feature, no yearly fee
  • Lifetime plugin updates
  • Lifetime support
  • A good fit for long term stores
Get Pro Lifetime

All prices are in USD. VAT or sales tax is calculated for your location at checkout. Orders are processed by Paddle, our Merchant of Record.

Reviews

What store owners say.

From the WordPress.org plugin directory, quoted as written. Read all reviews

This is an excellent tool for anyone managing perishable stock or time-limited offers in WooCommerce. The automation for switching products to draft or out-of-stock saves a massive amount of manual work.

Tanzir Review on WordPress.org

Very nice plugin, easy to use, does what it says! Excellent and fast support!

Evan Review on WordPress.org

Very good Plugin.. Thank you for this..

Shashwathi Review on WordPress.org

Built for stores that sell things with a shelf life.

Perishable goods
Food, cosmetics and supplements that must come off sale after their sell by date.
Flash sales
Limited time offers that end on time, with a countdown in Pro.
Tickets and licenses
Event tickets and digital licenses with a fixed validity window.
Seasonal lines
Holiday and summer ranges that should disappear off season.
Rentals and listings
Marketplace style stores where listings run for a set period.
Batch stock
Lots that expire on different dates, tracked batch by batch in Pro.

Plugin details

Actively maintained and tested.

Everything you need to check before installing. Both versions are updated for new WordPress and WooCommerce releases.

Free version
3.4
Pro version
1.3
Requires WordPress
6.0 or higher
Tested up to
WordPress 7.1
Requires PHP
7.2 or higher
Requires
WooCommerce
HPOS
Compatible
Translations
WPML, Polylang and RTL ready
Active stores
2,000+

Questions about product expiry.

How do I add an expiry date to a WooCommerce product?

Edit the product and open the Product Expiry tab. Pick an expiration date and the action to run when it passes. Variations have the same fields, so each one can expire on its own date.

What happens on the expiration date?

Whatever you choose for that product. It can stay as is, move to draft, go out of stock, have its stock reduced by a set amount, or be marked as expired with a badge and add to cart turned off.

Can I set a product expiration on variations?

Yes. Every variation can have its own expiry date, note and action. A variable product without its own date can show the soonest expiring variation on the parent product page.

Can I show the expiry date on the product page?

Yes. Turn the expiry date on or off for single product and shop pages, choose where it appears, set your own wording and date format, and decide what shows after a product expires.

Does product expiration follow my store timezone?

Yes. Each product expires at the end of its chosen day in your site’s timezone. Every product is scheduled individually, so nothing fires early or late.

Can I expire products at an exact time, not just a date?

Yes, in the Pro version. Set an hour and minute alongside the date, and add a live countdown timer to the product page if you want one.

Is it compatible with HPOS?

Yes. Stock and order actions run through WooCommerce CRUD methods, so High Performance Order Storage and the product lookup tables stay in sync.

Will it work with my theme?

It works with any well coded WooCommerce theme and doesn’t need template overrides. If your theme uses its own hooks, you can place the expiry date with a custom hook.

Will product expiry slow down my store?

No. There are no external API calls on the frontend and no tracking. Expiry actions run on scheduled events, not on every page load.

What is the difference between yearly and lifetime?

Both unlock every Pro feature. Yearly is $39 per year and includes updates and support for that year. Lifetime is a single $199 payment with updates and support for as long as you use the plugin.

Give your products an expiry date today.

Start with the free plugin, or unlock countdowns, reminders and batch tracking with Pro.