Thermal
Admin

Import your data

Open Import in Thermal →

Data import brings customers, their equipment, service agreements, and service history into Thermal from a spreadsheet or another system's export. It's a four-step wizard: upload, map columns, review, import.

Where to start

New companies reach this screen from setup. The Bring your records step of the setup wizard asks you to pick one way in: Accounting software (QuickBooks Online), Another field-service app (upload an export file), Spreadsheets, or Starting fresh. The app and spreadsheet tiles each have an upload button that opens Import, and you can come back to it any time to bring more in later. The rest of this page covers the Import screen itself.

Prepare your file

Upload .csv, .tsv, .iif, .qbo, .ofx, or .xlsx files. Spreadsheets must be the modern .xlsx format — the older .xls binary format is not supported; save it as .xlsx or CSV and upload again. You can drop up to 5 files at once, totalling up to 25 MB across the files selected for one pass. Thermal imports along the spine: customer → their equipment → that unit's history. Bring all three in your file and they link automatically; a customer-only file still works, it just won't create equipment or history rows.

Large files: a customer list whose columns you map to Thermal fields is read in full, up to the 25 MB upload size. Files that need the automated structuring step, such as service history, are read in requests of up to 150 lines each, with the sheet's header row repeated, and at most 8 requests per pass. If the review screen says that source lines were not read, split the export into smaller files, repeat the header row at the top of each file, and import each file as a separate pass.

No file ready yet? Download template opens the import screen. Download the customer workbook for Customers, Equipment, Service history, and Agreements sheets plus a Guide, or choose an individual CSV for any data sheet.

Connect a source on that screen marks ServiceTitan, Housecall Pro, Jobber, and QuickBooks as Export upload. That is not a live login to those systems. Export the file from the other product, then Choose file (or drop the file) under or upload files. Thermal recognizes common vendor headers the generic guess cannot place — ServiceTitan companyName, Location ID, Equipment Name, and Asset #; Housecall Pro Mobile number, Item ID, and Assigned employees; Jobber J_ID (maps to Customer · External ID, so a second upload of the same client file updates those customers).

Jobber's card reads Client and property export files. Upload the client export and the property export together so each site lands on the right customer. Jobber has no equipment export. A jobs export is accepted as completed work only: each job with a completed date becomes service history on one unassigned unit at the property named by that job's service address. Move that history onto the real unit once you record it. A job with no completed date is skipped and named on the review. It does not create an open job in Thermal.

Open jobs and open invoices

