Skip to content

Bulk import

Pro feature

Bulk Import is available on the Pro and Enterprise plans. Compare plans to see which features are included.

When you are getting started with FSM Navigator™ — or onboarding a large client list — adding customers one at a time is tedious. Bulk Import lets you upload a CSV file with your customer records and create them all in a single batch, complete with contact details and service locations.


How it works

The import process follows four steps:

Download template → Fill in data → Upload & validate → Process import

FSM Navigator validates every row before creating any records. You get a chance to review errors and fix problems before anything is saved, so there is no risk of importing bad data.


Step 1 — Download the CSV template

  1. Open the Customers page from the sidebar menu.
  2. Click Bulk Import.
  3. Click Download Template to get a pre-formatted CSV file with the correct column headers.

Always use the template

The template ensures your columns are in the right order and named correctly. Manually created spreadsheets with extra or renamed columns will fail validation.


Step 2 — Fill in your customer data

Open the downloaded template in any spreadsheet application (Excel, Google Sheets, LibreOffice Calc) and add one row per customer.

Required columns

Every column is required. Rows with missing fields will be flagged during validation.

Column Description Example
customer_name Customer or company name Acme HVAC Services
contact_phone Phone number (any common format) (555) 123-4567
contact_email Email address [email protected]
location_name Label for the service address Main Office
street Street address 742 Evergreen Terrace
city City name Springfield
state Two-letter state code IL
zip Five- or nine-digit ZIP code 62704

Optional columns

Column Description Example
is_sublocation YES to attach this row as an additional service location to a customer already listed earlier in the CSV (or one that already exists in your account). Defaults to NO when blank. YES

When a row is marked is_sublocation: YES:

  • The customer_name column must exactly match a customer in the file above this row, or an existing customer in your account. Matching is not case sensitive.
  • The row creates an additional service location for that customer — it does not create a new customer.
  • contact_phone and contact_email are ignored on sublocation rows (locations don't have their own contact details).
  • The address columns (location_name, street, city, state, zip) are still required.

Use sublocations for multi-site customers

A property-management company with five buildings, a school district with twelve campuses, or a restaurant chain with multiple storefronts — list the customer once on the first row, then add one sublocation row per additional address.

Sample CSV data

customer_name,contact_phone,contact_email,location_name,street,city,state,zip,is_sublocation
Acme HVAC Services,(555) 123-4567,[email protected],Main Office,742 Evergreen Terrace,Springfield,IL,62704,NO
Acme HVAC Services,,,Warehouse,100 Industrial Blvd,Shelbyville,IL,62565,YES
Bright Plumbing LLC,(555) 987-6543,[email protected],Headquarters,200 Maple Street,Shelbyville,IL,62565,NO
Downtown Dental,(555) 222-3333,[email protected],Clinic,300 Oak Avenue,Capital City,IL,62701,

Row 2 attaches a second location ("Warehouse") to the Acme HVAC Services customer created in row 1. Row 4's blank is_sublocation is treated as NO.

File requirements

  • Format: CSV (comma-separated values) — not .xlsx or .ods
  • Encoding: UTF-8 (default for most modern applications)
  • Header row: The first row must contain the column names exactly as shown above
  • No blank rows: Remove empty rows before uploading

Step 3 — Upload and validate

  1. Return to the Bulk Import page.
  2. Click Upload CSV and select your file.
  3. FSM Navigator scans every row and reports validation results.

Validation checks

The validator checks each row for:

Check What it catches
Required fields Missing customer name, address, or contact details
Email format Invalid email addresses
Phone format Unrecognizable phone numbers
State code Invalid two-letter state abbreviations
ZIP code Malformed ZIP codes
Duplicates Customers that already exist in your account (matched by email)
Sublocation parent For is_sublocation: YES rows, the parent customer must be found exactly once. The validator flags two cases: parent not found (no customer with that name exists in the file above or in your account) and ambiguous parent (more than one customer in your account shares that name — rename one before importing).
is_sublocation value Only YES, NO, Y, N, TRUE, FALSE, 1, 0, or blank are accepted. Anything else is flagged.

If errors are found, you will see a summary showing which rows have problems and what needs to be fixed. You can:

  • Fix the CSV — correct the flagged rows in your spreadsheet and re-upload.
  • Skip bad rows — proceed with only the valid rows (invalid rows are ignored).

No surprises

Nothing is created until you explicitly click Process Import after reviewing the validation results. You always have a chance to review before committing.


Step 4 — Process the import

Once validation passes (or you have chosen to skip invalid rows):

  1. Click Process Import.
  2. FSM Navigator creates customer records and their associated service locations.
  3. Each address is automatically geocoded for map display and intelligent dispatch.
  4. A summary shows how many customers were created and whether any rows were skipped.

Imported customers appear immediately in your customer list and are ready for job creation.


Daily import limits

To ensure system stability, imports are subject to daily limits based on your plan:

Plan Daily Customer Limit
Pro 50 customers per day
Enterprise Unlimited

Limit resets daily

The daily counter resets at midnight UTC. If you have more than 50 customers to import on the Pro plan, split your CSV into batches and upload across multiple days — or upgrade to Enterprise for unlimited imports.


Tips for a smooth import

  • Clean your data first — Remove duplicate rows, fix typos, and standardize formatting before uploading.
  • Use consistent naming — Decide on a naming convention (e.g., Acme HVAC vs. ACME HVAC Inc.) before importing.
  • Check your state codes — Use standard two-letter codes (IL, CA, NY) — not full state names.
  • Verify email addresses — Invalid emails will fail validation. Double-check addresses for typos.
  • Start with a small batch — If this is your first import, try 5–10 rows first to confirm the process works before uploading your full list.

Frequently asked questions

Can I import customers with multiple locations?

Yes. List the customer once on the first row (with is_sublocation blank or NO), then add one row per additional location with is_sublocation: YES and the same customer_name. The extra rows create service locations attached to the original customer — they don't create duplicate customers. See the Optional columns section above for an example.

What happens if a customer already exists?

The validator flags duplicates matched by email address. You can choose to skip those rows or proceed — existing customers are not overwritten.

Can I undo a bulk import?

There is no automatic undo. If you need to remove imported records, deactivate them individually from the Customers page. See Managing Customers for details.

What file formats are supported?

Only CSV files are supported. If your data is in Excel (.xlsx), export it as CSV first using File → Save As → CSV (UTF-8).


What's next

  • Managing Customers — Edit and organize your imported customer records.
  • Customer Locations — Add more service addresses to your customers after import.
  • Customer Portal — Give imported customers self-service access to their jobs and invoices.
  • Create a Job — Start scheduling work for your newly imported customers.