A fair Product Expiry for WooCommerce alternative: Sellinor compared
If you’re searching for a Product Expiry for WooCommerce alternative, you’ve probably already tried — or seriously considered — the free plugin of that name by webcodingplace on WordPress.org. It’s a real, maintained plugin with a solid core job: assign an expiry date to products and variations, and automatically set the product out-of-stock, move it to draft, or email the admin when the date arrives. At the time of writing (June 2026) its WordPress.org listing shows 2,000+ active installations and a 4.5/5 average rating (from a small sample of roughly a dozen reviews — worth checking on the live listing, since those numbers move). If that’s all you need, it’s a reasonable, free choice.
This page is for merchants who want a second option to weigh — not a takedown. Below is a fair comparison with Sellinor Product Expiration Dates for WooCommerce, also free on WordPress.org, focused on the specific things that differ. Use it to decide which plugin fits your store.
What both plugins do well
It’s worth being clear about the overlap, because it’s large. Both plugins:
- Set expiration dates on simple products and on individual variations.
- Take an automatic action when a product reaches its date.
- Let you show or hide the date on the storefront, with display controls.
- Provide bulk editing of dates from the admin product list (quick edit / bulk edit), plus sorting and filtering.
- Are free on WordPress.org, each with a separate paid Pro tier.
So the question isn’t “which one has expiry dates” — both do. It’s which one’s extras match how you actually run your store.
Where Sellinor differs
Immediate cart & checkout protection
At the time of writing, Product Expiry for WooCommerce can set an expired item out-of-stock or move it to draft when the date passes. Sellinor takes an action too — Hide from catalog, Set out of stock, Both, or Do nothing — but it also guards the cart. With any action enabled, an expired item can’t be added to the cart, and if a product expires while it’s already sitting in someone’s cart, it’s removed at checkout with a notice. That protection is immediate. Sellinor’s “Hide from catalog” applies on every page load, and cart/checkout blocking applies the moment a product crosses its threshold — even in the window before its hourly out-of-stock sweep runs. If your worry is a customer completing a purchase of an item that lapsed an hour ago, this is the difference that matters.
A “days before” buffer and a configurable label
Sellinor lets you fire the expiry action a configurable number of days early (set “days before” to 3 to pull stock three days ahead of the date), independently flag products as “expiring soon,” and show a storefront date label only within a chosen window — plus an [edfw_expiration_date] shortcode for bespoke themes. These are convenience controls layered on the same core job.
A built-in Overview report with value-at-risk
Sellinor’s free Overview tab is a reporting dashboard: stat cards (products tracked, expiring soon, expired), a month calendar with per-day counts, and filter tabs for expiring/expired. Its standout is a value-at-risk figure — the stock value of products expiring within your threshold — so you can see the money tied up in soon-to-expire inventory, not just a list. There’s also a WordPress dashboard widget. (Per the developer’s own page at the time of writing, Product Expiry for WooCommerce offers a premium “expiring products” dashboard in its paid tier; the free comparison here is report-level.)
A Pro path to batch & lot FEFO
This is the biggest structural difference. In their free tiers, both plugins are built around one date per product or variation — fine for uniform shelf life or a single production run. If you receive stock in shipments that expire on different dates, Sellinor Pro adds batch & lot tracking with FEFO (First Expired, First Out): per-batch lot reference, expiry date, and quantity; orders deduct from the earliest-expiring batch first; the exact lot is recorded on the order and can appear in the customer email; and refunds return stock to the correct batch. See batch tracking and variation expiration dates for detail.
Side-by-side
The table below lists only capabilities I can state for both products. Competitor cells reflect its WordPress.org readme and the developer’s own product page at the time of writing; verify against the live listing.
| Capability | Product Expiry for WooCommerce | Sellinor Product Expiration Dates |
|---|---|---|
| Free on WordPress.org | Yes | Yes |
| Dates on simple products & variations | Yes | Yes (free) |
| Automatic action on expiry | Out-of-stock / draft / admin email (free) | Hide / out of stock / both, with “days before” buffer (free) |
| Cart & checkout blocking of expired items | Not stated on listing | Yes, immediate, when an action is enabled (free) |
| Bulk edit dates from product list | Yes (free) | Yes (free) |
| Built-in value-at-risk report | Not stated | Yes (free) |
| CSV import/export of dates | Pro (CSV bulk tools) | Free (plugin CSV) + WooCommerce CSV in Pro |
| Live front-end countdown timer | Pro | Not offered |
| Pre-expiry reminder emails | Pro | Pro (scheduled digests) |
| Per-batch / lot FEFO rotation | Not stated | Pro |
| Automatic tiered expiry discounts | Not stated | Pro |
Two honest caveats on the Sellinor side. First, at the time of writing Product Expiry for WooCommerce’s Pro tier includes a live front-end countdown timer for limited-time offers — Sellinor doesn’t offer that. If a countdown is what you’re after, that’s a point in the incumbent’s favor. Second, Sellinor’s Pro tiered expiry discounts apply dynamically through WooCommerce’s price filters, so the discounted price, strikethrough, badge, and cart totals are all correct — but those products do not populate WooCommerce’s native On Sale block or [sale_products] shortcode. Worth knowing before you assume they’ll show up in sale loops.
How to evaluate without committing
You don’t have to take a comparison table’s word for it. Both plugins are free, so install Sellinor from WordPress.org alongside (or instead of) the one you have, set a date a minute in the future on a test product with an expiry action enabled, and try to buy it. Dates are stored as standard product metadata, and free CSV import/export matches by product ID or SKU — so moving existing dates over is a single import, and there’s an opt-in delete-on-uninstall if you decide it isn’t for you.
If you only need a date field with an out-of-stock or draft action, the incumbent does that for free and does it well. If you want cart-level protection, a value-at-risk view of your at-risk stock, and a clear road to batch FEFO as your store grows, Sellinor is the alternative worth trying. For a broader rundown, see how to choose the best WooCommerce expiration date plugin.
Frequently asked questions
What is a good Product Expiry for WooCommerce alternative?
Sellinor Product Expiration Dates is a free WordPress.org alternative built around the same core job — assigning expiry dates to WooCommerce products and acting when they lapse. Where it differs is cart and checkout protection (an expired item can't be bought even before the hourly stock sweep runs), a built-in Overview report with a value-at-risk figure, and a Pro upgrade path to per-batch FEFO rotation. Product Expiry for WooCommerce is also a capable free option, so the right pick depends on which of those extras matter to your store.
Is the Product Expiry for WooCommerce plugin free?
Yes. Product Expiry for WooCommerce by webcodingplace has a free tier on WordPress.org, and the developer sells a separate Premium/Pro version on its own site (listed at $39/year single-site and a $199 lifetime license at the time of writing; the WordPress.org listing does not state Pro pricing). Sellinor Product Expiration Dates is also free on WordPress.org, with a Pro tier from sellinor.dev. Verify current prices on each developer's live page before deciding.
Does Sellinor support expiration dates on product variations?
Yes, in the free version. Each variation can carry its own expiration date, and any dateless variation inherits the default you set on the parent variable product. A variable product is only hidden or set out of stock once every variation has expired — until then it stays available, and an individual expired variation simply becomes unselectable.
Can either plugin stop an expired product from being purchased?
Both can take an expiry action — at the time of writing, Product Expiry for WooCommerce's listing and the developer's page describe setting an expired product out-of-stock or moving it to draft, and Sellinor can hide it from the catalog and/or set it out of stock. Sellinor additionally guards the cart: when an expiry action is enabled, an expired item can't be added to the cart, and a product that expires while already in a cart is removed at checkout with a notice — immediately, even before its hourly out-of-stock sweep runs.
Does Sellinor handle batches and lot tracking?
Yes, in Pro. You record multiple batches per product, each with its own lot reference, expiry date, and quantity. Orders deduct from the earliest-expiring batch first (FEFO), the exact lot is recorded on the order and can be shown in the customer email, and refunds return stock to the correct batch. This is the main capability that goes beyond a single date per product.
Do I have to migrate my existing expiry dates to switch?
You don't have to start from scratch. Sellinor stores expiration dates as standard product metadata and includes free CSV import/export that matches rows by product ID or SKU. If you can export your current dates to a CSV with an ID/SKU column and a YYYY-MM-DD date column, you can import them in one pass — there's no field-mapping step.
Try the alternative before you commit
Install the free Sellinor Product Expiration Dates plugin from WordPress.org, set a date and an expiry action, and watch an expired item get blocked at checkout. Add Pro later for batch FEFO, automatic markdowns, and email digests.
See plans & download freeOr read the documentation.