Skip to main content
Skip to content
Pricing
Try a live demo, it's freeBook a DemoSign InStart free

Bulk Import Vehicles from a Spreadsheet

Load a customer-vehicle database from a CSV. Header aliases match the usual exports from Workshop Software, MYOB Workshop, iBodyshop and home-grown sheets.

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):

FieldCommon header aliases
vinvin, chassis
make / model / year / colourmake, manufacturer, model, year, build_year, colour, color
fuel_type / transmissionfuel, fuel_type, transmission, trans
body_typebody, body_type
current_kmcurrent_km, km, odometer
last_service_date / kmlast_service, last_serviced, last_service_date, last_km, last_service_km
rego_statestate, rego_state, registration_state: must match NSW / VIC / QLD / WA / SA / TAS / NT / ACT
rego_expiry_daterego_expiry, rego_expires, rego_due, rego_renewal, registration_expiry
ctp_expiry_datectp, ctp_expiry, ctp_expires, ctp_green_slip, green_slip_expiry
owner_name / email / phoneowner, customer, customer_name, email, phone, mobile
notesnotes

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,0412333444

Walk through the import

  1. Vehicles, then Bulk Import (top-right)
  2. Paste the CSV or upload the file. Headers are recognised automatically.
  3. Hit Preview. The page shows: rows accepted, rows with errors (with reasons per row), unknown columns the system couldn't map
  4. Fix any errors in the CSV and re-preview, or proceed past them, bad rows are skipped, good rows still import
  5. 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_phone snapshot
  • Multiple rows with the same email link to one contact, not N

CSV export round-trip

From the vehicles list, Export CSV, then Vehicles writes a file using the exact same header names. An export, then 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

Did this answer your question?