How do serial numbers, lot numbers, or expiration-date tracking (common in specific verticals) migrate to Shopify's inventory model from a platform with native support for them?
Short answer
Serial numbers, lot numbers and expiry dates have no field in Shopify's inventory model, so they move to an app, an upstream system or, for coarse expiry, the variant itself. An inventory item "holds the stock keeping unit (SKU), whether quantities are tracked, shipping requirements, and customs information" (Shopify developer docs, October 2026). Name the system that owns traceability first.
- Lot or expiry field in Shopify
- None on the inventory itemThe 2026-10 inventory item holds the SKU, tracking, shipping and customs data, and nothing per batch (Shopify developer docs, October 2026).Source: Shopify developer docs (InventoryItem)
- Lot numbers on transfers
- Metafields since 30 June 2026Transfer metafields can carry lot and serial numbers to reconcile what arrived; stock on hand still has no batch dimension (Shopify changelog, June 2026).Sources: Shopify changelog (Define and manage metafields on inventory transfers); Shopify developer docs (InventoryItem)
- Freshly Batch Inventory, many locations
- $199 a month, its plan for Shopify Plus storesFree and $24 Pro plans cover one location; only the $199 plan, "For stores on Shopify Plus", lists multiple fulfillment locations (Shopify App Store, October 2026).Source: Freshly Commerce (Freshly Batch Inventory on the Shopify App Store)
- Shopify bins (developer preview)
- Shelves within a location, not batchesThe July 2026 preview, for development stores that enable it, splits on-hand stock by bin and adds no lot or expiry field (Shopify developer changelog, July 2026).Source: Shopify developer changelog (Physical inventory feature preview)
Deploi’s call
The real question is never "how do I migrate lot numbers". It is "who is the system of record for traceability after the migration", and answering that first turns an impossible field mapping into a straightforward integration scope. Our inventory system record keeps single-brand stores on native inventory and buys a full inventory system for multi-warehouse purchasing or bills of materials (Deploi verdict, September 2026). Regulated lot genealogy belongs upstream too, in an enterprise resource planning (ERP) or warehouse system, and rarely in the storefront, because Shopify has no field for it.
BuyKeep lots and expiry dates in an app or an upstream system when
- An auditor, a regulator or a customer contract needs lot genealogy: an enterprise resource planning (ERP) or warehouse management system (WMS) holds it.
- Purchasing spans several warehouses, the case our inventory system record scores BUY for a full inventory system (October 2026).
- Traceability is a business need and stock ships from Shopify locations: a batch app such as Freshly Batch Inventory, from $24 a month for one location (Shopify App Store, October 2026).
WaitStay on Shopify's native inventory, with expiry in the variant, while
- Each product has one production run per season and a predictable shelf life.
- Nobody downstream asks which batch a customer received.
- The platform migration is still underway, so a new inventory dimension can wait a quarter.
Basis: Build or Buy an Inventory Management System on Shopify?, our Build vs. Buy decision record, scored WAIT.
Does Shopify's inventory model have a place for lots and expiry dates?
Shopify's inventory model has no place for lot numbers or expiry dates, because it counts a quantity per variant per location. An inventory item "represents the inventory for a product variant" and holds its stock keeping unit (SKU), tracking, shipping and customs data (Shopify developer docs, October 2026). None of those fields is a lot, a batch or an expiry date, and no record sits below the variant to hang one on. Lot tracking exists because units aren't interchangeable: two cases of one product received six months apart are different things to a recall, an audit and a picker.
This answer covers lots and expiry dates. Serial numbers, one per unit, follow how serialized stock leaves Lightspeed, and how Lightspeed's purchasing maps onto Shopify covers the purchase orders that bring batches in.
Two 2026 features come close and stop short. Since 30 June 2026, transfer metafields can carry "lot numbers, serial numbers" on an incoming shipment (Shopify changelog, June 2026). Shopify's July 2026 developer preview adds bins, "Named storage locations within a location, such as a shelf or rack", for stores that enable it (Shopify developer changelog, July 2026). A bin splits stock by shelf, not by batch.
Where should lot and expiry data live after the migration?
Lot and expiry data should live in the system that owns traceability, so the migration is a decision rather than a field mapping. Three answers hold up:
| Destination | Right when | What it costs you |
|---|---|---|
| A batch-tracking app on Shopify | Traceability is a business need, not an audited obligation, and stock ships from Shopify locations or a connected warehouse | A subscription, plus assigning batches at every receipt |
| An enterprise resource planning or warehouse system upstream | An auditor, a regulator or a customer contract needs lot genealogy, and Shopify is a sales channel | The system, plus an integration that keeps quantities in step |
| Nothing, with expiry in the variant | Expiry is coarse, predictable and customer-visible, such as a dated seasonal product | Unit-level traceability, which is fine until a recall |
The third answer is more common than the app market suggests. A brand with a twelve-month shelf life and one production run per product per season can put the expiry in the variant. A brand with four runs a year, overlapping stock and a recall obligation can't. Our inventory system record keeps single-brand stores on native inventory and buys a full inventory system for multi-warehouse purchasing or bills of materials (checked October 2026).
What do batch-tracking apps on Shopify cost?
Batch-tracking apps on Shopify cost little for one location and step up with your Shopify plan. Freshly Batch Inventory, from Freshly Commerce, tracks stock by batch or lot with expiry dates and first expired, first out (FEFO) rotation, and rates 4.8 from about 50 reviews (Shopify App Store, October 2026):
- Free: 10 products and 500 orders a month, one location.
- Pro, $24 a month: unlimited batches, one location.
- Advanced, $89 a month: "For stores on Shopify Advanced".
- Plus, $199 a month: "For stores on Shopify Plus", the only plan that lists multiple fulfillment locations.
So a multi-location brand should price the $199 plan, which steps with your Shopify plan rather than your batch count. Check review counts before feature lists: BatchTrack, launched in June 2026, shows no reviews while selling an unlimited plan at $9.99 a month (Shopify App Store, October 2026). Whichever app you choose, assign batches when stock is received against a purchase order, the habit our purchase orders record ranks highest in purchasing and receiving (checked October 2026).
Who enforces first expired, first out picking?
The picking system enforces first expired, first out (FEFO), not Shopify. FEFO is a picking instruction, so it only works if the system that tells a picker which unit to take knows the expiry. A batch app can assign the soonest-expiring batch to an order, but on Shopify the system that directs the picker is usually the warehouse management system (WMS) of your third-party logistics (3PL) provider.
So ask your 3PL two questions before you buy anything: can you pick by expiry date, and what do you need in the order to do it? If the answer is no, a Shopify batch app gives you a traceability record, not rotation control, and you should know which one you bought.
When should lot tracking stay off Shopify?
Lot tracking should stay off Shopify when an auditor reads it, a third-party logistics (3PL) provider already holds it, the need is shelf-life reporting, or the platform migration is still underway.
Deploi’s point of view
Our own position, from building on Shopify. Kept apart from the sourced facts above.
- Where we disagree
- The standard advice is to pick a batch-tracking app and treat the gap as closed. That skips the rotation question entirely. An app that records which batch shipped, on a third-party warehouse that picks by nearest bin, gives you an accurate record of the wrong unit going out.
- What we insist on
- Name the consumer of the traceability data before choosing a tool. An auditor, a customer, a recall process and a merchandiser want four different things, and only one of them is satisfied by a batch field in an app.
- What this page adds
- That Shopify's inventory model has no record below the variant, so lots and expiry dates are a system-of-record decision rather than a field mapping; that transfer metafields and the bins preview record shipments and shelves, not batches; and that first expired, first out picking is enforced by the picking system rather than in Shopify.
Decision records behind this answer
When this answer changes
- Shopify adds lot, batch or expiry fields to inventory items or inventory levels.
- Shopify's physical inventory preview becomes stable, or adds batch-level quantities alongside bins.
- Freshly Batch Inventory changes its plan prices, or offers multiple fulfillment locations below its $199 plan.
- Your third-party logistics provider starts or stops picking by expiry date.
- Deploi's inventory management system record changes its verdict.
Related questions
This follows from How does Lightspeed's built-in vendor/purchase-order management map onto Shopify's native tools or Stocky-successor inventory apps?
- How do serialized or lot-tracked inventory items (common in Lightspeed retail categories like jewelry or bikes) migrate to Shopify's inventory model?
Serialized Lightspeed items move to Shopify as an archive plus a lookup, not as inventory, because Shopify's inventory item has no serial or lot field (Shopify developer docs, October 2026).
Sources
Every figure on this page traces to one of these. Official and vendor pages are checked on the date shown; Deploi records are our own published decisions.
- Shopify developer docs, InventoryItem
- Shopify changelog, Define and manage metafields on inventory transfers
- Shopify developer changelog, Physical inventory feature preview
- Freshly Commerce, Freshly Batch Inventory on the Shopify App Store
- Alex laGuardia, BatchTrack: Batch Expiry Dates on the Shopify App Store
- Deploi Build vs. Buy, Build or Buy an Inventory Management System on Shopify?
- Deploi Build vs. Buy, Build or Buy Purchase Orders & Receiving on Shopify?