SporelineSporeline
Sign InStart free

Getting Started

  • Help Center
  • Getting Started

Operations

  • Dashboard
  • Scan
  • Blocks
  • Batches
  • Recipes

Printing

  • Label Templates

Lab

  • Cultures
  • Cryo Storage
  • Agar Plates
  • Liquid Cultures
  • Trials
  • Strains

Analytics

  • KPIs
  • Data Health
  • AI Insights

Logistics

  • Locations
  • Customers
  • Deliveries

Admin

  • Team
  • Settings
  • Billing
  • API Keys
  • Configuration
  • Enumerables
  • Integrations
  • Notifications
  • Import
  • Brand Profile
  • Products
  • Traceability
  • Compliance
  • Reports
  • Log Transcription
  • Switchboard

Guides

  • Your First Batch
  • Moving Blocks
  • Import from Spreadsheets
  • Lots and Spawn
  • Room Readings
  • The New Sporeline Look
  • Lots on Orders
  • Lot Transactions and Lot Audits
  • The Sterilization Log
  • Reports and Their Numbers
  • Auto-assign Lots and Pick Lists
  • Recipes and Planning a NOC Day
  • Stage Schedules and Due Today
  • Planning
  • Notification Rules
  • QC Checkpoints and Release
  • The Lab: Cultures, Cryo, Plates and Liquid Cultures
  • Traceability and Recall
  • Sporeline: Explore Your Lineage
  • Scanning on the Floor
  • Counts by Scan
  • Shared Handhelds
  • Zebra Handhelds
  • Orders and Packing Slips
  • QuickBooks Customers and Products
  • Accounting Export
  • Site Transfers
  • Raw Materials
  • Optional Features
  • Approve AI Changes
  • Configuration Tabs
  • Harvest Workflow
  • Contamination Alerts and the Weekly Digest
  • Label Printing
  • Team Setup
  • The Free Plan
  • Usage Recording
  • Signing Up and Farmhand on Free
  • Start Your Farm from an AI Assistant
  • Privacy and Your Data
  • Connect an AI Assistant
  • Ask Your Assistant
  • Appearance and Dark Mode
  • API Quickstart
  • Shopify Setup
  • Shopify Troubleshooting
  • Migrate With an AI Assistant
  • Spreadsheet Templates for Importing
  • Photos and Files

API

  • Reference
  • Authentication
  • Rate Limits
  • Error Codes

Traceability and Recall

Trace a lot forward or back, print a chain of custody report, and run a recall scope to see the batches, orders and customers that a lot reached.

Traceability and Recall

Sporeline links each lot to what it was made from and what was made from it: supplier lots, cultures and plates, spawn, batches, blocks, harvests, orders and pallets. The Traceability pages follow those links.

  • Trace Forward shows what was made from a lot.
  • Trace Reverse shows what a lot was made from.
  • Recall Scope lists everything downstream of a lot that you might need to pull, and the customers it went to.
  • The Chain of Custody Report is a printable list of one batch’s or item’s whole lineage.

Who can do what

ActionWho
Trace Forward and Trace ReverseEveryone on the team
Chain of Custody ReportEveryone on the team
Recall Scope, and the orders and customers a lot reachedManager, Owner
The complete walk, and Customers affected on the Sporeline pageManager, Owner
Register a supplier lotWorker, Manager, Owner (see Lots and Spawn)

Below Manager, Recall Scope isn’t offered, and the Orders card says “Orders and customers are shown to managers.”

Viewers never see customer names on a trace: the API shows hidden in their place, and the page shows Hidden for your role. Workers and up see the name; contact details stay with Managers.


Find a lot

  1. Open Traceability in the sidebar.
  2. In Lot code or ID, type the lot code from the tag, or scan a label. A batch, block, order, pallet or lab label works. You can also type a supplier lot’s lot number or name.
  3. Pick a Trace Direction.
  4. Click Search, or press Enter.

If more than one batch has the name you typed, the page lists them with their status and start date. Click the one you mean.

When you type a supplier lot’s number or name, Sporeline checks your newest 500 supplier lots. If your farm has more than that, the page doesn’t pick a lot for you, because an older lot with the same name or number could be past the newest 500. It says could not search every supplier lot instead. Open a batch made from the lot you mean and click Recall next to it under Inputs, or paste the lot’s ID.

If you start a new search before the last one finishes, the page shows only the newest one, and the export holds that one too.

A supplier lot received under Raw materials is an ingredient lot too, so a recall from it lists every batch that used it with Use in batch.

