Lot tracking records which supplier batch each delivery came from, and when it expires. It's an early-access preview and it's off by default - if you don't need it, you'll never see it.
Lots are a record that sits alongside your inventory. Recording, correcting, or consuming a lot never changes your Shopify stock levels - receiving updates inventory exactly as it always has, and the lot simply remembers where those units came from.
Turn it on
In Stockroom, open Settings, choose Purchase orders, and scroll to the Early access section. Turn on Turn on lot tracking and save. The same toggle is available in your store settings on go.stockroom.app.
Then mark each product you want to track: on its product page, tick Track lots in the Costs & replenishment section. To mark many at once, select products on the Products page and use Track lots, or use the lot_tracking column in the stock settings CSV. Most stores only track a few products - everything else stays exactly as it was.
Record lots as you receive
On a purchase order with marked items, the receive card's Columns picker offers Lot, Expiry and Mfg date columns - turn on the ones you use. Type the supplier's batch number next to each line and pick the expiry date if the product has one. When you receive, the accepted units are booked into that lot.
If your supplier names the batch before it ships, open the Columns menu on the purchase order and tick Expected lot: the column takes a batch number on each marked line, before or after the order is placed. It's a note, not a lot - nothing is recorded until you receive - but the receive card's Lot field starts with it. It never prints on the supplier's copy.
A few things worth knowing about how capture works:
Each receive line takes one lot. If a single delivery contains two batches of the same product, receive it in two rounds - each round makes its own receipt.
If you receive more of a lot number you've recorded before, the new units join the existing lot. A lot keeps the expiry date it was first given.
Only marked products take a lot - other lines on the same order show a dash.
Only accepted units go into the lot - units you reject at receiving don't.
Undoing a receive also takes its units back out of the lot.
The same columns are available when you receive on go.stockroom.app. On a return to a supplier, the column picker offers From lot instead - pick which batch the units are leaving from (the batch expiring soonest is at the top of the list), and the lot's balance goes down when you record the shipment. Undoing the ship-back puts the units back. For the full receiving flow, see Receiving Inventory Against a Purchase Order.
Browse your lots
Open Inventory and choose Lots. You can search by lot number, switch between Active and Consumed lots, and filter to lots expiring within 30 or 90 days. A lot is Active while it still holds units and becomes Consumed when its balance reaches zero.
Open a lot to see its full story: the expiry and manufacture dates, how many units are on hand, and a history of every movement - which purchase order the units arrived on, any receives that were undone, and any manual corrections. Each product also shows its own lots on the product page.
Correct a lot
On a lot's page you can edit the expiry and manufacture dates directly. To move units in or out - say a batch number was typed on the wrong line - use Adjust: enter the change (positive adds units, negative removes them) and a reason. Adjustments only correct which lot the units belong to; your Shopify inventory doesn't move.
Recall a batch
If a batch has to be pulled, open its lot page and choose Mark recalled, adding a reason if you like. Nothing moves in Shopify - a recall is a flag, not an adjustment. While a lot is recalled, Stockroom won't let it be assigned to an order or consumed by a build, and it disappears from the earliest-expiry suggestions. Adjustments, stocktakes, returns to the supplier and unbuilds still work on it, so you can pull the stock out however suits you.
The lot page turns into the case file: a red banner with the reason and date, and a Where this batch went section listing the orders that shipped units from it and any batches that were built from it - so a recalled component leads you straight to the finished goods it went into. The Lots view gets a Recalled tab to find these quickly. When the recall is over, Reinstate puts the lot back to normal.
Use your lots
Assigning lots to orders (by hand or automatically at fulfilment), drawing them down on adjustments, stocktakes and builds, and printing them on packing slips: see Assign lots to orders, adjustments, stocktakes and builds.
The Expiring lots report
Under Reports, the Expiring lots report lists every lot with an expiry date that still holds units, soonest first - anything already expired sits at the top. You can export it as a CSV.
To get this by email or Slack on a schedule, create an Expiring lots alert under Settings > Alerts. Choose how far ahead it looks, and expiring lots arrive with your stock alert digest.
Put the lot on your labels
When you print labels - from a receipt, a purchase order, or the Products page - the print dialog offers Include lot number and Include lot expiry. Labels printed from a receipt carry the batch that arrived on that delivery; printing for a whole order or from the Products page uses the item's most recent lot. The expiry prints as EXP followed by the date, and both need one of the larger label sizes.
Good to know
Lot tracking is off by default, and applies only to products you mark. Until you turn it on and mark a product, the columns, the Lots view, and the report stay hidden.
Lots never change Shopify inventory. They're a record of where units came from, kept alongside your stock levels.
Lots are captured at receiving, when a build records a lot-tracked product, or when an unbuild recovers lot-tracked components; drawn down when you assign them on an order, return stock to a supplier, a build consumes lot-tracked components, or an unbuild takes a batch apart; and moved by the lot you pick on an adjustment or at stocktake review. Transfers don't record against lots yet - this is an early-access preview, and lot awareness will reach more of the app as it grows.
go.stockroom.app has the same Lots view and lot pages under Inventory, records lots at receive, and can turn the feature on or off. When receiving at the POS, marked products offer a lot number field too.




