Who this article is for: Authority users.
Overview
Two connected features take the manual work out of lab handoffs. Sample ID generation gives every physical sample a unique, human-readable ID the moment a report configuration activates — ready for bottle labels and the lab's CSV. Chain of custody generation builds a standard, print-ready COC form from the sample report itself, with facility details, sample IDs, and analytes already filled in.
Before you begin: the Location ID
Generated sample IDs start with the facility's Location ID — a short code (up to 8 characters) on the location's record, separate from the Account Number.
New locations require a Location ID; it must be unique in your organization (regardless of case).
Existing locations without one keep working — the field is optional when editing them, and IDs generated for them simply skip that segment.
Outfall IDs must be unique within each location.
Turning on sample ID generation
On the Review step of a Sample Report Configuration, the Generate Sample IDs card has a toggle — on by default: "Automatically assign a unique sample ID to each physical sample when this report configuration is activated."
With the toggle on, IDs appear when the sampling events are created — immediately for authority-assigned configurations, or when the permit is signed for industry configurations attached to a permit.
What the IDs look like
{Location ID}-{Outfall ID}-{code} — for example, ACME-OF1-00001. The code counts up per organization and uses digits and letters, deliberately skipping O, I, and S so nothing reads as 0, 1, or 5 on a handwritten bottle label. If a location or outfall has no ID, that part is simply left out.
How many IDs an event gets depends on the sample type:
Sample type | IDs per event |
Composite | 1 |
Field-Composite | 1 |
Grab (no pacing, or flow-paced) | 1 |
Grab (time-paced) | One per pacing interval across the sampling window |
Meter | 0 — a meter reading has no physical sample |
When one composite covers several analytes, all of those results share one sample ID — they came from the same bottle.
Generating IDs on an existing report
If a report's rows don't have IDs yet (the toggle was off, or new events were added), a Generate Sample IDs button appears in the Sampling Events card next to Upload Results.
Click it and every row without an ID gets one — rows that already have an ID (typed or generated) are never overwritten. The button reads Generating... while it works, then hides once every row is covered.
💡 Editing IDs: you can always change a sample ID in the grid — letters, numbers, dashes, and forward slashes. If your entry collides with a generated ID elsewhere in your organization, the save is rejected and the error names the report that owns it. (Typed IDs that don't collide with generated ones aren't checked across reports.)
Creating a chain of custody
Every sample report now has a Chain of Custody tab.
Click Create Chain of Custody.
The window lists the report's sampling events by due date, each with its analytes and sample IDs. Everything not yet on a COC is pre-selected; use Select All or pick and choose.
Analytes already on another COC show as disabled with "(already on another COC)" — so different analytes can go to different labs on separate forms without doubling up.
Create it. The form gets a tracking number like COC-000001.
💡 When every analyte on the report is already covered, the button is disabled: "Every sample result on this report is already covered by a Chain of Custody".
What's on the form
A standard layout any lab will recognize — your logo, facility name and address, permit number, SIC/NAICS, sampler, outfall, sampling date, and one row per analyte per physical sample, plus two blank rows for field additions. Fields the sampler fills in by hand stay blank: lab/ship-to, times, container counts, conditions, turnaround, and the custody-transfer signatures. Long forms continue across pages, with signatures on the last page.
💡 A COC doesn't need generated sample IDs — without them, the Sample ID column prints blank for handwriting.
Managing COCs
Each COC is a card on the tab — tracking number, created date, and creator — expanding to an inline PDF you can print or download.
Regenerate re-renders the PDF with the same selections and the same tracking number — useful when sample IDs were added or corrected after the form was first created.
Delete removes the form permanently after you type its tracking number to confirm. The generated form isn't a legal document until it's physically signed in the field.
FAQ
Generated IDs have no facility prefix.
The location or outfall has no ID — grandfathered records keep working, they just skip that segment. Add a Location ID to the location record and new IDs will include it.
A sample ID won't save.
It collides with a generated ID on another report, and the error names that report. Use a different value, or check the other report.
Create Chain of Custody is disabled.
Everything on the report is already covered by a Chain of Custody. Delete or regenerate an existing one instead of creating a new one.
A meter row has no sample ID.
Meter readings have no physical sample, so no ID is generated. Upload meter data as usual.
The COC shows outdated sample IDs.
The form predates an ID change. Select Regenerate on that COC's card.
Does a Chain of Custody need generated sample IDs?
No. Without them the Sample ID column prints blank for handwriting.
Related articles
Creating and Configuring a Sample Report Config
Viewing and Filling Out a Sample Report
Submitting, Retracting, and Resubmitting a Sample Report






