Contact Us

If you still have questions or prefer to get help directly from an agent, please submit a request.
We’ll get back to you as soon as possible.

Please fill out the contact form below and we will reply as soon as possible.

  • Contact Us
  • Home
  • Operations
  • Trip Management

CSV Import - End to End Guide

Learn how to efficiently import CSV files for streamlined data management and analysis in your applications.

Written by Jenn Southan

Updated at March 3rd, 2026

Contact Us

If you still have questions or prefer to get help directly from an agent, please submit a request.
We’ll get back to you as soon as possible.

Please fill out the contact form below and we will reply as soon as possible.

  • Onboarding
  • Operations
    Trip Management Driver Management Client Management Facility Portal / District Portal
  • Workbooks
  • Configurations
  • Tobi Driver App
  • What's New
+ More

Table of Contents

Bulk Import Trips via CSV Navigate to Trip Import Upload History — Field Definitions Upload Date Uploaded By Total Records / Unprocessed Success / Failures Logs Status How to Import Your CSV File Step 1 — Start a New Upload Required Field Optional Field How to Find Account Code Step 2 — Upload File and Configure Mapping Step 3 — Create a New Mapping Template Add Mapping Name How to Match Legs Method 1 — Same Invoice Number Method 2 — Client Identification Method 3 — Alphabetical Leg Sequence Client Information Mapping Pickup & Dropoff Information Mapping Time and Date Fields Pickup Location Fields Dropoff Location Fields Trip Information Mapping Important Notes Special Requirement Section Step 4 — Preview and Save Draft Behavior System Rules for CSV Trip Import Required Fields for CSV Upload System Rules for CSV Trip Import Required Fields for CSV Upload Will Call Behavior Rule Example — Will Call Creation Passenger Duplicate Detection Matching Criteria Duplicate Logic Example — Existing Profile Used Example — Duplicate Profile Created Example — MRN Missing Trip Duplicate Detection Duplicate Behavior Example — Duplicate Trip Update CSV Input Result When Trips Are Created Separately Example — Separate Trips CSV Input Result Sequential Leg Creation Example — Three Legs CSV Result Interaction with Standing Orders Example Result Important Edge Case — Return Trip Uploads Scenario 1 — Single Outbound Trip in CSV Behavior Example First Upload (Outbound Only) Second Upload (Return) Scenario 2 — Multiple Outbound Records in CSV Behavior Example First Upload (3 Records) Second Upload (Returns) Why does this happen? Source of Truth — Trip-Level Data from CSV Rule Fields Affected How the System Behaves? Example — Seating Need Override Existing Passenger Profile CSV Record Result Example — Phone Number Difference Existing Profile CSV Record Result Need Help?

Bulk Import Trips via CSV

Bulk trip import allows dispatchers to efficiently create multiple trips in Tobi by uploading a properly formatted CSV file. This article explains how to upload, map, monitor, and understand system rules for trip imports.

Navigate to Trip Import

Go to: Operations → Trip Import Trips

This screen allows you to:

  • Upload new trip files
  • Track upload history
  • Download error logs
  • Monitor processing status

Upload History — Field Definitions

  • The upload history table displays all files uploaded to the system.
  • Unique system identifier for each uploaded file.

Upload Date

Timestamp showing when the file was uploaded.

Uploaded By

Name of the user who uploaded the file.

Total Records / Unprocessed

  • Total Records = Total rows present in the CSV file (each row = one record).
  • Unprocessed = Number of records that were not processed (trips were not created due to failures).

Success / Failures

  • Success = Records for which trips were successfully created.
  • Failures = Records for which trips were not created.

Logs

Downloadable error log containing:

  • Only failed records
  • Failure reason in the last column
  • Provided as a CSV file

Status

Indicates the processing state of the file.

Possible values:

  • Success — File uploaded successfully
  • Draft — File saved in draft mode
  • Success (Partially Successful) — File processed but contains failures (error log available)

How to Import Your CSV File

Step 1 — Start a New Upload

Navigate to: Operations → Trip Import Trips → New Upload. You will be taken to the Upload Bookings screen.