Some pages open this for you:

  • A batch page has Traceability Report, which opens its chain of custody.
  • A culture, plate or liquid culture page has Recall from this item (Manager or Owner).
  • Supplier lots (the button at the top of Traceability) links each lot to its recall.
  • A lot’s page has an On orders card listing the orders holding or shipped with its units. See Lots on Orders.
  • On an order, a harvest allocated to a line links to its trace.

Trace forward or reverse

The result is a tree starting at the lot you searched. Forward shows what was made from it, step by step. Reverse shows what it was made from.

A tree stops at 500 linked lots or 10 steps deep, so it stays readable. When it stops, it says Partial tree — some branches are not shown. For the full list, run Recall Scope instead, which goes much further.


Run a recall scope (Manager or Owner)

  1. Search the lot with Trace Direction set to Recall Scope.
  2. Read the Recall Scope Report. The top shows the source lot, and counts of Batches, Blocks, Harvests, Deliveries and Customers. Extraction lots and Pallets show when the recall reached any.
  3. Below the counts are the tables, as far as the recall reached:
    • Affected Cultures, Plates and Liquid Cultures: what to pull from the lab.
    • Affected Batches: what each has on hand, for example 15 of 100, and for a lot, how many units are still reserved for orders (· 0 reserved). The Location column says where a lot’s units are, for example Rack 197: 60, In transit: 15.
    • Affected Extraction Lots: jars, tinctures and blends made from the material. These aren’t sold on orders, so no buyers are listed for them.
    • Affected Blocks and Affected Harvests. Each block shows its Location (the room or rack it is in now) and the Order it went on, and each harvest shows the order it was sold on. A block that isn’t on an order shows --.
    • Affected Deliveries: each order with its customer, ship date and status, in two groups (see below). When the order took units of a lot, the Lot units column says how many. When blocks or harvests went on it, the Blocks and harvest column counts them, for example 2 blocks · 1 harvest (1200 g).
    • Other orders that received the same lots: shown when you start the recall from an order (see below).
    • Affected Pallets: which pallet each block went out on.
    • Affected Customers: name, contact, email and phone.
    • On hand by location: what is still at the farm, place by place (see below).

Every batch, block, harvest, lab item, extraction lot, order and complaint in these tables opens its own page when you click it. A harvest opens the page of the block it came from.

If nothing was made from the lot, the report says No downstream entities found.

Who received it, and who still holds it

Affected Deliveries splits the orders into two groups:

  • Received affected product: orders that have shipped. These are the buyers to contact.
  • Has affected product allocated, not shipped: orders that are planned or packed, with affected product set aside for them that hasn’t left yet. You can still pull it before it goes out.

Sporeline decides this by what actually shipped, not only by the order’s status. When an order ships part of itself and stays packed for the rest, it’s listed in both groups: once for what reached the buyer and once for what is still waiting. Units you put on an order by count from a batch, and plates, slants, liquid cultures and vials sold on an order, count the same way: a slant that shipped on a backorder is listed under Received affected product even though the order is still packed. If Sporeline couldn’t read whether a lot’s or batch’s units, a block, a harvest or a lab item went out on an order, Export CSV lists it as Not read: check with the buyer, and the order’s Shipped column says Shipment not read. Ask the buyer, or open the order, before you decide what to pull.

Where it is now

Each block’s Location is the room or rack it is in right now, and each lot’s Location lists its placements with how many units are at each. On hand by location adds it up for each place: how many blocks are there and how many units of a lot. Blocks that are finished or on an order that has shipped aren’t counted, because they have left. Units at your farm’s In transit place are counted under In transit, since they have left the rack but may not have reached the buyer.

When you put units on an order by count from a batch kept by block, the order records how many left but not which blocks. Some of those blocks may still be counted at their places, so On hand by location is marked Partial list and says the counts may be high by up to that many units. If some of those shipments couldn’t be read, it says the counts may be high by an unknown amount. Check those batches before you rely on the counts.

In a very large recall, a lot’s Location may list its biggest places and then say how many more there are, for example Rack 197: 60, and 3 more places (see On hand by location). On hand by location lists up to 500 places, those holding the most. If there are more, it is marked Partial list and says how many smaller places are not listed.

A place that has been deleted is listed by its ID. Blocks and units with no location recorded are listed under No location. If Sporeline couldn’t read your farm’s In transit setting, the In transit column says Unknown and a note under the table says why.

Export the report

