Appearance
Importing Data
Admins can bulk import members and staff, vehicles, and bookings from CSV files on Settings → Import data.
Imports are create-only. Existing records are never updated, and no emails are sent during import.
Who can import
Only platform users with the Import data permission (typically your team's Admin role) can open the import page or merge CSV files.
Recommended order
Import in this sequence:
- Members & staff
- Vehicles
- Bookings
Booking rows reference members (by email) and vehicles (by registration) that must already exist in your team.
How the import page works
Each tab follows the same four steps:
- Download sample CSV — column headings the importer understands
- Fill in your spreadsheet — use Excel, Google Sheets, or LibreOffice Calc, then export as CSV UTF-8
- Upload CSV — we parse and validate every row
- Preview and merge — review errors, fix your file if needed, then merge when all rows are valid
While a merge is running in the background, Import data shows a centred spinner, what is being imported, and how many rows have been processed. The count updates as each row starts. You can leave the page and come back. The form returns when the import finishes.
Limits:
- Preview table shows up to 500 rows (the full file is still validated)
- Maximum 2,000 rows per merge
Members and staff
Required columns:
- name
- member_types — one or more of
member(Non-Driver member),driver(Driver member),group_driver(Group member),volunteer_driver(Volunteer driver),assigned_driver(Staff driver), andtrainer(Trainer). Use a pipe (|) for more than one type. Labels such as Non-Driver member and Staff driver are also accepted. The sample CSV includes one row for each of the five common types.
Optional columns include email, phone, emergency contact details, home address, house number or name (home_house), marketing signup, and photo consent.
Home addresses are mapped when you merge, not during preview. If the spreadsheet only has a first line (for example 10 High Street), OpenCommute searches using the team postcode (not the depot street or post town), then picks a map result that contains the street from the CSV and sits inside the team operational area. Street types such as Close, Street, Road, and abbreviations such as St or Rd are treated as the same when matching. If search still finds nothing, autocomplete is tried next (the same lookup as the member home picker). If operational area is off, results more than 15 miles from the team home are skipped. If a row cannot be mapped, it is still imported with the address as written and no pin, and it is listed on Import data → History. Open that import and use Search on the home-issue row to pick a pin on the map.
If homes were mapped to the team default, left as a first line with no pin, still sit on the depot street, or were pinned a long way outside the operational area, re-upload the same member CSV and choose Repair home addresses. Members whose stored address already matches the CSV street and whose pin is inside the area are left alone.
Phone numbers are tidied on import:
- Spaces and hyphens are removed
- A UK leading 0 that a spreadsheet dropped is restored
- A letter O at the start of a number is treated as 0
- Use a pipe (
|) for more than one number or emergency contact — they are stored with a slash between them
Imports are create-only:
- If a member with the same name and email already exists, the row is rejected
- If no email is provided, a member with the same name is treated as a duplicate
- An email cannot already belong to another member or staff person in this organisation. The preview names that person. Leave the email blank if two people in a household need records.
Each imported member’s Activity log records Member imported, with Changed by as the user who ran the merge.
Vehicles
Required columns:
- registration — must be unique in your team
- vehicle_type — for example
minibusorwav - seat_capacity
Optional columns include fuel type, allowed booking types, and home address. Vehicle home addresses are resolved the same way as member addresses, using the team home location when only a first line is given.
Bookings
Supported booking types in CSV import:
internalblockopenone_to_one
Required columns:
- type
- starts_at and ends_at — use
YYYY-MM-DD HH:MMin your team timezone - vehicle_registration — must match an existing vehicle
Each row must include all of the above. Member or driver email with start and end times alone is not enough to import a booking and does not identify an existing booking. Imports are create-only — you cannot change existing bookings with CSV.
driver_email is required for Internal, Open, and One-to-One bookings. If the same email exists on both a member and a staff record (legacy data), the driver is matched to staff and passengers to members.
Optional columns include passenger emails (pipe-separated), status, name, and notes.
For one_to_one rows, passenger_emails is required and must be a single member email — that person becomes the requesting member on the booking (not an Open-booking passenger). For open rows, matching emails are attached as passengers.
Use draft status unless you intentionally need confirmed bookings. Even then, import does not send booking emails.
Rows are checked for vehicle availability, driver eligibility, and other booking rules before merge is allowed.
Onboarding
During team setup, Import your data appears in the onboarding checklist. You can:
- Open Settings → Import data to import CSV files, or
- Choose Skip for now on the onboarding checklist and return later
The onboarding step completes after you successfully merge any import, or when you skip it from onboarding.
Troubleshooting
| Problem | What to try |
|---|---|
| Column not recognised | Download the sample CSV and match header names |
| Dates rejected | Use YYYY-MM-DD HH:MM text, not locale-formatted dates |
| Duplicate row | Imports are create-only — remove or change matching email/registration/name (bookings: fix vehicle time conflicts or add required type, vehicle, and schedule columns — email and times alone are not enough) |
| Booking CSV rejected at upload | Include sample headings for type, vehicle_registration, starts_at, and ends_at. Email with times alone cannot import or update a booking |
| Member type rejected | Use a member or staff type such as member, driver, group_driver, volunteer_driver, or assigned_driver (or the matching labels) |
| Two people share an email | Give each person their own email, or leave email blank. Members and staff in the same organisation cannot share an email. |
| Email already used but I cannot find it | The error names the person, including when they are disabled. If two rows in the file share the email, it is a duplicate in the CSV, not on the platform. |
| Phone numbers missing a leading 0 | Leave them as they are — UK leading zeros are restored on import |
| Home address not mapped | Set a team home location so first lines can be completed on merge, or include a town and postcode. Street types such as Close, Street, and St are treated as the same. If homes still have no pin, re-upload the CSV and use Repair home addresses, or open History and Search on the home-issue row |
| Booking driver error | Import the member first with the correct member_types and email |
| Vehicle unavailable | Choose a time without conflicts, or import after resolving existing bookings |

