Batch traceability is usually sold as a recall capability, which undersells it and also misses the deadline. Under the FDA's Food Traceability Final Rule, firms holding foods on the Food Traceability List have to keep Key Data Elements against Critical Tracking Events and produce them to the FDA within 24 hours, or a reasonable time the agency has agreed. Two of those seven events — shipping and receiving — happen on a warehouse floor rather than in a field or a plant. So the question is not whether you could reconstruct a batch history given a week. It is whether the pick that left your building yesterday is already tied to the vehicle that carried it. See a pick traced through to a load.
A Recall Does Not Ask What You Picked. It Asks Where It Went.
For warehouse managers, quality leads and inventory controllers: why FEFO has to be enforced rather than encouraged, what a traceability lot code actually has to be, and how a confirmed pick becomes a fact about a specific load on a specific vehicle.
01Where the Chain Runs Through Your Building
The rule tracks food through a series of events, each carrying its own required data. Most of them belong to someone else. Two of them are yours, and they are the two that connect everything upstream to everything downstream.
The Food Traceability Final Rule identifies seven Critical Tracking Events: harvesting, cooling before initial packing, initial packing of raw agricultural commodities, first land-based receiving of food from a fishing vessel, shipping, receiving, and transformation. A warehouse that receives and ships is holding two links of that chain. The rule applies to domestic and foreign firms alike along the entire supply chain for food destined for US consumption, and it is a recordkeeping obligation rather than a labelling one — which is why it lands on your systems rather than on your printer.
02What a Traceability Lot Code Has to Be
"A descriptor, often alphanumeric, used to uniquely identify a traceability lot within the records of the firm that assigned the traceability lot code."
— FDA, Food Traceability Final Rule
Two things follow from that definition and both catch people out. First, it is unique within the records of the firm that assigned it — so it is not a global identifier and you cannot assume the code arriving from a supplier means anything in your numbering. Second, assignment is not optional and not arbitrary: a code must be assigned when a firm initially packs a raw agricultural commodity, performs first land-based receiving of food from a fishing vessel, or transforms a food. If you transform — repack, blend, portion — you are assigning, whether you have thought about it or not.
03What Gets Recorded at the Two Events You Own
Key Data Elements differ by event. These are the ones attached to shipping and receiving, and the pattern is worth noticing: almost every field is about connecting your record to somebody else's.
- Traceability lot codeFor each food on the list, the code identifying the lot going out
- Quantity and unit of measureWhat actually went, in the unit you counted it in
- Product descriptionEnough to identify the food, not just a SKU that means something only internally
- Immediate subsequent recipientWho you shipped it to — the location, not the head office
- Location you shipped fromYour own traceability lot code source or its reference
- Ship dateThe date it left, which is not always the date it was picked
- Reference documentThe type and number that lets the record be found again
- Traceability lot codeThe code assigned by whoever assigned it, captured as received
- Quantity and unit of measureReconciled against what was ordered, and against what arrived
- Product descriptionAs above, matched to your own item
- Immediate previous sourceWho shipped it, and from where
- Location where receivedWhich of your sites took it in
- Receive dateThe date it arrived, which anchors everything that follows
- Reference documentType and number, again so the record is findable
Check the rule text and the current FDA guidance for the exact field list applying to your operation and the foods you handle — requirements vary by event and by whether you are also packing or transforming, and the summary above is orientation rather than a compliance checklist. What it illustrates is the shape of the obligation: a record that does not tie to the source before you and the recipient after you does not do the job, however complete it looks on its own.
04FEFO Against FIFO, and Why One of Them Is Usually Wrong
These get used interchangeably in conversation and they are not the same rule. Swipe the table on mobile.
| FEFO · first expired, first out | FIFO · first in, first out | |
|---|---|---|
| What it orders by | Expiry or best-before date | Receipt date |
| Best for | Anything that expires — food, pharma, chemicals, adhesives | Goods that degrade by age but have no hard date |
| What it prevents | Stock going out of date on the rack while newer stock ships | Old stock sitting indefinitely behind new |
| The failure it causes if wrong | A write-off, or worse, a shipment of expired goods | Slow-moving stock and inflated holding cost |
| Why it has to be enforced | A picker under time pressure takes the nearest pallet, not the oldest | Same — proximity beats policy every time |
Every warehouse that has ever written FEFO into a procedure has also discovered that a picker working against a clock takes the pallet in front of them. That is not indiscipline, it is physics and incentives. A rule that lives in a document gets followed when convenient; a rule that allocates the batch before the picker walks and rejects the wrong scan gets followed always. The difference shows up as write-offs, and write-offs are the cheap version — the expensive version is expired stock that shipped.
05The Partial Pallet Problem
Traceability is easy while a pallet is a pallet. It gets hard the first time one gets split, and every real warehouse splits pallets constantly.
One batch ends up in three places — a full pallet in racking, a part pallet in pick-face, and a few cases on a returns bay. A system that records a batch against a single location is already wrong, and nobody notices until someone goes looking.
The reverse, and more dangerous. Two batches in the same pick-face means the scan is the only thing distinguishing them. If the scan is of the location rather than the batch, the record is a guess dressed as data.
Split a case, combine two batches, relabel — and you have created a new lot whose history is the union of its inputs. That is the point at which a code has to be assigned and the parents recorded, and the point at which most spreadsheet-based traceability quietly gives up.
Stock coming back has been out of your control for a period you cannot document. It needs its own status, its own decision, and an audit trail explaining why it was accepted back into pickable stock — or why it was not.
None of these are exotic. They are Tuesday. They are also the reason batch traceability tends to be rated as working right up until the first time it is tested, because a system that handles the clean case perfectly and the split case not at all looks identical from the outside until somebody asks a real question.
Could you answer a trace request by this time tomorrow?
Not eventually — within the window, with the batch, the quantity, the location history and the vehicle it left on. In thirty minutes we will run one batch through receipt, put-away, pick and load on your own data and show you exactly what the answer would look like.
06How FleetRabbit Handles This
Four points of capture, and the fourth is the one most warehouse systems never reach — because it needs the vehicle as well as the stock.
The batch arrives and is given a location
Batch, quantity, expiry and where it physically wentRecorded when the stock actually goes there
Scan the batch, give it a location, recorded as it happensOldest expiry first, scanned line by line
The allocation is enforced, not suggestedThe confirmed pick becomes a load-verified fact
Which batch left on which vehicle, on which trip07The Quality Hold Nobody Designs For
Traceability is usually built for looking backwards. The more common daily use is stopping something moving forwards.
Find it wherever it is — down to zone, aisle, rack and level — and stop it being allocated, without moving it or relabelling anything.
When QA clears it, it returns to the allocation pool in its correct FEFO position rather than at the back of the queue.
The part that matters if the hold comes late. Which loads carried that batch, and on which vehicles, so the calls you make are to the right customers.
08Questions Warehouse Teams Ask
What is the difference between FEFO and FIFO?
FEFO allocates by expiry or best-before date; FIFO allocates by the date the stock arrived. For anything with a hard expiry they are frequently different orders, because a batch received later can easily expire sooner. Running FIFO on expiring stock is how product goes out of date on the rack while newer stock ships. See FEFO enforced on one aisle.
What does the Food Traceability Rule actually require?
Records. Specifically, Key Data Elements kept against Critical Tracking Events for foods on the Food Traceability List, producible to the FDA within 24 hours or a reasonable time the agency has agreed. It is a recordkeeping rule rather than a labelling one, which is why it lands on your systems. Check whether the foods you hold are on the list before assuming it applies. Talk it through with us.
When do we have to assign a traceability lot code?
When you initially pack a raw agricultural commodity, perform the first land-based receiving of food from a fishing vessel, or transform a food. Transformation is the one that surprises people — repacking, blending or portioning can all qualify, and a firm that thinks of itself as purely a distributor may be assigning codes without realising. Take your own regulatory advice on where you sit. Record codes per batch free.
Is a supplier's lot code good enough?
Not on its own. The definition is explicit that a traceability lot code uniquely identifies a lot within the records of the firm that assigned it. An incoming code is data you should capture and keep, but it does not automatically function as your identifier, and two suppliers can issue the same string. Review your numbering with us.
When is the compliance date?
It was extended to 20 July 2028 by Congressional directive in the Continuing Appropriations Act of 2026. A good deal of published guidance still quotes the earlier date, so check the current position before planning against anything you read — including this. Start building the records now.
Why tie the pick to the vehicle?
Because a trace question is about where something went, not what left the building. A warehouse record ends at the door and a transport record starts there, and if nothing joins them the answer to "which customers received this batch" requires reconstructing a day's dispatch by hand. Joining them at the point of load makes it a lookup. See the join in a demo.
How do you handle one batch stored in several locations?
By treating location as an attribute of a quantity rather than of a batch. A batch is not in a place; some of it is in each of several places, and the sum has to reconcile. Any system that assigns one location per batch will be wrong within a week of going live, and will stay wrong silently. Check yours against a split pallet.
Can we put a batch on hold without moving it?
You should be able to. Physically relocating held stock is slow, introduces its own errors, and tends not to happen at the moment QA actually decides. Holding it in place — visible, located, and excluded from allocation — is both faster and more reliable. Try quality holds free.
Make the Trace a Lookup, Not an Investigation
FleetRabbit holds the batch from receipt through put-away and FEFO allocation to the confirmed pick — then ties that pick to the vehicle and the trip that carried it, so a trace request is answered from one record rather than assembled from three.
No credit card required. Bring one batch and one day of dispatch.