There are three buttons at the top of the report:

  • Export JSON saves the whole report: the source lot, the counts, every table and any warning shown on the page.
  • Export CSV saves a spreadsheet with one row for each lot, block or harvest on each order: the group (received or not shipped), customer, contact, email, phone, ship date, quantity and unit, lot code or block, order number, status and, on a recall started from an order, the lot that linked it. Shipped orders come first. An order with nothing listed on it still gets one row, so no buyer is left out.
  • Export on-hand CSV saves the On hand by location table: location, blocks, lot units and in transit.

If the report has a note, such as the one saying older sales of lab items aren’t linked to orders, Export CSV starts with a Note row that carries it, so the file says it too. In a very large recall, an order with more lots than the report could read lists the rest as one Not read: check with the buyer row, for example 3 more lots not listed.

An incomplete report has INCOMPLETE in each file name. The JSON file carries the warning inside it, and both spreadsheets end with a Partial list row, so none of them can be mistaken for a full list later.

Units of each lot per order

A lot often goes out on more than one order. In Affected Deliveries, the Lot units column has one line per lot on the order:

  • Lot 101326-POBO-7: 60 shipped and the ship date: the order shipped that many units of the lot.
  • Lot 101326-POBO-7: 25 allocated, not shipped: the units are held for the order but haven’t shipped yet.
  • Lot 101326-POBO-7: units not read, in amber: Sporeline couldn’t read that order’s units. The order is still on the list. Open the order and check its lots.

The column only shows when an order took units of a lot. Export JSON carries the same numbers. See Lots on Orders for how a lot is split across orders.

Starting from an order

A complaint usually names an order, not a lot. On Traceability, scan the order’s label or paste its ID (from the order page’s address), choose Recall Scope and click Search.

The recall lists that order under Affected Deliveries. Under Other orders that received the same lots it lists every other order that got units of a lot that also went out on that order. The Linked by column names the lot, for example “Through lot 101326-POBO-7”.

If some of the order’s lots couldn’t be read, the banner says that other orders that got the same lots may be missing.


When a recall is incomplete

A recall stops if it reaches 10,000 linked records, runs more than 25 steps deep, or runs out of time. It lists at most 2,000 customers. When that happens, a red banner at the top of the report says so, and each short table is marked Partial list. Counts read “at least”.

The banner’s heading says which kind of limit was hit:

  • Incomplete — this is not the full recall scope: the trace stopped before the end of the chain, or some linked lots have no record of their own. Affected material exists that is not listed. Don’t use the tables to decide what to pull or who to contact. Work from the complete walk instead (see the next section). Where the banner suggests it, you can also run the recall again from a lot further down the chain, such as one batch or block instead of an ingredient lot.
  • Incomplete — not every buyer is listed: every affected order is listed, but the customer table is short. Find the missing buyers from the orders.
  • Incomplete — some buyers cannot be contacted from this report: some buyers no longer have a customer record or saved contact details, so they are listed by customer ID. Look them up in your own records, such as invoices or order emails.
  • Incomplete — some batch counts could not be read (or extraction lot counts): those rows show an unknown count. Open them and check what is on hand.
  • Incomplete — some order quantities could not be read: some orders say units not read in Lot units. Open those orders and check their lots.
  • Incomplete — some records could not be read: more than one of the above. Each gets its own line under the heading.

A note above the report may also say that older sales of lab items aren’t linked to orders, or that nothing from a batch has been put on an order yet.


When a recall is bigger than one screen

The recall on the page answers in a few seconds, so it stops at the limits above. When a recall stops at one of them, Sporeline doesn’t leave it there. It keeps walking the whole chain in the background, with no limit, and a The complete walk card appears above the red banner. The tables below it stay on the page as what is known so far.

While the walk runs, the card says how far it has got, for example 31,204 lots read, level 6, started 09:41 by you., with the counts found so far and how many lots a minute it is reading. You can leave the page and come back; the walk keeps going without you. If someone else on your team started the same walk first, the card says you are watching theirs, and that anything changed after it started is not in it.

When it finishes, the red banner goes away and the card says Nothing was skipped. with the exact counts: customers, orders, deliveries, pallets, blocks, harvests, lab items, extraction lots and every lot it read. It has two downloads:

  • Download the call sheet (CSV) lists every customer to contact.
  • Download the report (ZIP) holds one spreadsheet for each kind of record.

A walk started from an order also walks from every lot that order got, the same way the recall on the page does, so its counts and call sheet include the other orders that received the same lots. If it can’t read all of the order’s lots, it fails and says so rather than finish without them.

Each download makes a fresh link that works for 15 minutes, so a page left open all afternoon still downloads. These files never have INCOMPLETE in their names, because the walk either reads everything or tells you it failed. The page’s own Export buttons still save the quick read, and still mark it INCOMPLETE.

