Launch pricing: Lock in Pro at $79/yr before prices go up View pricing →

Best before, use by, and sell by — what each date means and how to manage it

“Best before,” “use by,” and “sell by” get used as if they’re interchangeable, but they mean three different things — and for a seller, mixing them up creates real problems: misled customers, compliance risk, and either waste or complaints. This guide explains what each date actually means, the line between quality and safety, and how to label and manage each one on an online store.

The one distinction that matters most: quality vs safety

Two of these dates are about quality, one is about safety, and one is really about logistics. Get that straight and the rest follows.

  • Best before is a quality date. The product is generally still safe after it, but it may lose peak flavour, texture, crunch, colour, or potency. It’s used on shelf-stable foods, dry goods, drinks, and supplements — things that degrade gradually rather than become dangerous.
  • Use by is a safety date. It’s reserved for higher-risk, perishable items where eating or using the product past the date carries genuine risk. It should not be passed, and stock shouldn’t be sold after it.
  • Sell by is a rotation instruction aimed at you, not the shopper. It marks the last day you should display or ship an item so the customer still has usable life left at home. It’s normally shorter than the true best-before or use-by date, and it’s typically kept back-of-house.

If you remember nothing else: best before = still fine, just past its best. Use by = stop. Sell by is your internal cut-off, set earlier than either.

Best before, in practice

Most of what a non-perishable store sells carries a best-before date. The product doesn’t become unsafe on the day; it slowly drifts away from its peak. That has a practical upshot for sellers — passing the best-before date doesn’t automatically mean you must destroy stock or stop selling, depending on the product and your local rules. Many shops legitimately clear shelf-stable goods at or after best-before, clearly communicated.

Because it’s a quality signal, you have room to manage it: discount as it approaches, prioritise it in fulfilment, or quietly retire it. The judgement call is yours, which is exactly why automation should support a decision rather than force one.

Use by, in practice

Use-by dates leave far less room. They appear on perishable, higher-risk items, and the expectation is firm: don’t sell, ship, or consume past the date. For a seller this is the date you most want enforced automatically, because a missed manual check here isn’t a stale biscuit — it’s a safety and liability problem. The safest setup is one where an item past its use-by date simply can’t be bought, with no reliance on someone remembering to pull it.

Sell by: the date customers shouldn’t see

Sell-by trips people up because it looks consumer-facing but isn’t. It’s a wholesale and retail rotation device: “ship or shelve this by X so the buyer gets reasonable life.” If you printed your sell-by date as the customer-facing date, you’d be throwing away perfectly good shelf life and confusing shoppers into thinking the product expires sooner than it does.

The right way to model a sell-by in an online store is as an early cut-off against the real date — you keep the product’s true best-before or use-by date as the source of truth, then stop selling it some number of days before that date so every customer receives stock with a comfortable buffer.

How to label and manage each one in WooCommerce

Core WooCommerce has no field for any of these dates. It knows price, stock count, and SKU — nothing about time. The free Sellinor Product Expiration Dates plugin adds that missing layer, and it’s deliberately built around the quality/safety/logistics distinction above.

One date, the label you choose. The plugin stores a single date per product (and per variation), and you decide which word sits in front of it on the storefront. Under Products → Expirations → Settings → General, set the label text to “Best Before”, “Use By”, or “Expires” to match the product and your local labelling rules. There’s no separate best-before field versus use-by field to reconcile — same date storage, honest label. The mechanics of setting and displaying dates are in Expiration dates, and the step-by-step setup is in how to add expiration dates to WooCommerce products.

Enforce the safety dates automatically. For use-by items especially, configure an automatic expiry action: hide the product from the catalog, set it to out of stock, or both, once the date passes. Hiding from the catalog takes effect immediately on the next page load, while the out-of-stock change is applied by an hourly background check, so it can take up to an hour to show. Crucially, whenever an action is enabled the cart and checkout are protected straight away — an expired item can’t be added, and anything that lapses while sitting in a basket is removed at checkout with a notice. That guard is immediate, so a use-by date isn’t left to manual diligence. The full behaviour is documented in Expiry actions.

