Expiration & Best Before Dates for WooCommerce
Track product expiration dates, best before dates, and shelf life. Auto-hide expired products, send notifications, and apply discounts automatically.
Everything you need to manage product expiration
From basic date tracking to advanced batch management and automatic discounts. Start free, upgrade to Pro when you need more.
Expiration date tracking
Set expiration dates on any product or variation — in the product editor, or right from the product list with quick edit and bulk edit.
Automatic actions
Automatically hide expired products from your catalog or mark them out of stock. Set actions to trigger before expiration.
Cart & checkout protection
When an expiry action is enabled, expired items are blocked from being added to the cart and removed at checkout, so customers can never buy a product past its date.
Batch/lot tracking
Track inventory by batch or lot number with FEFO (First Expired, First Out) automatic stock management.
Dashboard
WordPress dashboard widget and Overview page with stats cards, filterable product list, and expiration calendar. Everything at a glance.
CSV import/export
Bulk manage expiration dates via a dedicated CSV import / export page. Download every product with its date and re-upload the edited file.
WooCommerce product import/export
Adds an Expiration date column to WooCommerce’s own Products → Export and Import, so dates travel with the rest of your catalog. One file for prices, stock and expiry — no separate CSV to keep in sync.
Frontend display
Show expiration dates on your product pages. Customizable labels like "Best Before", "Use By", or "Expires".
Variable products
Give each variation its own expiration date — ideal when sizes or colors carry different batch dates — or set a parent default that dateless variations inherit. The product is hidden or set out of stock only once every variation has expired.
Email notifications
Scheduled digest (daily, weekly, or monthly) of expiring products. Configurable threshold and multiple recipients. Send a test email to verify setup.
Automatic discounts
Apply tiered discounts as products approach expiration — 10% off at 14 days, 25% at 7, 50% at 3, fully customizable — with an optional “Expiring soon” badge on the discounted products to drive urgency.
Clearance category
Short-dated, discounted products gather themselves into a storefront category you can link from your menu — a deals page that keeps itself up to date and empties as stock sells or expires.
Waste, recovery & forecast reports
See the money: value written off vs. recovered through discounts, monthly trends, which categories lose the most, and what expires in the next 7, 30 and 60 days. Export to CSV.
Activity log
A dated record of every expiry action: what was hidden, set out of stock, discounted, written off or swapped, and who changed it. Exportable to CSV.
One-click date changes & write-offs
Select products on the Overview and extend their dates, set a new date, date them from shelf life, or write the remaining stock off — without opening a single product editor.
REST API & WP-CLI
Manage expiration dates from code: a WooCommerce-native REST API to sync with ERP, POS and warehouse systems, and `wp edfw` commands for scheduled jobs and bulk migrations.
Event webhooks
Get notified the moment a product expires, is written off, or is hidden. POST a JSON payload to any URL — Slack incoming webhooks, Zapier, Make, n8n, or your own endpoint.
Category rules & shelf life
Give a category a default shelf life and expiry rules, and restocked products get their date set automatically instead of one by one.
Simple setup, powerful automation
Get started in minutes. Set your preferences once and let the plugin manage your product expiration automatically.
Set expiration dates
Add expiration dates to your products directly in the WooCommerce product editor. Supports simple products, variations, and batch tracking.
Configure actions
Choose what happens when products expire: hide from catalog, mark out of stock, or both. Set actions to trigger days before expiration.
Let it run
The plugin handles the rest automatically. Expired products are managed, notifications sent, and discounts applied without any manual work.
Enterprise batch & lot tracking
Perfect for food, pharmaceuticals, cosmetics, and any products that require batch-level inventory management. Track multiple batches per product with different expiration dates.
- FEFO stock management
First Expired, First Out - automatically deduct stock from the batch closest to expiration.
- Order integration
See which batch was allocated to each order. Full traceability for compliance and recalls.
- Batch quantity sync
Automatic stock restoration on order cancellation. Batch quantities stay in sync with orders.
- Batch history
Every batch event — created, sold, adjusted, swapped, expired or deleted — is recorded per product in the activity log.
- Batch swap on orders
Replace a batch allocation on any order line item. Swap to a different batch without cancelling — stock adjusts automatically.
See it in action
A clean, modern interface that integrates seamlessly with WooCommerce.
Choose your plan
Start free with core tracking, dashboard, and CSV export. Upgrade to Pro for batch tracking, notifications, discounts, and more.
Free
Perfect for getting started
- Core expiration tracking
- Per-variation expiration dates
- Auto hide / out of stock / both
- Cart & checkout protection
- Quick & bulk editing
- Dashboard, reports & calendar
- CSV import/export (dedicated page)
- REST API & WP-CLI
- Community support
Pro
1 site license
- Everything in free
- Batch/lot tracking & FEFO
- Automatic discounts
- Per-category rules & shelf life
- Automatic clearance category
- Waste, recovery & forecast reports
- One-click date changes & write-offs
- Email notifications
- Event webhooks
- Expiry dates in WooCommerce import/export
- Priority email support
Agency
Up to 10 sites
- Everything in Pro
- Up to 10 sites
- Need more? Get in touch
14-day money-back guarantee · Cancel anytime
Full feature comparison
| Feature | Free | Pro | Agency |
|---|---|---|---|
| Expiration date field on products | |||
| Per-variation expiration dates | |||
| One default date for all variations | |||
| Quick edit & bulk edit | |||
| Automatically hide, set out of stock, or both | |||
| Cart & checkout protection | |||
| Frontend date display | |||
| Product list expiration column (sortable) | |||
| Dashboard widget & Overview page | |||
| Expiration calendar | |||
| Search & sort the expiring report | |||
| Activity log (with CSV export) | |||
| CSV import/export (products) | |||
| Clear expiration dates in bulk | |||
| Move expired products to trash | |||
| REST API | |||
| WP-CLI commands | |||
| Batch/lot tracking & FEFO | |||
| Batch/lot shown on orders & emails | |||
| Batch history in the activity log | |||
| Change the batch on an existing order | |||
| Automatic discounts (tiered) | |||
| Expiring soon badges (with automatic discounts) | |||
| Automatic clearance category of discounted products | |||
| Per-category expiry rules | |||
| Dates set automatically on restock (from shelf life) | |||
| Waste & recovery reporting | |||
| Expiry forecast (7/30/60 days) | |||
| One-click date changes & write-offs | |||
| Email notifications (scheduled digest) | |||
| Event webhooks (Slack, Zapier, Make, any URL) | |||
| Expiration date column in WooCommerce product import/export | |||
| Priority email support | |||
| Use on up to 10 sites |
Frequently asked questions
Everything you need to know about Expiration & Best Before Dates for WooCommerce.
Does this work with variable products?
Yes! The free version lets you set an independent expiration date on each variation, or a parent default date that dateless variations inherit. The product is hidden or set out of stock only once every variation has expired.
What happens when a product expires?
You choose what happens: hide the product from your catalog, mark it as out of stock, or both. You can also set actions to trigger a certain number of days before expiration. All of these are included free.
Can I display expiration dates on my store?
Absolutely. You can show expiration dates on product pages with customizable labels like "Best Before", "Use By", or "Expires".
What is batch/lot tracking?
Batch tracking (Pro) lets you manage multiple inventory batches per product, each with its own expiration date and quantity. The plugin uses FEFO (First Expired, First Out) to automatically deduct from the batch closest to expiration.
How do automatic discounts work?
You set up discount tiers based on days until expiration (e.g., 10% off at 14 days, 25% at 7 days). The plugin automatically applies the appropriate discount and can show an "Expiring Soon" badge. This is a Pro feature.
Can I import expiration dates from a CSV?
Yes! Product-level CSV import/export is included free via a dedicated import / export page. Pro additionally adds an expiration-date column to WooCommerce's built-in product CSV importer/exporter, so you can manage expiry dates as part of your normal catalog workflow.
Is there a free version?
Yes! The free version includes expiration tracking (including per-variation dates), auto hide / out of stock / both, quick/bulk edit, an Overview with expiring and expired lists, a calendar, activity log, and CSV import/export. Pro adds batch/lot tracking, email notifications, automatic discounts, expiring-soon badges, and an expiration date column in WooCommerce's built-in product import/export.
What if Pro is not right for my store?
Pro is backed by a 14-day money-back guarantee. Buy it, install the Pro add-on alongside the free plugin, and enter your license key under Products → Expirations → Settings → License. If it does not work out for your store, email hello@sellinor.dev within 14 days of purchase and we will refund you in full. You can also cancel the subscription at any time to stop future renewals.
What's the difference between Pro and Agency?
Same features - the only difference is how many sites the license covers. Pro is $79/year for 1 site, Agency is $199/year for up to 10 sites, at launch pricing. Need more than 10? Email hello@sellinor.dev. Both include a 14-day money-back guarantee.
What is launch pricing?
We're offering special launch pricing for early adopters. Pro is $79/year (regular $99) and Agency is $199/year (regular $249). Sign up now and keep your rate for life — prices go up after launch.
Can I get a refund?
Yes. Every Pro and Agency purchase is covered by a 14-day money-back guarantee. If you’re not satisfied, email hello@sellinor.dev within 14 days of purchase for a full refund — no questions asked. Payments are processed by Lemon Squeezy, our merchant of record.
Do I need to renew every year?
Your license renews annually at the same rate you signed up at. Launch pricing customers keep their discounted rate for life. You can cancel anytime from your customer portal — Pro keeps working until the end of the year you paid for.
Do I need the free plugin if I buy Pro?
Yes. Pro is an add-on that runs alongside the free plugin rather than replacing it. Install the free version from WordPress.org first, then add Pro and activate your license key.
What kind of support is available?
Free users can get help through the WordPress.org support forums. Pro and Agency users get priority email support directly from our team.
Still have questions?
Contact us →Guides & tutorials
Step-by-step setups and industry playbooks for tracking expiration dates, rotating stock by FEFO, and clearing short-dated inventory.
Start managing product expiration today
Stop losing sales to expired products. Start managing expiration dates the smart way.
Free plan available • 14-day money-back guarantee • No credit card required