If the walk fails, the card says why and has a Retry button. Don’t work from the counts it reached before it stopped.

You don’t have to wait for a recall to stop short. A Manager or Owner can click Run the complete walk on any recall report, and can start one from any lot on the Sporeline page with Customers affected, on the item you are looking at or on any batch, block, culture, plate or liquid culture row under it. That opens the item’s chain of custody and starts the walk straight away. Workers see “Counts only; a manager can list customers.” in its place, and Viewers don’t see it.


What a recall result tells you, and what it doesn’t

A recall scope lists what Sporeline has linked to the lot: what was made from it, the orders it went out on, and the customers on those orders.

It doesn’t know about anything that wasn’t recorded. For example:

  • a supplier lot that was never attached to the batch it went into,
  • product sold or given away without an order in Sporeline,
  • a block moved or sold outside Sporeline.

The report is a starting point for your own recall procedure, not the whole of it. Check it against your records before you act on it.


Complaints in a recall

A quality or contamination complaint is often how a recall starts. A recall scope lists the customer complaints that name any lot in it, under Complaints: the type, the lot, the order, the day it came in and its status. Click one to open it.

  • Only complaints that named the lot when they were reported are listed. A complaint with no lots ticked doesn’t show here; open it and check the order instead.
  • The recall checks your farm’s newest 500 complaints. If you have more, the list is marked Partial list and older ones are on the Complaints page.
  • If complaints couldn’t be read, the recall says so. It never shows “none” when it couldn’t look.
  • The exported report includes the complaints too.

To record a complaint, see Complaints, replacements and credits.


Chain of Custody Report

  1. Open a batch and click Traceability Report. For other items, open them on the Sporeline page (View in Sporeline) and click Traceability report.
  2. The report lists every step of the lineage, from the earliest source to the last thing made from it: Step, Entity Type, Name / Label, Date Created and a View link. The item you opened is marked This entity. Deleted, suspect and discarded records are marked.
  3. The Orders card lists where product from it went (Manager or Owner), with the units of each lot the order got, as in Lot units above.
  4. Click Print to print it. The printout carries the date and time it was made.

If a lineage is too large or too deep for one report, the page says so. Click View in Sporeline to browse it level by level instead.


When something goes wrong

  • “Type or scan a lot code to search.” — the box is empty.
  • “That label is not a lot.” — scan a lot, block, order or lab label, or type the lot code.
  • “Could not search every supplier lot for …” — the lot is older than the newest 500 supplier lots. Open a batch made from it and click Recall next to it under Inputs.
  • “Lot … has no trace links yet: nothing from it has been harvested or put on an order.” — the lot exists but nothing has been made from it or sold yet.
  • “Orders and customers are shown to managers.” — your role can’t see recall results. Ask a Manager or Owner.
  • “Hidden for your role” where an order’s customer would be — Viewers don’t see customer names on a trace. Ask a Worker, Manager or Owner.
  • “This list may be short” on the Orders card — run Recall Scope on the Traceability page for the full list.
  • “No lineage data found for this entity.” — nothing is linked to it yet.

With an AI assistant

If you’ve connected an AI assistant to your farm (see Connect an AI Assistant), you can ask it to trace a lot instead of clicking through the Traceability page. It reads the same links the page does, so its answer matches what you’d see there.

  • To follow a lot forward to the blocks, harvests and orders it went into, or back to the cultures, spawn and supplier lots it came from, the assistant uses lot_trace. You can start from a lot, batch, block, harvest, order or lab item.
  • To see everything a recall would reach, including the orders, the customers who got them and any complaints, it uses recall_scope. Only Managers and Owners can run a recall scope, the same as in the app. Customers’ phone numbers, emails and contact names are only shared with the assistant when the farm has turned on Share customer details with AI assistants; otherwise it gets the customer names and is told the details are held back.
  • To look at the lineage of a culture, plate, liquid culture or block, including any suspect source above it, it uses lineage_get.

Viewers can trace lots and read lineage, but the customer on each order shows as “hidden”, just as it does on the page. If a trace or recall is too big to read in one go, the assistant is told the answer is partial, and you should open the Traceability page to see the rest.

A question you might ask: “Which orders got anything made from supplier lot RM-2041, and who were they shipped to?”

Try this on your own farm. Free for up to 100 blocks a month.

Start free

© 2026 Sporeline · Built by a mushroom farmer, for mushroom farmers.

iPhone app on the App StoreWhat's newSupportNeed help? Email chase@sporeline.com