ClearStock is live on the Shopify App Store.Install free →

← All blogs

Guides9 min read

Food and beverage inventory management for Shopify sellers

Food inventory management for F&B sellers on Shopify — shelf-life windows, FEFO rotation, batch tracking, waste KPIs, and the rhythm that cuts spoilage.

InventoryX is in development and not available today. ClearStock is the live Shopify app.

Food inventory management adds one constraint that general inventory advice ignores: every unit you buy comes with a countdown clock. A case of hot sauce that would sit patiently in a home-goods warehouse becomes a liability the day it's bottled, and the whole job — rotation, ordering, batch control, waste tracking — is downstream of that clock. The method below covers shelf-life windows, first-expired-first-out (FEFO) rotation, keeping production batches coherent, and treating waste as a measured KPI rather than a shrug.

Shelf life is three different windows, not one

Merchants who buy and sell food juggle three dates, and confusing them causes most spoilage surprises:

  • Best-by date (quality). The manufacturer's quality window. Product past it usually still sells legally and safely in many categories, but flavor degrades — and your reviews will notice before your accounting does.
  • Sell-by window (your margin). The date by which you want the unit sold to protect the customer experience. This is your real planning number, and it's always inside the best-by date.
  • Production or batch date. What everything else anchors to. Two cases of the same hot sauce bottled four months apart are, for rotation purposes, two different products.

Set the sell-by window per SKU as a policy — for example, coffee beans sold at 75% of their roast-to-best-by span, hot sauce at 80% — and treat it as an assumption you tune with experience, not a law. The point isn't the exact percentage; it's that you have one written number per SKU so rotation and markdown decisions don't get made from memory.

FEFO, not FIFO

First-in-first-out is the default habit from every other inventory context. For perishables it's subtly wrong: FIFO ships your oldest received stock; FEFO ships your oldest expiring stock. Usually those agree — until a supplier ships you a short-dated batch, or a slow quarter leaves last spring's roast sitting behind fresh deliveries. Then FIFO confidently ships the wrong case first.

In practice, FEFO is a receiving and picking discipline:

  1. Record the expiry (or sell-by) date at receiving — a spreadsheet column per lot is enough at small scale. Native Shopify has no expiry-date field on variants; the tracking methods that work are a lot-code suffix in the SKU, a metafield, or a dated log next to the shelf.
  2. Pick by earliest date, not by position. Label shelves with the month so the newest cases physically can't get placed in front of the oldest without someone noticing.
  3. Audit monthly. One question per SKU: is the front-of-shelf stock actually the earliest-dated stock? If not, your pickers are FIFO-ing by geography.

Production-batch coherence

If you make what you sell — a sauce kitchen, a coffee roaster, a granola studio — your inventory has a conversion step that grocery resellers don't: inputs become finished goods in batches. Two problems follow.

First, batch coherence: one production batch of 300 jars of salsa is one quality event (one cook time, one spice lot, one jar lot). If you sell batch A alongside batch B and a customer reports an off flavor, you need to know which jars came from which cook. That's traceability, and it requires that you can connect a finished-goods unit back to its batch — a batch code printed on the label is the cheapest possible version.

Second, component demand is censored by production: your jalapeño purchases don't show up in any per-ingredient sales report, only in batch records. If you reorder ingredients from product-level velocity, you'll systematically underbuy the ingredients that go into your bestsellers. Track ingredient consumption per batch in the same sheet as the batch itself — batch size, units produced, units of each input consumed — and you get an ingredients-per-jar number that makes ingredient reordering arithmetic instead of vibes.

Waste as a KPI, not a write-off

Every food operation destroys or discounts some product. The difference between an operation that improves and one that doesn't is whether waste is counted. Track three numbers monthly:

Metric How to compute What it tells you
Waste units per SKU Units discarded or donated, by expiry date Which SKUs you chronically overbuy
Waste cost Units × landed cost The cash side of spoilage — your real reorder error tax
Waste rate Waste cost ÷ COGS for the period One comparable number over time; the trend matters, not the level

Then act on the top offender each month. The remedies are ordering-side: pull the reorder quantity down, shorten the order cycle, or shift that SKU to a made-to-order cadence. A SKU that reliably expires is a reorder point set too high or a lead time entered wrong — the waste is the symptom, the buying math is the cause.

The retailer-compliance angle, briefly