Model the sell-by as an early cut-off. This is where the days before setting earns its keep. Keep each product’s real best-before or use-by date as the stored date, then set “apply action before expiry” to, say, 3 — and the product is hidden or out-of-stocked three days ahead of its true date. That’s a sell-by cut-off in everything but name: customers stop being able to buy stock that’s too close to its date, while you still track the genuine expiry underneath.

Show the date only when it’s relevant. A separate display threshold lets you keep the date hidden until a product is genuinely close, which suits stores where most stock is months out. Set it to 0 to always show the date, or to 30 to surface it only inside the last month.

Putting it together for a real store

A practical policy for a mixed catalogue looks like this:

  • Shelf-stable goods — label “Best Before”, optionally discount as the date nears, and decide case by case whether to keep selling past it.
  • Perishables — label “Use By”, enable an expiry action so they’re pulled automatically, and lean on cart protection so nothing past-date slips through.
  • Everything — use the days before setting to bake in a sell-by-style buffer, so customers always get usable life.

You can see what’s coming due across all of it on the free Overview dashboard at Products → Expirations — a calendar of which products fall due on each day, plus the stock value at risk in your window. For deeper background on getting the on-pack wording right, the best-before dates in WooCommerce guide walks through display and labelling, and the food and grocery expiry guide covers perishable-specific workflows.

The dates mean different things; your store should treat them differently. The plugin gives you one clean place to record the real date, the right label to show it under, and automatic enforcement where safety — not just quality — is on the line.

Frequently asked questions

What is the difference between best before and use by?

A best-before date is about quality: the product is generally still safe to eat or use after the date but may decline in flavour, texture, or potency. A use-by date is about safety and applies to higher-risk perishable items — it should not be passed, and products shouldn't be sold or consumed after it. As a rule, best-before is a quality guide and use-by is a safety limit.

What does a sell-by date mean for a retailer?

A sell-by date is a stock-rotation instruction aimed at the retailer, not the shopper. It tells you the last day to display or ship an item so the customer still has reasonable shelf life left at home. It is usually shorter than the product's true best-before or use-by date and is typically kept back-of-house rather than printed for customers. In an online store you can model it by acting on the date a few days early.

Can a product be sold after its best-before date?

Often yes — a best-before date concerns quality, not safety, so many shelf-stable foods, dry goods, and supplements remain saleable and safe past it, subject to your local regulations and your own judgement. A use-by date is different: items should not be sold or used after a use-by date because it signals a safety risk. Always follow the rules that apply to your products and region.

Which date label should I show customers in my store?

Use the label that matches the product and your local labelling rules: 'Best Before' for quality-driven shelf-stable goods, 'Use By' for higher-risk perishables, and a neutral 'Expires' for things like cosmetics, batteries, or vouchers. Sell-by dates are normally internal and not shown to customers. The Sellinor Expiration Dates plugin stores one date per product and lets you choose which label sits in front of it.

How do I manage these dates in WooCommerce?

Core WooCommerce has no date field for shelf life. The free Sellinor Product Expiration Dates plugin adds an Expiration tab to each product, lets you display the date with a custom label, and automatically hides or out-of-stocks a product when its date passes. You can also fire that action a set number of days early, which is how you handle a sell-by-style cut-off.

Do best-before and use-by dates need different fields?

No. They are different meanings, not different data fields. The plugin stores a single date per product (or per variation) and you choose the label — 'Best Before', 'Use By', or 'Expires' — under Products → Expirations → Settings → General. You apply the label that is honest for what the product is, rather than juggling separate date fields.

Put the right date and label on every product

Add a best-before, use-by, or expiry date to any WooCommerce product, show it with the label you choose, and stop selling stock once the date passes — with the free Sellinor Expiration Dates plugin.

See plans & download free

Or read the documentation.