Required Field

Fleet: - Select the fleet for which trips should be created

Optional Field

Account: - Use this when uploading trips for a single account.

If uploading for multiple accounts: 

  • Do NOT select an account on the upload screen
  • Instead, include Account Code in the CSV
  • Map it during the mapping step

How to Find Account Code

Go to: Configurations → Accounts → Select Account → 3 dots → Edit

The account code is located under Basic Information if it was entered. If not entered, enter an account code and save it at the account level to be used later.

Example:

Account Code
New York State Hospital 001
New Jersey State Hospital 002

 

In the CSV:

  • Add an Account Code column
  • Map it during upload
  • System will create trips for the corresponding account per record

 

Step 2 — Upload File and Configure Mapping

  • Upload the CSV
  • Click Continue
  • You will be redirected to the Mapping Screen
  • You can:
    • Create a new mapping
    • Use an existing template
    • Clone and modify an existing template once exsiting template is selected

Step 3 — Create a New Mapping Template

Add Mapping Name

  • Provide a unique name. This template will be saved for future use.

How to Match Legs

The system requires a unique passenger identifier to correctly group and sequence legs.

You can use any of the following approaches.

Method 1 — Same Invoice Number

Use a column that identifies multiple legs of the same client.

Example:

Invoice From To
1234466 A B
1234466 B A

Leg determination logic:

  • Based on pickup time or dropoff time
  • The latter time becomes Leg-B

Method 2 — Client Identification

Use a unique identifier per passenger, such as:

  • Member ID
  • Trip ID
  • MRN

Method 3 — Alphabetical Leg Sequence

Example values:

  • 4647-A
  • 4647-B

The system recognizes these as legs of the same booking.

Client Information Mapping

Field Required Definition Example
Member ID No Unique identifier for the passenger from the source system. Helps prevent duplicate profiles. MBR12345
Full Name No Passenger’s complete name in a single column. Use instead of first/last name if available. John A. Doe
First Name Yes* Passenger’s first name. Required if Full Name is not used. John
Last Name Yes* Passenger’s last name. Required if Full Name is not used. Doe
Middle Name No Passenger’s middle name or initial. Allen
Email No Passenger’s email address. john.doe@email.com
Date of Birth No Passenger’s DOB in supported date format. 01/15/1980
Gender No Passenger’s gender. Male
Primary Phone Number Yes Main contact number for the passenger. Used for duplicate detection. 3155558899
Secondary Phone Number No Additional contact number. 3155557777
Client Notes Public No Notes visible to drivers and dispatchers. Needs front door pickup
Client Notes Private No Internal notes visible only to dispatchers. VIP client
Client SSN No Social Security Number of the passenger. 123-45-6789
Alias Name No Nickname or alternate name of passenger. Johnny

*Required when Full Name is not mapped

 

Pickup & Dropoff Information Mapping

Time and Date Fields

Field Required Definition Example
Time Only No Column containing only time in HH:MM format. 14:30
Date Only Yes Column containing only date in DD/MM/YYYY format. 25/12/2025
Pickup Time (DateTime) Conditionally Combined pickup date and time in one column. 14:30 25/12/2025

Note: At least one valid time configuration is recommended. If none are mapped, trips become Will Call.

Pickup Location Fields

Field Required Definition Example
Pickup Address 1 Conditionally Street address line 1. Required if full address is not mapped. 116 Martin Luther King E
Pickup Address 2 No Additional address details. Suite 200
Pickup City Conditionally City of pickup location. Syracuse
Pickup State Conditionally State of pickup location. NY
Pickup Zip Conditionally ZIP/postal code. 13205
Pickup Unit/Apt No Apartment or unit number. Apt 4B
Pickup Address (Full) Recommended Full formatted pickup address in one field. If used, individual fields are not required. 116 Martin Luther King E, Syracuse, NY 13205

Condition rule: Either full address OR the broken-down components must be mapped.

Dropoff Location Fields

