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
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.
WooCommerce product expiration in three steps
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.
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.
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.
You decide what happens when a product expires
Five actions, set per product or per variation. Pick the one that fits how you sell.
Leave as is
Record that it expired without changing the listing.
Move to draft
Unpublish the product so it drops out of the store.
Out of stock
Keep the page live but stop new orders.
Reduce stock
Lower managed stock by a set amount, synced with HPOS.
Mark expired
Show an Expired badge and switch off add to cart.
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.
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.
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.
See what each version covers
Start free, upgrade when you are ready
Three simple plans. Begin on WordPress.org and move up to Pro whenever you need more.
- 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
- Exact expiry time and live countdown
- Customer reminders and auto discount
- Batch tracking, CSV tools, dashboard
- One year of updates and support
- 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.
Built for stores that sell things with a shelf life
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.