Each vehicle in your fleet should have a unique serial number recorded in the system. This isn't a nice-to-have — it's how you file insurance claims, recover stolen bikes via police reports, respond to manufacturer recalls, and prove ownership.
What it is
A serial_number field on every vehicle row. Stored as a free-form
string so you can use:
- The manufacturer's frame serial (best — matches the bike itself)
- Your shop's internal asset tag (e.g.,
MAIN-001) - A combined string (e.g.,
MAIN-001 / Frame: ABC123)
The constraint: serial numbers must be unique within your subaccount. You can't have two vehicles with the same serial. Across subaccounts, serials can collide — that's intentional since fleets are isolated.
Why it matters
Insurance claims
When a bike is stolen, your insurer asks for the frame serial. If you don't have it on file, your claim is denied or delayed by weeks while you find paperwork.
Theft recovery
Police can run frame serials against their stolen-property database. If your stolen bike is recovered three counties over, the frame serial identifies it as yours.
Manufacturer recalls
Manufacturers issue recalls by serial-number range (e.g., "all bikes with frame serial in range 100000-105000"). With serials in the system, you query which of your bikes are affected in seconds.
Asset audit
Quarterly: count bikes physically present, cross-reference serials in the system. Discrepancies surface theft or admin errors.
Where to enter the serial
When adding a new vehicle
/dashboard/vehicles → + New Vehicle. The serial_number field is
in the General section.
Editing an existing vehicle
Open the vehicle detail page → click into the relevant info row → Edit → enter serial → Save.
Bulk import
If you're migrating from another system with serials in a CSV, use the admin import endpoint. (Bulk-import UI is in the works; for now contact support with your CSV.)
What if you don't know the serial
If the bike is already in the field and the frame serial is unknown:
- Look at the bottom bracket / underside of the bike — most manufacturers stamp it there
- Check the headtube under the stem
- As a last resort, use a placeholder like
UNKNOWN-MAIN-001until you find it
The system accepts any string, so a placeholder is better than nothing. Don't leave the field NULL — that prevents the unique-index from catching duplicates.
Where serials appear
Vehicle list
The vehicles list at /dashboard/vehicles can be filtered/sorted by
serial.
Vehicle detail page
Top of the page, alongside vehicle number and model.
Service log
Every service log row records the vehicle UUID; in queries you can join through to surface the serial in reports.
Insurance / police paperwork
When generating reports for insurance claims, include the
serial_number in your output. Most claim forms have a dedicated field
for it.
Common patterns
Manufacturer-issued serials only
If your shop uses only OEM serials (no internal tags), use the frame serial directly. Easiest, most universal.
Internal asset tags only
Some shops prefer a rigid internal numbering scheme (MAIN-001,
SAT-001) for inventory tracking. Use that as the serial. You'll lose
the manufacturer-recall query benefit unless you maintain a separate
spreadsheet of serial-to-asset-tag mappings.
Both
Concatenate: MAIN-001 / Frame: ABC123XYZ. The first part is your tag
for staff, the second part is the manufacturer serial for paperwork.
Slightly noisier in the UI but most informative.
Querying for missing serials
SELECT id, vehicle_number, vehicle_model_id
FROM vehicles
WHERE subaccount_id = '<your-subaccount-id>'
AND serial_number IS NULL
AND deleted_at IS NULL;
Run this monthly. Hunt down each NULL and fix it.
What changes when you set a serial
- The unique index across
(subaccount_id, serial_number)activates, preventing duplicates - The vehicle detail page shows the serial
- Reports that join on serial can now find this vehicle
There's no automatic action triggered by serial — it's a passive data field. But the audit trail it enables is the highest-value piece of data for theft and insurance scenarios.