Field Required Definition Example
Dropoff Address 1 Conditionally Street address line 1 for dropoff. 500 State St
Dropoff Address 2 No Additional dropoff details. Floor 3
Dropoff City Conditionally City of dropoff location. Syracuse
Dropoff State Conditionally State of dropoff location. NY
Dropoff Zip Conditionally ZIP/postal code. 13202
Dropoff Unit/Apt No Apartment or unit number. Suite 12
Dropoff Address (Full) Recommended Full formatted dropoff address. 500 State St, Syracuse, NY 13202

Condition rule: Either full address OR the broken-down components must be mapped.

 

Trip Information Mapping

Field Required Definition Example
Leg Notes No Notes specific to a trip leg. Patient prefers the rear entrance
Booking Fare No Manually entered fare that overrides price rules. 45.00
Mode No Transportation mode required for the trip. Van
Booking Notes Private No Internal booking notes visible only to dispatchers. Call facility before arrival
Distance No Predefined trip distance (if provided externally). 12.5
Vendor ID Conditional Unique numeric identifier per passenger when used as leg identifier. 123456
Booking Notes Public No Notes visible to both driver and dispatcher. Ring bell on arrival
Seating Needs No Passenger seating requirement. Wheelchair
Authorization Number No Authorization or approval number for the trip. AUTH78945
Tags No Tags applied at trip level. Multiple allowed. dialysis, recurring
Trip Purpose No Purpose of the trip. Appointment
Companion No Flag to create a companion booking. Yes
Service Type No Service classification applied to the trip. Assisted
Account Code Conditional Required when account is not selected on upload screen. 001

 

Important Notes

  • Passenger name and primary phone are mandatory overall.
  • Pickup and drop-off addresses are mandatory overall.
  • Missing pickup/dropoff times → trips created as Will Call.
  • Account Code is required only when uploading for multiple accounts.

 

Special Requirement Section

This section is optional.

  • If your CSV already includes seating needs: Map it directly
  • Remove the unused section using the trash icon

 

Step 4 — Preview and Save

After mapping:

  • Click Preview
  • Click Save to start import
  • Or Save as Draft

Draft Behavior

Draft uploads appear in the upload history, You can later:

  • Click the pencil icon
  • Submit the draft for processing

 

System Rules for CSV Trip Import

This section outlines the mandatory requirements, duplicate detection logic, and how the system behaves during trip imports.

Required Fields for CSV Upload

The following fields must be present in every CSV record.

Field Required Description Example
Passenger Name Yes Full name or first + last name of the passenger John Doe
Primary Phone Number Yes Passenger’s main contact number 3155558899
Pickup Address Yes Pickup location (full or broken down) 116 MLK E, Syracuse, NY
Dropoff Address Yes Dropoff location (full or broken down) 500 State St, Syracuse, NY

Important:
If any required field is missing, that record will fail and appear in the error log.

System Rules for CSV Trip Import

This section outlines the mandatory requirements, duplicate detection logic, and how the system behaves during trip imports.

Required Fields for CSV Upload

The following fields must be present in every CSV record.

Field Required Description Example
Passenger Name Yes Full name or first + last name of the passenger John Doe
Primary Phone Number Yes Passenger’s main contact number 3155558899
Pickup Address Yes Pickup location (full or broken down) 116 MLK E, Syracuse, NY
Dropoff Address Yes Dropoff location (full or broken down) 500 State St, Syracuse, NY

Important:
If any required field is missing, that record will fail and appear in the error log.

Will Call Behavior

Rule

If both pickup time and dropoff time are not mapped, the system automatically creates the trip in Will Call status.

Example — Will Call Creation

Passenger Pickup Time Dropoff Time Result
John Doe (blank) (blank) Trip created as Will Call
Maria Lopez 08:30 (blank) Scheduled trip
Sam Lee (blank) 10:00 Scheduled trip

Key Point:
Will Call is triggered only when both times are missing.

 

Passenger Duplicate Detection

The system prevents duplicate passenger profiles using the following hierarchy.

Matching Criteria

  • Passenger Name
  • Phone Number
  • MRN (if present)

Duplicate Logic

