Pick the right expiry plugin for your perishable food store
Perishable food is unforgiving online. A best-before date that slips by, a short-dated batch that sells after a fresher one, a clearance item that never gets marked down — each one is either a refund, a complaint, or money in the bin. Choosing the right WooCommerce plugin for perishable food expiry is less about feature counts and more about whether it covers the specific failure points of dated stock.
This is a criteria-based buyer’s guide. Below are the capabilities that actually matter for food and grocery stores, why each one matters, and how Sellinor’s Expiration Dates for WooCommerce meets it.
A date per product — and per variation
The baseline is an expiration date on every product. But food rarely ships in one size. A yogurt sold as a single tub and a six-pack can have different shelf lives, and a tea sold loose versus boxed will expire on different days.
So the real test is per-variation dates. Sellinor lets each variation carry its own expiration date, while variations without one inherit a default you set on the parent — useful when most sizes share a date and one or two differ. Crucially, a variable product is only hidden or set out of stock once every variation has expired; in-date sizes stay on sale. See setting expiration dates for how inheritance works.
Automatic action when the date hits
A date you have to act on manually isn’t protection. The plugin should take the product off sale by itself.
Look for a choice of actions and a lead time. Sellinor can hide the product from the catalog, set it to out of stock, or both, and you can fire that action a set number of days before expiry — so a product that’s three days out is pulled before it ever reaches the shelf-life line. The hide action applies immediately on catalog queries; out-of-stock is applied by an hourly check. Details are in expiry actions.
Cart and checkout protection
Pulling a product from the catalog isn’t enough if it’s already sitting in someone’s cart. A good plugin guards the purchase itself.
With an expiry action enabled, Sellinor blocks expired items from being added to the cart, and if a product expires while already in a cart it’s removed at checkout with a notice. That protection is immediate — it doesn’t wait for the hourly sweep — so no customer can complete a purchase of expired food.
FEFO batch rotation for multi-shipment stock
This is where generic expiry plugins fall short for food. You receive the same product in shipments with different dates, and you need the oldest stock to sell first. That’s FEFO — First Expired, First Out.
Sellinor’s Pro add-on tracks multiple batches per product, each with its own quantity, expiration date, and optional lot/batch reference. When an order comes in, stock is deducted from the earliest-expiring batch automatically, spilling into the next batch if the first runs short. If an order needs more units than your batches physically hold, the order is placed on hold with a note rather than overselling. Refunds and cancellations return stock to the correct batch. Read batch tracking for the full mechanics, and the FEFO guide for the wider concept.
Lot traceability
For food safety and recalls, you need to know which batch went on which order. Sellinor records a batch reference per lot and attaches the batch to the order (and optionally to the customer’s confirmation email), with every batch action written to an activity log. That gives you a per-product, per-order trail when you need to trace or recall a specific lot.
Automatic markdowns before expiry
Short-dated food sells if it’s cheaper. Doing that by hand across a catalog doesn’t scale.
Sellinor’s Pro add-on applies tiered percentage discounts by days until expiry — for example 10% off at 14 days, 25% at 7 days, 50% at 3 days — automatically, updating as the date approaches. An optional Expiring soon badge flags the deal on shop and product pages. Prices flow through cart and order totals like any sale. See automatic discounts, or the practical walkthrough in auto-discounting expiring products.
Visibility: reports, alerts, and a calendar
You can’t manage what you can’t see. The plugin should surface what’s expiring without you opening products one by one.
Sellinor includes a free Overview page with an expiration calendar, an “expiring soon” count, an “expired” count, and a value-at-risk figure showing the stock value tied up in soon-to-expire inventory. A sortable Expiration column on the Products list and a dashboard widget keep it in view. Pro adds a scheduled email digest (daily, weekly, or monthly) of products nearing expiry so you don’t have to check.
Bulk data tools
A real food catalog has hundreds of dated lines. Setting them one at a time isn’t viable.
Sellinor supports CSV import/export matched by SKU or ID, plus Quick Edit and Bulk Edit from the product list. With Pro, an expiration column is added to WooCommerce’s own native CSV importer and exporter, so dates ride along with your normal catalog workflow.
A free tier to start
Finally, you should be able to prove the fit before you pay. Sellinor’s free plugin covers per-product and per-variation dates, automatic actions, cart protection, frontend display, the Overview reports page, CSV tools, and the activity log. Batch tracking, FEFO, automatic discounts, and the email digest live in the Pro add-on at $79/year for one site (Agency $199/year), with a 14-day trial.
How to weigh it up
If you sell shelf-stable goods with a single date, the free tier likely covers you. If you handle multi-shipment perishables — fresh food, bakery, grocery — the batch tracking, FEFO rotation, and markdown tiers are the features that prevent waste and overselling. Match the plugin to how your stock actually arrives and expires. For a store-specific walkthrough, see the food and grocery expiry guide and WooCommerce batch tracking.
Frequently asked questions
What features matter most in a WooCommerce plugin for perishable food expiry?
Look for an expiration date per product and per variation, an automatic action that hides or stops selling expired items, cart and checkout protection so no one buys an expired product, and reporting that shows what's expiring soon. For multi-shipment stock, add FEFO batch rotation with lot numbers and automatic markdowns. A free tier lets you confirm the basics fit before paying.
Can I track different expiry dates for different product sizes?
Yes. With Sellinor's plugin each variation of a variable product can carry its own expiration date, and variations without one inherit a default you set on the parent. The product is only hidden or set out of stock once every variation has expired, so in-date sizes stay available.
What is FEFO and do I need it for perishable food?
FEFO means First Expired, First Out — you sell the stock that expires soonest before newer stock. It matters when you receive the same product in shipments with different dates. Sellinor's Pro add-on tracks a quantity and expiration date per batch and deducts from the earliest-expiring batch automatically on each order.
Can the plugin discount food before it expires?
Yes, with the Pro add-on. You define tiers by days until expiry — for example 10% off at 14 days, 25% at 7 days, 50% at 3 days — and the discount applies automatically, with an optional 'Expiring soon' badge on shop and product pages. The price updates as the date approaches and flows through cart and order totals.
Is there a free version I can start with?
Yes. The free plugin covers per-product and per-variation dates, automatic hide or out-of-stock actions, cart and checkout protection, frontend date display, an Overview reports page with a calendar and value-at-risk, CSV import/export, and a sortable product-list column. Batch tracking, automatic discounts, and email digests are in the Pro add-on at $79/year.
How does the plugin prevent overselling perishable stock?
With an expiry action set, expired items can't be added to the cart and are removed at checkout. With batch tracking, if an order needs more units than your batches physically hold, the order is placed on hold with a note instead of completing with stock you don't have.
Start tracking perishable expiry dates for free
Set best-before dates per product and per variation, pull expired stock automatically, and add FEFO batch rotation and markdowns when you're ready.
See plans & download freeOr read the documentation.