Stockroom

Lot tracking on Shopify: batches, expiry dates and recalls without an ERP

Shopify has no batch field. If you sell anything with a use-by date, here is what a lot is, why first-expiry-first matters, and what a recall needs.

5 min read

A lot is a batch of stock that arrived together and usually carries one expiry date. Lot tracking records which lot each unit belongs to, from the delivery it came in on through to the order it ships out in. That record is what a use-by date, a first-expiry-first picking rule and a recall all rely on.

Shopify keeps one number per product: how many are on the shelf. For most stores that is enough. If you sell food, supplements, cosmetics or anything else printed with a batch code and a use-by date, you also need to know which units are on the shelf, and Shopify cannot tell you that.

Sooner or later you need to answer three questions:

  • Which batch should we sell first?
  • What is about to expire, and how much of it is left?
  • A batch has a problem. Where did it go?

A spreadsheet can answer each of these if someone sits down and works it out. It cannot keep the answers up to date, and it cannot follow a jar from the delivery it arrived on to the order it shipped on. Lot tracking does both. The term usually comes bundled with warehouse software you may not need, so here is what it means on its own.

What a lot is

A lot (a batch) is a quantity of one product that shares a history: it came in on the same delivery or out of the same production run, it carries the same number on the packaging, and it expires on the same day. A lot record is only useful if:

  1. It is recorded when the stock arrives. The lot number and expiry get typed in while the delivery is being counted and the box is in front of you. A batch you make yourself gets recorded when you record the build.
  2. It follows the stock out. The record needs to know which orders drew from the batch, so the balance goes down as things sell without anyone updating it by hand.
  3. It is only switched on for the products that need it. Lot tracking on every product turns a two-tap receive into a form. Turn it on for the products a regulator or a recall would ask about and leave the rest alone.

Question one: which batch first

The rule is first to expire, first out (FEFO). It is different from first in, first out. A later delivery can carry an earlier expiry date, and a shelf run on strict FIFO would sell the fresher batch first and let the older one expire.

In practice this works best as a suggestion. When an order is packed, the person packing is shown which batch to take: the earliest-expiring one with units left, with expired batches flagged and undated ones last. They confirm the pick by scanning the batch label, so the record matches what went in the box. If the system picks the batch on its own and nobody checks, the shelf and the record drift apart, and then nobody knows which one is right.

Question two: what is about to expire

This is a report. It lists every batch that still has units, soonest expiry first, with expired batches at the top, and it shows the units and the value in each. That way “how much do we write off this month” has a number for an answer instead of a walk around the stockroom.

The report is only accurate if lot balances go down when things sell. If they do not, the report shows every batch you ever received as still sitting there. That is why the first question matters for the second: assigning a batch at the order is what keeps the expiry report right.

An alert for what expires inside 30 days means you do not have to remember to check the report.

Question three: where did it go

When a batch is recalled you need one page that shows, for that batch, which orders shipped its units and which finished goods it was built into. With that page, a recall is an afternoon of emails. Without it, it is a week of guessing from order dates.

A recall should not move any stock. It is a status on the batch, and the batch keeps its history. Recalled stock can still be counted and returned to the supplier, but it cannot be sold or used in a build. The order page refuses it, the first-expiry suggestion skips it, and a build cannot use it. Counting and returning stay open because that is how you deal with the exposure.

What you do not need a warehouse system for

A warehouse management system gives you per-location lot balances, serialised units, quarantine zones and lot rules on every movement in the building. If you run a bonded warehouse or sell into pharma, you need that, and it is priced accordingly.

Most Shopify stores need less than that: a batch recorded at receiving, an expiry date that decides which jar goes first, a report of what is about to expire, and a page that answers a recall. Buying a full WMS to get those four things usually means running a second inventory that Shopify cannot see. It syncs back on a schedule, and your sellable stock in Shopify is always a little behind.

Whatever tool you look at, check two things: does your inventory stay in Shopify, and does the lot record follow the stock to the order without anyone retyping it?

Where Stockroom stands

Stockroom covers that shorter list inside Shopify: lot, expiry and manufacture date typed on the receive line for the products you mark, batches created on a build or on an adjustment for stock already on the shelf, a Lots block on the Shopify order page prefilled with the earliest-expiring batch, the batch named on the pick list and confirmed by scanning its label, lot and expiry printed on labels, an Expiring lots report and alert, lot-aware adjustments, stocktakes, builds and supplier returns, and a recall page that shows where the batch went. Lot balances are kept in Stockroom and are not written to Shopify, because Shopify has no lot field, so your Shopify quantities are unchanged. Lot balances are one number per batch and are not split by location. Lot tracking is in early access and free, like the rest of the app.

Free on the Shopify App Store

Purchasing on Shopify, handled

Stockroom is free on the Shopify App Store - unlimited POs, receiving, counting and reordering.