Scenario Result
Name + Phone + MRN match Existing passenger reused
Any of the above differ New passenger profile created
MRN not provided System uses Name + Phone only

Example — Existing Profile Used

Existing in the system

Name Phone MRN
John Doe 1234567890 1234

CSV record

Name Phone MRN
John Doe 1234567890 1234

Result: Existing profile used (no duplicate created)

Example — Duplicate Profile Created

Existing

Name Phone MRN
John Doe 1234567890 1234

CSV

Name Phone MRN
John Doe 1234567890 4567

Result: New passenger profile created

Example — MRN Missing

If MRN is not present:

Existing

Name Phone
John Doe 1234567890

CSV

Name Phone
John Doe 1234567890

Result: Existing profile reused

 

Trip Duplicate Detection

Currently, trip duplication is evaluated using:

  • Passenger Name
  • Pickup Address
  • Dropoff Address

(Date and time are not part of duplicate logic today.)

Duplicate Behavior

When multiple records (same service date) have identical:

  • Passenger
  • Pickup address
  • Dropoff address

The system behaves as follows.

Step System Action
First occurrence Trip is created
Subsequent duplicates First trip is updated
Logging Update recorded in CSV error log

Example — Duplicate Trip Update

CSV Input

Passenger Pickup Dropoff
John Doe A B
John Doe A B

Result

  • Only one trip exists
  • The second row updates the first with information in second trip
  • Error log notes the update

 

When Trips Are Created Separately

If either pickup or dropoff address differs, the system creates separate trips.

Example — Separate Trips

CSV Input

Passenger Pickup Dropoff
John Doe A B
John Doe B C

Result

System creates:

  • Leg-A
  • Leg-B

Sequential Leg Creation

When multiple distinct records exist for the same passenger, the system automatically sequences legs.

Example — Three Legs

CSV

Passenger Pickup Dropoff
John Doe A B
John Doe B C
John Doe C D

Result

Generated Trip Leg
Trip 1 Leg-A
Trip 2 Leg-B
Trip 3 Leg-C

Interaction with Standing Orders

If a passenger already has a standing order:

  • CSV trips get their own leg sequence
  • They do not merge with standing order legs

Example

Standing Order (existing)

  • Leg-A
  • Leg-B

CSV upload adds two new trips

Result

CSV creates:

  • Leg-A
  • Leg-B

(separate from standing order sequence)

Important Edge Case — Return Trip Uploads

This section explains how the system behaves when outbound and return trips are uploaded separately and how to correctly generate return legs when your source file only contains outbound trips.

Scenario 1 — Single Outbound Trip in CSV

Behavior

When the CSV contains only one outbound trip (Leg-A) for a passenger, the system can correctly attach the return trip (Leg-B) when it is uploaded later.

Example

First Upload (Outbound Only)

Passenger Pickup Address Dropoff Address
John Doe 116 Martin Luther King E, Syracuse, NY 13205 500 State St, Syracuse, NY 13202

System Result

Created Trip Leg
Trip 1 Leg-A

Second Upload (Return)

Passenger Pickup Address Dropoff Address
John Doe 500 State St, Syracuse, NY 13202 116 Martin Luther King E, Syracuse, NY 13205

System Result

Created Trip Leg
Trip 2 Leg-B

Outcome:
The system correctly pairs the return with the outbound trip.

 

Scenario 2 — Multiple Outbound Records in CSV

Behavior

When the CSV contains multiple records for the same passenger, the system assumes they are sequential legs of one continuous journey.

Because of this, later uploads cannot retroactively pair returns.

Example

First Upload (3 Records)

Passenger Pickup Address Dropoff Address
John Doe 116 Martin Luther King E, Syracuse, NY 13205 500 State St, Syracuse, NY 13202
John Doe 500 State St, Syracuse, NY 13202 725 Irving Ave, Syracuse, NY 13210
John Doe 725 Irving Ave, Syracuse, NY 13210 116 Martin Luther King E, Syracuse, NY 13205

System Result

