Skip to content
WooCommerce product expiration

Put an expiry date on every WooCommerce product.

Product Expiry for WooCommerce gives any product or variation an expiration date, then handles it for you when the day arrives. Send it to draft, mark it out of stock, or flag it as expired, all on schedule and in your store timezone.

2,000+ active stores // works with simple and variable products

Why it matters

Stop chasing expired stock 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 put an end to the manual cleanup, so your catalog stays current without you watching the calendar.

How it works

WooCommerce product expiration in three steps

01

Set the date

Open any product and pick its expiry date, right alongside an optional note like "Sold out for the season". Each variation can have its own date too.

02

Choose the action

Decide what should happen on the expiration date: draft, out of stock, reduce stock, or mark as expired with a badge. Set it once per product.

03

Let it run

The plugin schedules the change per product and fires it at the end of the chosen day in your store timezone. You can also get an email the moment it happens.

On the expiry date

You decide what happens when a product expires

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

keep

Leave as is

Record that it expired without changing the listing.

hide

Move to draft

Unpublish the product so it drops out of the store.

stock

Out of stock

Keep the page live but stop new orders.

reduce

Reduce stock

Lower managed stock by a set amount, synced with HPOS.

expired

Mark expired

Show an Expired badge and switch off add to cart.

Free plugin

Everything you need to expire products

A complete Woo expiration workflow with no add ons required, free on WordPress.org.

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 timezone, scheduled one product at a time.

Email alerts on expiry

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

Storefront display control

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

Admin filters and email log

Filter products by expiry window, sort the list 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 full RTL support and translation ready strings.

Pro version

Take product expiry further

Everything in the free plugin, plus the tools busy stores ask for most.

Live countdown timer

Show a real countdown on product pages in three styles, with urgency colours that build pressure to buy.

02Days
14Hrs
37Min

Exact expiry time

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

Customer reminders

Email buyers before a product they purchased expires, one branded email per order, deduped automatically.

Auto discount before expiry

Put products on sale a set number of days before expiry, by percentage or fixed amount, restored automatically.

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 re import to update thousands at once, then monitor it all from one dashboard.

Free vs Pro

See what each version covers

Feature
Free
Pro
Expiry date on products and variations
Yes
Yes
On expiry actions (draft, out of stock, reduce, expired)
Yes
Yes
Storefront display and Expired badge
Yes
Yes
Admin email on expiry
Yes
Yes
List filters and email log
Yes
Yes
WPML and Polylang sync
Yes
Yes
Exact expiry time (HH:MM)
No
Yes
Live countdown timer
No
Yes
Customer reminder emails
No
Yes
Auto discount before expiry
No
Yes
Batch and lot tracking
No
Yes
CSV export and import
No
Yes
Premium dashboard and inline updates
No
Yes
Pricing

Start free, upgrade when you are ready

Three simple plans. Begin on WordPress.org and move up to Pro whenever you need more.

Free
The full expiry workflow on WordPress.org
$0 forever
  • Expiry dates on every product and variation
  • Draft, out of stock, reduce stock, expired
  • Storefront display and email alerts
  • Filters, email log, WPML and Polylang
Download Free
Best value
Pro Lifetime
Pay once, keep it for good
$199 one time
  • Every Pro feature, no yearly fee
  • Lifetime plugin updates
  • Lifetime support
  • Best choice for long term stores

All prices are in USD. Any VAT or sales tax is calculated by your location at checkout.

Who uses it

Built for stores that sell things with a shelf life

๐Ÿงบ
Perishable goodsFood, cosmetics, supplements
โšก
Flash salesLimited time offers with urgency
๐ŸŽŸ๏ธ
Tickets and licensesFixed validity windows
๐ŸŒฟ
Seasonal linesItems that vanish off season
๐Ÿ 
Rentals and listingsMarketplace style stores
๐Ÿ“ฆ
Batch stockLots that expire by date
FAQ

Questions about product expiry

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

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

Yes. Every variation can carry its own expiry date, note, and action. A variable product with no date of its own can also show the soonest expiring variation on the parent page.

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

Yes. Each product expires at the end of its chosen day in your site timezone, scheduled per product so it fires at the right moment rather than on a shared batch.

Yes, in the Pro version. Set an hour and minute alongside the date for precise, timezone correct expiry, and add a live countdown timer on the product page.

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

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

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. Prices are in USD and any local tax is added at checkout.

Give your products an expiry date today

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

Back To Top