When to use bulk import
The CSV import flow exists for one common moment: you're switching to OneBookPlus from another workshop system (Workshop Software, MYOB Workshop, iBodyshop, or a spreadsheet) and you have an existing customer-vehicle list to bring across.
If you're entering a few new vehicles a week as customers come in, don't use bulk import — use the + Add vehicle button on the vehicles list. CSV import is for the one-off migration moment.
Required column
- rego — the only required column. Plates over 10 characters are rejected.
Optional columns
Everything else is optional. Headers are normalised to lower_snake_case, and common aliases are accepted (so a spreadsheet exported from Workshop Software doesn't need to be hand-edited first):
| Field | Common header aliases |
|------------------------------------|------------------------------------------------------------------------------------------------------|
| vin | vin, chassis |
| make / model / year / colour | make, manufacturer, model, year, build_year, colour, color |
| fuel_type / transmission | fuel, fuel_type, transmission, trans |
| body_type | body, body_type |
| current_km | current_km, km, odometer |
| last_service_date / km | last_service, last_serviced, last_service_date, last_km, last_service_km |
| rego_state | state, rego_state, registration_state — must match NSW / VIC / QLD / WA / SA / TAS / NT / ACT |
| rego_expiry_date | rego_expiry, rego_expires, rego_due, rego_renewal, registration_expiry |
| ctp_expiry_date | ctp, ctp_expiry, ctp_expires, ctp_green_slip, green_slip_expiry |
| owner_name / email / phone | owner, customer, customer_name, email, phone, mobile |
| notes | notes |
Sample CSV
rego,vin,make,model,year,colour,fuel_type,current_km,last_service_date,last_service_km,rego_state,rego_expiry_date,ctp_expiry_date,owner_name,owner_email,owner_phone
1ABC234,JTEBR3FJ50K012345,Toyota,Hilux SR5,2019,White,diesel,142500,2024-09-12,138000,VIC,2026-08-15,,Daniel O'Connor,fleet@acmeplumbing.com.au,0411222333
2DEF567,,Mazda,CX-5 Maxx,2020,Soul Red,petrol,56000,2025-02-08,51200,NSW,2026-09-22,2026-09-30,Sarah Chen,sarah.chen@example.com.au,0412333444Walk through the import
- Vehicles → Bulk Import (top-right)
- Paste the CSV or upload the file. Headers are recognised automatically.
- Hit Preview. The page shows: rows accepted, rows with errors (with reasons per row), unknown columns the system couldn't map
- Fix any errors in the CSV and re-preview, or proceed past them — bad rows are skipped, good rows still import
- Hit Import N vehicles. Rows whose rego already exists on your tenant are skipped (the import is non-destructive)
Owner contacts
When owner_email is present, the importer:
- Looks for an existing contact on your tenant with that email
- If found, links the vehicle to that contact
- If not, creates a new contact from the row's
owner_name/owner_email/owner_phonesnapshot - Multiple rows with the same email link to one contact, not N
CSV export round-trip
From the vehicles list, Export CSV → Vehicles writes a file using the exact same header names. An export → re-import cycle preserves all rego renewal fields. Useful for editing rego dates in bulk: export, edit in Excel / Google Sheets, re-import.
Limits
- Up to 2,000 rows per import (the UI will warn if your file exceeds this)
- Rows are inserted in chunks of 200 so a single hiccup doesn't lose the whole batch
- An import error on chunk N doesn't affect chunks 1..N-1 — they've already committed