Overview
When a source-milk lot goes bad, you have hours — not days — to pull it back from every customer who got it. The problem is that one bad lot spreads across many SKU batches and many customers, and tracing it by hand means digging through dispatch registers while spoilage sits on shelves. Lot recalls let you start the recall on the FSSAI lot code printed on the carton, see every affected batch and customer at once, track what comes back versus what gets destroyed in the field, and file the FSSAI report — all in one place.
Paid Pack · locked
This article is part of the Dairy PackDairy Pack
You can read the guide. The actions it describes unlock when an owner adds this Pack in Billing & entitlements.
This is part of the Dairy Pack. Your Owner turns it on by installing the Dairy Pack; the recall screens, KPIs and FSSAI report filing all light up once it is enabled on your tenant.
Where to find it
On the web admin, open Dairy → Recalls at /dairy/recalls. Only the Owner sees the Dairy section in the sidebar. There is no mobile screen for recalls — run them from the desktop admin where the customer list and disposal log are easy to read side by side.
The screen opens on a list of recall events with three KPI tiles across the top — Active recalls, Customers pending, and Recovery %. Click any row to open the detail panel on the right.
Key concepts
- FSSAI lot code — the regulator-facing identifier printed on the carton. A dairy recall is keyed on this, not on a single batch. The system resolves the affected SKU batches from the lot-code link, so one source-milk lot recall typically spans many batches at once.
- Affected batches — the list of SKU batches the recalled lot ended up in. You see the count on the list row and the full list inside the detail panel.
- Customer notification — one row per customer who received any quantity of any affected batch. These appear when you move the recall to Notifying. Each tracks how much was recovered to your warehouse, how much was disposed of in the field, and which channel you reached them on.
- In-field disposal — stock the customer destroys on their side instead of returning it to you. It still counts toward closing the recall.
- Recall state — every recall moves through four states: Initiated → Notifying → Partial → Completed. Partial is set automatically the moment you record any recovery with a quantity above zero — there is no button for it.
Common workflows
Role notes
Recalls are an Owner-only screen. Only the Owner sees the Dairy section and holds the Dairy recall permissions, which cover viewing recalls and notifications (pack.dairy.recall.read) and the full write lifecycle — initiate, notify, record recovery, file report, complete (pack.dairy.recall.write).
Dairy permissions are not part of the Owner's normal all-access bundle — they only attach to the Owner once the Dairy Pack is installed on your tenant. No Pack, no recall screen, even for the Owner.
Other roles (Manager, Accountant, Sales, Warehouse, Delivery, Operator) do not get the Dairy recall screen at all in this release.
Tips & time-savers
You don't have to chase each customer separately. When you move a recall to Notifying, Neev builds the full customer list for you from who received the affected batches — so you only record recoveries, you never build the list by hand. Recording the WhatsApp message ID in the Reference field keeps your proof of notice in one place for the inspector.
The Customers tab header shows a live count, and the Recovery % KPI updates as you log returns — so you always know how close you are to closing without opening every customer row.
Gotchas
You can't close a recall until the FSSAI report is filed. Mark completed will be blocked until the report flag is set — file the report first, then close. Closure notes are also mandatory and become part of the permanent audit trail, so write them properly.
There is no manual "Partial" button — that state is set for you the instant a recovery with a quantity above zero is recorded. And the affected-batch list comes from the lot-code link: if the lot code doesn't resolve, you'll see "no batches resolved" in the panel, which means the lot wasn't tied to dispatched batches.