BatchGuard Help
How-to guide and FAQ for BatchGuard: Lot & Expiry
BatchGuard adds lot codes, expiry dates, suppliers and batch quantities to any Shopify variant, warns you before stock goes bad, tells your pickers which batch to ship first, and pulls a recall list when you need one. Built for food, supplements, peptides, CBD, cosmetics, and anything else with a shelf life.
Getting started
1. Add a lot. Open Lots and click Add a lot. Pick the product and variant, then enter the lot or batch code, expiry date and quantity. Tick Add this quantity to available stock if this is a new delivery you also want added to Shopify inventory; leave it unticked if the stock is already counted.
2. Say where it is and who it came from. Location, supplier and a COA link are optional, and each one switches something on. A location lets the pull list be split per warehouse. A supplier lets a recall pull every batch from one vendor at once. The COA link points at wherever you already keep the certificate — BatchGuard stores the link, never the file.
3. Watch the dashboard. It shows expired lots, what is due inside each of your warning windows, units at risk, and every lot tracked, with live Shopify availability beside each one.
4. Import in bulk. Import CSV on the Lots page takes sku, lot_code, expiry_date, quantity, supplier, coa_url, note. Only the first three are required, and a file written before supplier and COA existed still imports unchanged. Rows that could not be matched are listed so you can fix them.
FEFO — which batch to ship first
Shopify has no concept of a lot, so when one product has three batches on the shelf it will happily let the newest one ship while the oldest runs out of date. The FEFO page lists every product holding more than one live lot and numbers them in the order to pick: 1 is the one to sell first.
Anything already past its date is held back above the pick order, marked Do not ship, with a Write off button beside it. Expired stock is never something to sell first.
Sending a pull list
The person who can walk to a shelf and take stock off it is rarely the person looking at Shopify admin. From the FEFO page you can send them a pull list: every expired lot with product, SKU, lot code, quantity and how long it has been expired. Email it, print it, or copy it into whatever chat your warehouse actually reads.
If your lots have locations recorded, the list splits by location and each one can be emailed separately, so a warehouse only ever gets its own stock. Set an address per location under Settings → Who to tell at each location. A location with no address is skipped and says so rather than failing quietly.
Running a recall
Open Recall and search a lot code or a supplier. You get every matching batch, how much was logged, how much has already been written off, and how much is still on hand — plus the COA link for each one. Export it as CSV or print it for whoever is asking.
The search deliberately includes lots you have already written off or archived. During a recall a destroyed batch is the evidence that you handled it.
Scope, stated plainly: this is inventory, not customers. BatchGuard records lots against product variants and never against orders, so it cannot tell you which customers received a batch. For that, use your order records.
Writing off expired stock
When a batch goes bad, click Write off. The units come out of available stock — capped so stock never drops below zero — the inventory value is recorded for your books, and the write-off is listed with an Undo.
Every write-off asks first and shows what it will remove. On the FEFO page you can clear all expired lots in one action, and undo that whole batch from the banner straight afterwards. Undo puts the same units back at the same location, and cannot be applied twice.
The Written-off history on the Lots page is searchable by product, variant, SKU or lot code, filterable by reason, and paged, so you can answer what happened to a batch months later. Export CSV exports whatever the search is currently showing, not the whole table.
A write-off showing 0 units is not a failure. It means either the variant is not stock-tracked, so there was nothing for Shopify to remove, or it was tracked and the shelf was already empty. The row says which.
Automations
In Settings you can set the two warning windows (days before expiry) and turn on:
Auto-tagging. Products with a lot expiring inside the first window get an expiring-soon tag and fully expired lots get an expired-lot tag. Use the tags to build a clearance collection or a discount rule. Tag names are editable.
Auto-draft. Off by default. When every lot of a product has expired, the product is set to Draft so it stops selling. Nothing is deleted, and republishing is one click in your admin.
Email digest. A daily or weekly summary of expiring lots to your own address.
Run automation now applies the current rules immediately instead of waiting for the daily run.
Languages
BatchGuard is available in English, German, French, Dutch, Swedish, Danish, Norwegian, Finnish, Italian and Spanish. By default it follows the language your Shopify admin runs in, so most merchants never have to choose.
To pick a language yourself, open Settings and use the Language setting: choose a language to use it regardless of your admin language, or Follow my Shopify admin to go back to the default. The choice applies to every screen and to the pull lists, digest emails and recall reports it sends. Product names, SKUs and anything you typed are never translated.
Before you uninstall
Shopify removes the app's access the moment you uninstall, so tags the app added would stay on your products. Use Remove all tags this app added in Settings first. It turns automatic tagging off and strips the tags from every product.
FAQ
Does adding a lot change my inventory?
Only if you tick the add-to-stock option. Otherwise lots are tracking records beside your existing stock.
Where does the write-off value come from?
From the cost per item on the variant in Shopify. Set costs on your variants to get accurate values.
Why does BatchGuard need my locations?
To name them on a pull list and to split it per warehouse. A lot's location is the one you record when you log it — Shopify tracks stock per location at the variant level, so when a variant has stock in two places nothing in the API says which place holds which batch. BatchGuard will not guess, because guessing sends someone to the wrong shelf.
Does the app read orders or customers?
No. It uses product, inventory and location data only.
Does BatchGuard store my certificates?
No. A COA is a link to wherever you already keep the file, so your documents stay in your own systems.
What is the price?
The Free plan covers up to 10 active lots with write-offs, FEFO and recall search. Standard is $9.99 per month with a 14-day free trial, billed through Shopify: unlimited lots, automatic tagging and unpublishing, and the email digest. The App Store listing is the authority if that ever differs from this page.
What happens to my data when I uninstall?
Shopify tells the app to erase your store's data after uninstall, and BatchGuard deletes the lots, write-offs, location contacts and settings.
Support
Email support@aro-pcrm.com and include your store's .myshopify.com domain. Ideas are welcome via Suggest a feature inside the app.
Watch the demo · BatchGuard: Expiry & Lots · How to track expiry dates in Shopify · Privacy policy