Created Trip Leg
Trip 1 Leg-A
Trip 2 Leg-B
Trip 3 Leg-C

Second Upload (Returns)

Passenger Pickup Address Dropoff Address
John Doe 500 State St, Syracuse, NY 13202 116 Martin Luther King E, Syracuse, NY 13205
John Doe 725 Irving Ave, Syracuse, NY 13210 116 Martin Luther King E, Syracuse, NY 13205
John Doe 800 University Ave, Syracuse, NY 13244 116 Martin Luther King E, Syracuse, NY 13205

System Result

Created Trip Leg
Trip 4 Leg-D
Trip 5 Leg-E
Trip 6 Leg-F

 

Why does this happen?

The system:

  • Processes trips in the order received
  • Always assigns the next available leg
  • Does not retroactively pair earlier legs
  • Treats multiple rows as a continuous chain

In Scenario 2, the first upload already consumed:

  • Leg-A
  • Leg-B
  • Leg-C

So the next upload continues with:

  • Leg-D
  • Leg-E
  • Leg-F

Source of Truth — Trip-Level Data from CSV

When importing trips via CSV, the system treats the CSV file as the source of truth for trip-level information.

This ensures that operational trip details always reflect the most recent data provided by the customer’s integration (CIM), even if the passenger profile already exists in Tobi.

Rule

If a passenger profile already exists in the system and the incoming CSV contains different values for trip-level fields, the system will:

  • Use the values from the CSV for the trip
  • Not override the existing passenger profile
  • Apply the CSV values at the trip level

Fields Affected

This applies to trip-level and mapped fields such as:

  • Seating Needs
  • Primary Phone Number (on trip)
  • Secondary Phone Number (on trip)
  • Trip Purpose
  • Mode
  • Tags
  • Authorization Number
  • Service Type
  • Booking Notes

(and any other trip-mapped fields)

How the System Behaves?

Scenario Passenger Profile CSV Value Result on Trip
Values match Wheelchair Wheelchair Wheelchair
Values differ Wheelchair Ambulatory Ambulatory (CSV wins)
Profile missing field (blank) Wheelchair Wheelchair applied
Profile has value 3155551111 3155552222 3155552222 used on trip

Example — Seating Need Override

Existing Passenger Profile

Field Value
Passenger John Doe
Seating Need Wheelchair

CSV Record

Passenger Seating Need
John Doe Ambulatory

Result

  • Passenger profile remains Wheelchair
  • Imported trip shows Ambulatory
  • CSV is treated as the source of truth for the trip

Example — Phone Number Difference

Existing Profile

Field Value
Passenger Maria Lopez
Primary Phone 315-555-1111

CSV Record

Passenger Primary Phone
Maria Lopez 315-555-9999

Result

  • Passenger profile remains 315-555-1111
  • Trip uses 315-555-9999

 

Need Help?

For assistance with CSV imports, contact:

help@tobicloud.com

 

spreadsheet import csv upload csv import csv trip upload trip upload

Was this article helpful?

Yes
No
Give feedback about this article

Related Articles

  • API Bookings
  • Reporting

Start Using Tobi Today

Our representatives will get you set up and running quickly.

Please enable JavaScript in your browser to complete this form.
Loading
  • No spam
  • No hassle
Tobi Transparent Logo
  • 855-750-8624
  • sales@tobicloud.com
available 24 Hours Icon
X-twitter Facebook Linkedin Instagram Youtube

Copyright ©2024 Tobi Cloud

Features

Menu
  • Booking Portal
  • Autonomous Dispatch
  • Route Planner
  • Multi-Fleet Management
  • Advanced Pricing Models
  • Bulk Data Import
  • Live Messaging
  • Driver Shift Management
Menu
  • Driver App
  • Push Notifications
  • Reporting
  • Geofencing
  • Payment Management
  • Service Code Definition
  • Attestation and Claims Management
  • Open API & Integration

Company

Menu
  • About
  • Pricing
  • Blog
  • FAQs
  • Contact Us

Legal

Menu
  • Privacy Policy

Copyright ©2023 Tobi Cloud

Expand