Skip to content

Shopify Batch Tracking: Lots and Expiry Dates in Shopify

Shopify has no field for a batch or an expiry date. Four ways to track them anyway, what each app costs, and a recall worked through. Read September 26, 2026.

By Koa Sterling. Product specialist at TaroStack and small business owner. Yes, I am a real human, and I actually sit in front of a computer and write these articles. Reviewed September 29, 2026 · 7 min read

Shopify doesn't track batches on its own. It counts each product's units by location and by state (available, committed, unavailable, incoming), and there's no field for a batch number or an expiry date. So batch tracking in Shopify comes from one of four places: variants you make per batch (not recommended), Shopify's quality-control hold for a batch you're worried about, an app from the Shopify App Store that adds batches to your products, or a system where you make the product, which tracks the batch and sends Shopify the count.

The short version

  • Don't make a variant per batch. It works for two batches and turns into a mess by the fifth.
  • To stop a batch selling while you check it, move its units to Unavailable, Quality control. That's built in.
  • For batches and dates on the products you sell, a Shopify app does it from free to about $25 a month.
  • If a recall could start with an ingredient (a supplier's lot of pectin, flour or oil), you need batch records from the kitchen, which Shopify apps don't keep.
  • TaroStack keeps those batch records from the kitchen, and connects to your Shopify store. More below.

Four ways to track batches in Shopify

1. A variant per batch

You add a variant called "Best by Mar 2027" next to "Best by Feb 2027". It needs no app, and that's the only thing going for it. Every batch becomes a new SKU, customers see choices they didn't ask for, reports split one product into many, and someone has to delete the old variant when it sells out. My advice: skip it.

2. The quality-control hold

Shopify lets you set units as unavailable for a reason: damaged, quality control, safety stock or other (Shopify). Those units stay on the shelf in Shopify's count but can't be sold. It doesn't know which batch they are, but if you've got 54 jars of a batch you're worried about, moving 54 to quality control stops them selling while you find out. Worth knowing even if you use an app.

3. A batch app

Several apps in the Shopify App Store add batches, lot numbers and expiry dates to your products, assign batches to orders (oldest first), warn before dates pass, and tell you which orders got which batch. They're the right tool if what you need to trace is the product itself.

4. Track batches where you make them

An inventory system that records batches from the kitchen knows the ingredient lots that went into each one, and sends Shopify the finished count. That's the only route where a recall can start at a supplier's lot and end at a customer.

The apps, side by side

From each app's listing in the Shopify App Store on September 26, 2026.

App Free plan Paid plans Worth knowing
Freshly Batch Inventory 10 products, unlimited batches, 500 orders a month Pro $24/month; Advanced $89/month; Plus $199/month FEFO or FIFO assignment, batch traceability, optional expiry dates for customers. One location until the Plus plan. 4.8 stars, 46 reviews
LotTrack None $9.99/month (100 active lots, 2 locations), $29.99/month, $79.99/month FIFO, FEFO and LIFO auto-allocation, recall cases and customer recall emails, QC hold. Two-week trial
BatchTrack Up to 10 products $9.99/month or $99.99/year, unlimited Expiry dates and optional lot numbers, soonest-first dashboard, email alerts. No reviews yet
Batchly 1 product $15/month, all features Expiration management and batch assignment to orders; unlimited locations. Two reviews

One line in that table matters more than it looks. Freshly's free and Pro plans are for a single location, and multiple fulfillment locations are on Plus, "for stores on Shopify Plus". A maker who sells from a kitchen and a shop has two locations, so check the location limit before anything else.

A recall, worked through

You make guava jam. Two batches are in stock:

Batch Made Jars Best by Sold so far Left
J-0914 Sep 14 96 Mar 14, 2027 42 54
J-0921 Sep 21 96 Mar 21, 2027 0 96

Shopify shows 150 available. On Saturday, the pectin supplier emails: lot P-2207 is being recalled.

With no batch tracking, you know you have 150 jars and that you've shipped a lot of jam. You don't know which jars used P-2207, so you're either pulling everything or guessing.

With a batch app, you can find the 42 orders that got J-0914, and hold the 54 jars that are left. But the app can't tell you whether J-0914 used P-2207, because it never saw the pectin. That answer is in the kitchen: a batch record, or a note on the batch sheet saying which pectin lot went in.

With batches recorded where you make them, you look up P-2207 and get the answer in one step: it went into J-0914 and not J-0921, 42 jars shipped to these customers, 54 on your shelf, and who to call. Then you move those 54 to quality control in Shopify so they can't sell while you sort it out. For the full exercise, practiced before it's real, see the mock recall example.

Where this stops working

A batch app is only as good as the batch numbers typed into it. If a new batch goes on the shelf and nobody adds it in the app, the app keeps assigning the old one, and your records will say customers got jam they didn't. The same is true of any system: the batch has to be entered when it's made, not when someone gets around to it.

About us: TaroStack isn't in the Shopify App Store. Each early store is connected by hand, with us, and orders arrive by import and a daily check rather than to the second, so it won't assign a batch at the moment of checkout the way an app inside Shopify can. What it does is keep the batch from the kitchen side, ingredients included. It connects to Shopify and Square only, and there's no live QuickBooks or Xero connection yet.

How TaroStack does it

The recall in this article started with the supplier's pectin, P-2207, and that's the case a Shopify app can't reach, because the app only knows the jars. TaroStack keeps the batch from the kitchen side. Receiving records each ingredient's lot and date, the supplier's code or yours. When a batch of jam is recorded, TaroStack takes ingredients from the lots that expire first and notes which ones it used, and the jam gets its own lot and best-by date. So P-2207 leads straight to J-0914 and J-0921.

From there it's one recall report: the batches the pectin went into, the customers who received them, what's still on your shelves, and who to call, and you can run timed, logged drills before you ever need it. Shipping picks the oldest lot by default, returns go back into the lot they left in so a recall still finds them, and a batch on hold stops counting as available while you check it.

Connect your Shopify store and we set it up with you. Lots, expiry and recalls are on every plan, from $49 a month, and recording batches against recipes is on Standard at $99. The first 30 days are free. If you'd like a hand setting up, ask, and we'll do it with you.

Questions people also ask

Does Shopify have lot tracking?

Not built in. Shopify counts units per location and state, with no field for a lot or expiry date. Lot tracking comes from an app, or from an inventory system connected to your store. For what lot tracking means in general, see what is lot tracking.

Can Shopify track expiration dates?

Not on its own. Apps like Freshly and BatchTrack add expiry dates to your products and can warn you before they pass. Some can show the date to customers on the product page.

What is batch tracking in inventory management?

Recording which batch each unit came from, so you can find every unit of a batch later: to sell the oldest first, to hold a batch, or to recall it. Done properly, it links each batch to the ingredient lots that went in and the customers who got it out. There's a buyer's-eye version in what to look for in a lot tracking app.

How do I stop one batch from selling in Shopify?

Move its units from Available to Unavailable, with the reason Quality control. They stay counted at the location but can't be sold. If you use a batch app, hold the batch there too, so its records match.

Sources

  1. Shopify Help Center: Understanding inventory states · read September 26, 2026
  2. Shopify App Store: Freshly Batch Inventory · read September 26, 2026
  3. Shopify App Store: BatchTrack, Batch Expiry Dates · read September 26, 2026
  4. Shopify App Store: LotTrack, Batch & Lot Tracking · read September 26, 2026
  5. Shopify App Store: Batchly, Lot & Expiry Tracking · read September 26, 2026

We use AI to help with the research for these articles. Every one is read, checked against its sources and edited by Koa before it's published. Spot a mistake? Tell us and we'll fix it and say so. How we write these.

Let’s get your stack in order.

Create your account, bring your spreadsheets, and see your real stock right away.

Get TaroStack

Sign up now for your free 30 day trial. No credit card required.