practical guide
How do I set up lot tracking so I can trace one finished bottle back to its ingredient lots?
Traceability is a numbering habit, not software magic. A step by step method for assigning lot codes to incoming herbs, linking them to batch records, and pulling a full trace in minutes.
You need three numbering habits and one linking rule. Assign a receiving lot number to every incoming herb the day it arrives. Assign a batch number to every batch you make. Write the receiving lot numbers into the batch record as you weigh, not afterward. The linking rule is that the finished goods lot code printed on the bottle is derived from the batch number, so a bottle points at exactly one batch and that batch points at every input lot.
Do that consistently and a full trace takes about four minutes with a binder. Do it inconsistently and it takes a weekend and still has holes.
What follows is the setup, step by step, plus a mock recall drill you can run this month, before something forces the question.
What a trace has to prove in both directions
Traceability is not one capability, it is two, and small operations usually build only half of it.
Backward trace: given a bottle, name every ingredient lot and supplier in it. This is what you need when a customer reports a reaction, or when you need to know whether a particular bottle contains the root from the supplier you have since stopped using.
Forward trace: given an ingredient lot, name every batch it went into and every bottle sold from those batches. This is what you need when a supplier issues a recall notice on a lot you received eight months ago.
The backward trace comes free from a good batch record. The forward trace does not, and it is the one that matters most under pressure, because a supplier recall names an input, not a product. Build your numbering so you can start from either end.
Keep reading: Should I buy bulk herbs from a wholesaler or contract directly with a regional grower?
Assigning a receiving lot number the day a shipment arrives
Receiving is where traceability is won or lost. If a bag of herb goes onto the shelf without a number, everything downstream is a guess.
Use a code with meaning built in so you can read it without a lookup. A workable pattern:
YYMMDD-SUP-HERB-n
For example, 250914-MTR-ASHW-1 is the first ashwagandha lot received from that supplier on September 14, 2025. The trailing number handles two lots of the same herb arriving in one shipment, which happens more often than you would think when a supplier splits a large order across harvests.
Then, at the moment of receiving:
- Write the receiving lot number on the outer bag or jar in permanent marker, and on a tag if you decant.
- Log the date received, supplier, supplier's own lot number, quantity, and expiration or best by date.
- Perform and record your identity verification: organoleptic check at minimum, comparison against a retained reference sample, or a supplier certificate on file.
- Quarantine until that check is signed off. An unverified herb should not be reachable from the bench.
The single most valuable habit is decanting discipline. When you move herb from the shipping bag into a working jar, the receiving lot number moves with it. Never top up a partially full jar with a new lot: finish the old one, or use a second jar. A jar holding two lots destroys the trace for every batch that draws from it.
What to capture from the supplier certificate of analysis
A certificate of analysis is only useful if it matches the bag in front of you. Check the supplier lot number on the certificate against the number printed on the bag before you file anything.
Capture at minimum:
- Botanical name and plant part, and whether it matches what you ordered.
- Supplier lot number and harvest or production date.
- Country of origin, and whether wildcrafted or cultivated.
- Identity test method and result, and any marker compound assay.
- Microbial results, and heavy metals or pesticide screening if provided.
- Certification status: organic certifier and certificate number where claimed.
File the certificate against your receiving lot number, not the supplier's, so it surfaces when you look up the lot the way your own system names it. Scan it. Paper certificates disappear.
If a certificate is missing an identity test result, that is not a paperwork gap, it is a sourcing decision. Decide before the herb goes into a client formula, not after.
Structuring the batch record so inputs are named by lot
The batch record is the hinge. Everything the trace needs passes through it, and it has to be filled in while your hands are on the work.
A batch record for one tincture batch should hold:
| Field | Example entry |
|---|---|
| Batch number | B-2509-0043 |
| Formula name and version | Sleep Support v3 |
| Date started, date pressed | Sep 16, 2025 / Oct 2, 2025 |
| Each herb: name, part, receiving lot, grams weighed | Ashwagandha root, 250914-MTR-ASHW-1, 120 g |
| Menstruum: lot, ratio, target percent alcohol | 250901-ORG-CANE-1, 1:5, 45 percent |
| Theoretical yield and actual yield | 600 mL / 512 mL |
| Bottles filled and size | 8 at 2 fl oz |
| Finished goods lot code | B25090043 |
| Made by, checked by, dated signatures | Initials and dates |
Write the receiving lot number at the scale. If you leave it for later, you will write the lot that is on the shelf at the time you remember, which may not be the lot you used.
Version your formulas. When you adjust Sleep Support, it becomes v4 and the old record stays intact. A record that gets edited in place cannot support a trace.
Keep reading: What are the most common mistakes herbalists make when scaling a formula from one quart to five gallons?
Coding the finished goods lot onto the bottle
The finished goods lot code goes on the label, and it should map to the batch number by a rule anyone in the shop can apply without thinking.
Simplest option: the finished code is the batch number with the punctuation stripped. B-2509-0043 prints as B25090043. No translation table, no ambiguity.
Two rules keep this clean. First, one batch equals one finished lot code. If you fill part of a batch into 1 oz bottles and part into 2 oz, they share the code and the batch record notes both fills. Second, if you ever split a batch across two label runs or two fill dates, append a suffix, B25090043-A and -B, and record why.
Print the code, do not handwrite it, and put it where a shrink band will not scratch it off. A customer reading it over the phone should not have to guess between a zero and the letter O.
Reconciling yield and accounting for loss
Yield reconciliation is the check that tells you whether your record is describing reality. It is also required thinking under supplement good manufacturing practice, which expects you to investigate discrepancies rather than shrug at them.
Work it as a percentage. Theoretical yield is the menstruum volume you poured. Actual yield is what you recovered after pressing and straining. In the batch above, 512 of 600 mL is 85.3 percent, so loss is 14.7 percent, held in the marc and left on filters and glassware.
Set an expected range per product type from your own history: leafy material loses more than roots, and hand pressing loses more than a hydraulic press. If your usual range for this formula is 82 to 88 percent, then 85.3 is fine and needs no comment. A result of 71 percent needs an investigation note: a torn press bag, a spill, or a menstruum measurement error.
Then reconcile bottles. 512 mL divided by 59 mL is 8.7 bottles, so eight filled and a remainder. If your record says twelve bottles from 512 mL, someone is underfilling and that is a net quantity problem as well as a records problem.
See how HerbalCounter handles this for herbal apothecaries and small batch wellness makers
Running a mock recall on one bottle to test the system
Do not wait for a real event to discover a gap. Run this drill once a quarter. Give yourself two hours and a stopwatch.
- Pull a bottle at random from the shelf. Read only the lot code from the label.
- Find the batch record from that code alone. Note how long it took.
- List every ingredient receiving lot in that batch, with supplier and supplier lot number.
- Pick one of those ingredient lots. Now go forward: list every other batch that lot fed.
- For each of those batches, list where the units went: retail sales, client pickups, wholesale accounts.
- Draft the customer contact list you would actually use, and check whether you have working contact details for the client formula recipients.
- Write down every place you had to guess, and fix that step in the system.
Step 5 is where most shops stall. Retail counter sales are anonymous, so you may only be able to reach clients and wholesale accounts. That is a real limitation and it argues for recording lot codes on client pickup records, which costs you five seconds at handoff.
A pass looks like this: batch record found in under five minutes, ingredient lots listed in under ten, forward trace complete in under thirty, no guesses.
Retention samples and how long to keep records
Hold a retention sample from every batch. A small vial, labeled with the finished lot code and the date, stored dark and cool. It costs you an ounce of product and it is the only way to test what actually shipped if a question arises a year later.
On record retention, supplement good manufacturing practice under 21 CFR Part 111 requires records be kept for one year past the shelf life date, or two years beyond the date of distribution of the last batch associated with those records if you do not put a shelf life date on the product. Practically, most small makers pick a fixed policy of three years and stop counting, because storage is cheap and reconstructing is not.
Keep receiving logs, certificates, batch records, label proofs, and complaint records under the same policy. A complaint file with no matching batch record is a hole in the exact spot you needed a floor.
Making the numbering hold itself together
Every step here is doable on paper. Paper fails not for lack of effort but on the linking: the receiving log is in one binder, batch records in another, client formulas in a third, and the forward trace means reading all three by hand.
HerbalCounter keeps the links live. Receiving lots carry their supplier detail and certificates, batch logs pull inputs by lot as you record them, client formula records point at the batches that filled them, and a reorder prompt fires when a lot runs low. Ask it what went into one bottle, or which bottles a recalled lot touched, and both answers come back from the same record.