Two more kinds of sheet can be imported: open jobs and open invoices (a customer's outstanding balance is the same kind of sheet, one row per customer). What each export must contain:

  • ServiceTitan — open invoices: the Accounts Receivable (Detail) report with Invoice, Date, Customer, Total, and Balance. Open jobs: map the columns by hand.
  • Housecall Pro — open invoices: the exported invoice report, where Amount is the total and Due is the balance. Open jobs: map the columns by hand.
  • Jobber — open invoices: the Invoices Report with the optional Total ($) and Balance ($) columns. Customer balances: the Client Balance Summary Report. Open jobs: map the columns by hand.
  • FieldEdge and BuildOps — map the columns by hand for both kinds.

When you map by hand, open jobs need a job ID, a customer ID, and a status, with an optional site, date, and description. Open invoices need a customer ID, an invoice number, a date, a total, and a balance.

Open invoices import as a starting balance. Your accounting system stays the system of record for QuickBooks: an imported invoice is not sent to QuickBooks, and payments taken in Thermal on an imported invoice are not sent to QuickBooks until your company turns pushing on, so record them in QuickBooks too until then. Run the import again with the same file and nothing new is created. An invoice number repeated in the file or already imported goes to review. Delete this import removes the jobs and invoices the run created, unless a payment has been taken on one of those invoices since.

There is no live API connection to ServiceTitan, Housecall Pro, Jobber, or Workiz. Workiz still starts from a CSV export (below). QuickBooks Online connects separately under Settings → Integrations.

What you can import

DataAvailable todayHowTemplate
Customers, service sites, and primary contact fieldsYesUse the Import wizard. Records are staged for review and approval before they are committed.Customer workbook — Customers sheet, or its individual CSV.
EquipmentYesUse the Import wizard. Equipment is imported under its customer.Customer workbook — Equipment sheet, or its individual CSV.
Service historyYesUse the Import wizard. History is imported under the related customer and equipment.Customer workbook — Service history sheet, or its individual CSV.
Service agreementsYesUse the Import wizard. Agreements are imported under their customer.Customer workbook — Agreements sheet, or its individual CSV.
Price book services and materialsYesUse the separate CSV importer on Price book. Each row needs a code and name, and valid rows are written directly.Price-book CSV template. Template coming.
Open jobsYesUse the Import wizard with an open-jobs sheet. Each row needs a job ID, a customer ID, and a status, and may carry a site, a date, and a description. A status Thermal cannot place as open work goes to review and is not created.Export open jobs from your old system and map the columns.
Open invoices and customer balancesYesUse the Import wizard with an open-invoices sheet. Each row needs a customer ID, an invoice number, a date, a total, and a balance. A customer-level balance imports as one opening-balance invoice. Open invoices come in as a starting balance. A zero balance is skipped, a credit (negative) balance goes to review, and payment history is not imported.Export open invoices or balances from your old system and map the columns.
PaymentsNot yetPayment history cannot be imported yet.No template is available.
Staff and techniciansNot yetBulk import is not available. Add each person from Staff so Thermal can send their account invitation.No template is available.
InventoryNot yetInventory records cannot be imported yet.No template is available.
VendorsNot yetVendor records cannot be imported yet.No template is available.
AttachmentsNot yetFile attachments cannot be imported yet.No template is available.

Export your customers from Workiz

Workiz does not have a direct connector to Thermal yet. Use a CSV export as the starting point. The Workiz steps below could not be checked against the live Workiz screen:

  1. Sign in to Workiz with an account that can access customer records. Unverified — confirm before sending to customers.
  2. Open the customer list and look for its export action. Unverified — confirm before sending to customers.
  3. Choose CSV if Workiz asks for a file type, then download the export. Unverified — confirm before sending to customers.
  4. Open the file and confirm that it has one header row followed by the customer records you expect. Unverified — confirm before sending to customers.

Keep an untouched copy of the export. If the review screen says that source lines were not read, make smaller copies with the header row repeated in each one, then upload them to Thermal one pass at a time.

Map columns

After upload, each column from your file gets a guessed destination field — Thermal recognizes common header names (email, phone, zip, make, model, serial, Client ID / Customer ID / Account ID, Region / Province, Company, and similar) automatically. A Client ID-style column maps to Customer · External ID so a second import of the same file updates those customers instead of creating new ones. Region and Province map to Customer · State. A Company column names the account; the person's name becomes the primary contact. Review the guesses and correct any that are wrong, or set a column to Don't import to leave it out.

Four tabs track mapping coverage separately: Customers, Equipment, Agreements, and Service history, each showing how many of that entity's fields are currently mapped. A column left unmapped for an entity just means that field won't be filled in — it doesn't block the import.

A lone Address cell is split into street, city, and state when the shape is clear. When it isn't, review names the dropped parts instead of quietly losing the address. Extra address rows on the same customer (same External ID), or a sheet whose name looks like sites / locations / properties, import as additional service sites.

Review and fix errors

Once mapped, Thermal structures your rows into customer, equipment, agreement, and service-history records and shows a review screen with four peer counts — Ready to import, Needs checking, Company accounts, and Excluded. A record can be ready and still need checking, so the meters are not a stacked total. If any customer is missing a complete service address, the review names how many will import without one.

Each extracted record carries a confidence score:

  • Below 50% is an error — automatically excluded from the import so nothing questionable gets written by default.
  • 50–79% is a warning — included, but worth a quick check.
  • 80% and up is included with no flag.

Potential duplicates lists rows that match another row in this file or a customer already on file. If no External ID column is mapped, a banner warns Re-importing this file will create new customers.

The Records needing attention table lists every warning and error with the record and the issue. For an error row, Exclude record / Include record toggles whether it's part of the import; a warning is informational only. You can also browse every parsed row directly under the Customers / Equipment tabs and toggle inclusion there. A customer with more than one imported site shows {N} service sites.

Import

Import commits only the included rows. Thermal matches against existing customers (by external ID or name) rather than creating duplicates — if a customer already exists, its equipment, agreements, and service history are merged in and anything that already matches is skipped, not overwritten. The completion screen breaks out how many customers, service sites, equipment records, agreements, and service-history entries were actually inserted versus skipped as already-on-file, plus how many error rows were excluded so you can download and fix them for a follow-up import.

Undo an import

Every import pass is recorded. On the Import screen, the Import history tab lists each one — when it ran, which file it came from, who ran it, and how many customers it added — with a Delete this import action.

Deleting an import removes the customers and service sites that pass created, and nothing else:

  • A row that matched a customer you already had was merged into that customer, not created by the import, so it is never removed.
  • The delete is all-or-nothing. If any customer from that pass — or a service site the pass added onto an existing customer — has since picked up a service agreement, a job, or an unpaid invoice, Thermal refuses the whole thing and names every record that blocked it. Nothing is deleted. Remove the attached work first, or delete those customers individually from the Customers list.

This undoes the import only — it does not roll back edits made to those customers afterwards. Every deletion is recorded with who did it, when, and how many records it removed.

Reference

  • Who can reach Import — Owners and Office users who still have both Customers and Settings. Dispatchers and technicians cannot. A custom role that removes either area cannot open Import, even from a direct link. See Roles & permissions.
  • Service agreement status values used during import — in Status & domain values.

On this page