Migrating to Exoserva from Housecall Pro, ServiceTitan, Jobber or Spreadsheets

Switching field service software is mostly a data job. The calendar and the buttons you learn in a day. What hurts is a customer list with duplicates, jobs that lost their customer, and invoices you can’t find when someone calls about a bill.

This guide walks through exactly how importing into Exoserva works today, what it handles, and where to be careful.

The short version

  • Import is file-based. You export CSV files from your old system and upload them in Migration Hub. Settings has a HouseCall Pro API key field, but it only stores the key — nothing syncs or imports through it, and there is no connection to ServiceTitan or Jobber.
  • Only the Owner or Administrator role can run an import. Managers and directors see Migration Hub in the menu, but the import refuses.
  • What you can import: customers, contacts, properties, employees, inventory, equipment, memberships, leads, price book items, jobs, estimates and invoices.
  • What you can’t import: payment records. Keep your old system’s payment reports for reference.
  • Keep the ID columns (Customer #, Job #, Invoice #, Inventory #, Equipment #). Records are matched by the ID from your old system. A file without IDs gets no duplicate check, so importing it twice creates duplicates — and in inventory and equipment files the SKU and serial number you uploaded are replaced by a generated code.

Step 0: Export from your old system

At a minimum, export customers, jobs, estimates, invoices and your price book. If your old system exports properties (service addresses) and employees separately, export those too.

In Migration Hub, the What you can upload section has a card for each record type with two templates:

  • Simple CSV — just the columns.
  • Full XLSX — the same columns plus a “Read this first” sheet that explains each one. The uploader accepts CSV only, so if you fill in the XLSX, save it as CSV before uploading.

These columns are required:

File Required columns
Customers First Name, Last Name, Mobile Number or Phone
Contacts Customer #
Properties Customer #, Address Line 1, State
Employees First Name, Email
Jobs Job #, Customer name, Job status
Estimates Estimate #, Customer name, Sub-total
Invoices Invoice #, Customer, Invoice amount
Price book Name, Unit price
Inventory Name
Equipment Name, Property # (must match an imported property)
Memberships Customer #, Name
Leads Status

One detail that catches people: in the inventory file, the Quantity and Unit price columns are not imported at all today. Set stock levels and prices in Exoserva after the import.

Step 1: Upload your files

Upload each CSV file (up to 25 MB per file). For every file you get a diagnostics card:

  • it recognizes a Housecall Pro customer export; other files show “Unknown format — manual mapping required”;
  • it flags rows that look like spam or test records (it checks the first 100 rows);
  • it repairs garbled characters from bad encoding;
  • it counts address blocks.

Upload two or more files and you also get a Cross-file references check: how many customer names in your jobs, estimates and invoices files match your customers file, and whether the Job # on your invoices matches a job. Read this carefully. Jobs, estimates and invoices are linked to a customer by customer name (not case-sensitive) or by ID, so a job for “Mike Smith” will not find a customer saved as “Michael Smith”. Fixing names in the spreadsheet now is much faster than fixing records later.

Step 2: Check the field mapping

Exoserva matches your column headers to its fields using known header names from Housecall Pro, ServiceTitan, Jobber, Workiz and FieldEdge exports, plus a generic CSV layout. Check the record type it picked for each file — auto-detection is often wrong, especially for contacts, employees, properties, leads, memberships, inventory, price book and equipment. You then review each row:

  • every Exoserva field shows which of your columns it will read from;
  • required fields with no match are flagged;
  • before you can start, you confirm any columns that will not be imported.

If a header didn’t match, pick the right column by hand. Don’t skip this screen — a phone number imported into the wrong field is annoying to find later.

Step 3: Run the import

The import runs in the background, in a fixed order: customers, contacts, properties, employees, inventory and equipment, then jobs, estimates and invoices, and finally memberships, leads and the price book. The price book going last is worth knowing — job and estimate line items don’t wait for it.

While it runs you see total, imported, skipped and error counts. Cancel Import stops within a few rows, but rows that already imported stay. When it finishes, you get a drill-down of up to 100 failed rows with the record type, the ID from your file, the reason, and a preview of the row.

How duplicates and links work

  • A record is matched to an earlier import by its ID from your old system. On a re-import, records that already exist are skipped.
  • No ID column means no duplicate check. Re-importing the same customers file without Customer # creates a second copy of every customer.
  • Customer rows that look like spam or test data are skipped automatically.
  • Properties, contacts and memberships link to their customer by Customer #. Jobs, estimates and invoices link by customer name or ID.
  • Job statuses from your old system are normalized to Exoserva statuses. A status it doesn’t recognise (for example “In Progress” written with a space, or “Canceled”) imports as Draft.
  • Price book is the exception to the ID rule: even without an ID it matches on name, category and unit. Rename a service and re-import the same row, and you get a duplicate.
  • Inventory and equipment: without Inventory # / Equipment #, the SKU and serial number in your file are replaced by a generated code, so fill those columns in.

Coming from Housecall Pro

Housecall Pro column names are built into the mapper for customers, jobs, invoices, estimates, leads, employees, price book and properties — but still check the record type on each file. Settings → HouseCall Pro asks for an API key and talks about syncing; today it only stores the key. Export your files and upload them like any other CSV.

A safe order for switch week

  1. Price book and customers first. Import them, then open ten customers you know well and check names, phones and addresses.
  2. Properties and employees next, then check a customer with several service addresses.
  3. Jobs, estimates and invoices last. Open a few jobs and confirm each one landed on the right customer.
  4. Keep your old system available for a few weeks. Payment history doesn’t come across, and you’ll want it when a customer asks about an old bill.
  5. Don’t run the same file twice unless it has IDs.

Switched platforms before? What broke first for you — customers, jobs or invoices? If you’re importing into Exoserva and a row fails, post the error line here (remove customer details first) and we’ll help you read it.