Selling into grocery and specialty retail adds requirements on top of your own operation: retailers commonly ask for batch or lot codes on every unit for recall traceability, consistent case labeling, and minimum remaining shelf life on delivery (often expressed as a percentage of total shelf life — the specific threshold is set by each retailer, so ask yours). None of that is exotic; all of it is batch discipline you already need internally, plus one conversation per buyer.

On regulation: food safety rules for retail food come from state, local, tribal, and territorial jurisdictions, which use the FDA Food Code as a model rather than as a uniform law — FDA published the 2026 edition of the Food Code in 2026, and adoption varies by jurisdiction (FDA Food Code, accessed October 2026). Check your own state and county rules rather than taking any general article's word for what applies to you — this article deliberately doesn't restate health-code requirements, because they genuinely differ by where you produce and sell.

What Shopify does and doesn't do for food inventory

Honest scope, as of October 2026: Shopify tracks quantities per variant and location, and it will decrement stock reliably. It has no expiry-date field, no FEFO pick logic, no batch genealogy, and no waste reporting. Everything date-related in this article runs on a spreadsheet layer or a vertical app sitting next to Shopify.

What the admin does support: per-location stock, purchase orders with receiving, stock counts, and POS for market and pop-up selling — and POS sync is worth getting right early, because market sales that don't decrement correctly will corrupt the velocity numbers you order from (the specifics are in the POS inventory guide).

A weekly rhythm that fits a food operation:

  • At receiving: log lot dates before anything goes on the shelf. Ten minutes.
  • Weekly: check days of cover against remaining sell-by window for A-listers. A SKU with 40 days of stock and a 60-day sell-by window is about to become waste — that's a markdown-now decision, not a someday decision.
  • Monthly: waste table (units, cost, rate) + front-of-shelf FEFO audit + cull anything that's expired or close. What's truly dead belongs in a deliberate dead-stock review, not in the freezer of denial.

One worked markdown decision, with arithmetic: you carry a hot sauce with 60 units on hand, selling 0.9/day (≈67-day cover), and the sell-by window closes in 50 days. Projected sell-through: 0.9 × 50 = 45 units — 15 will age out. A 25% markdown for three weeks lifts velocity to ~1.3/day (a planning assumption to test, not a promise): 1.3 × 21 = 27 units through the promo, leaving 33 at full price with 29 days of window — now inside the projected sell-through. The markdown costs you margin on the discounted units you'd have sold at full price anyway (27 units × 25% of a $9.99 price ≈ $67 of given-away margin); the alternative was discarding 15 units at full cost — at, say, $3.50 landed cost each, $52.50 plus the customer experience of a stale bottle. Run that comparison per SKU with your own numbers; the answer differs by margin, but the decision framework holds.

Common questions

What is food inventory management? The method for buying, rotating, and accounting for stock that expires: shelf-life windows per SKU, FEFO (first-expired-first-out) picking, batch traceability for anything you produce, and waste tracked as a KPI. It's regular inventory management with a countdown clock attached to every unit.

What is FEFO and how is it different from FIFO? FEFO means first-expired-first-out: pick the unit with the earliest expiry date, not the one received first. They usually agree, but a short-dated delivery or a slow sales quarter makes them diverge — and FEFO is the rule that protects the customer experience.

How do you track expiry dates in Shopify? Native Shopify has no expiry-date field as of October 2026, so merchants use a spreadsheet or dated log at receiving, an expiry metafield on the variant, or a vertical inventory app. The cheapest workable version is a lot-date column in your receiving sheet plus month-labeled shelving so rotation is physically enforced.

How do you calculate food waste as a metric? Three numbers monthly: waste units per SKU (everything discarded, donated, or destroyed), waste cost (units × landed cost), and waste rate (waste cost ÷ COGS for the period). The rate is the comparable number — track its trend and act on the worst SKU each cycle.

What shelf-life requirements do grocery retailers have? It varies by retailer: most require batch or lot codes for traceability and set a minimum remaining shelf life at delivery, expressed as a share of total shelf life. Ask each buyer for their spec in writing — there's no universal standard, and wholesale buyers do differ.

Where to go next

Build the waste table first — it's the number that exposes over-buying, and it takes one hour of back-fill from last month's discard log. Then bring the worst offender's reorder math up to date: the reorder point formula with an honest in-stock-only velocity, sized down until the waste rate flattens. And if you sell at markets, close the POS sync gap early — the POS inventory guide covers the failure modes that quietly poison ordering decisions. Once your catalog has any SKU sitting unsold past 90 days, route it through the inventory aging review before it becomes next month's waste line.