How do you move a price book from ServiceTitan to Housecall Pro?
ServiceTitan hands you a multi-tab pricebook workbook. Housecall Pro wants a flat services sheet and a flat materials sheet, each row carrying an Industry, a Category, and a Name. The upload itself is quick. The risk is everything that happens to the data while you reshape it in between.
This page covers the price book only. Customers, jobs, and memberships follow a different path and are documented separately by Housecall Pro. It is written for the person doing the reshaping, whether that is the owner, an office manager, or a consultant handling the migration, and it assumes you want to be able to explain every number that ends up in the new account.
The two systems do not share a price-book schema
ServiceTitan's export is a workbook with separate tabs for categories, equipment, services, materials, the links between them, and assets. Housecall Pro's price-book import reads one flat sheet at a time and, per its official documentation, can bring in industry, category, name, description, price, cost, tax codes, and units of measure. Most of the work is turning a relational workbook into two flat lists without losing anything on the way.
| In ServiceTitan | In Housecall Pro | What to watch |
|---|---|---|
| Categories tab (nested pricebook categories) | Category and Subcategory columns on each row | Housecall Pro requires every imported item to carry a Category, and applies a rule that each category must have an equal number of subcategories. A deep ServiceTitan tree usually has to be flattened by hand. |
| Services tab | Services import (Price Book → Services → Upload file) | One row per service. Industry must match an industry already in your Housecall Pro account, spelled exactly. |
| Materials tab | Materials import (Price Book → Materials → Upload file) | One row per material. Name and Category are required; Price is optional and defaults to $0. |
| Member, add-on, and standard price variants | A single Price field (plus Cost) | You have to decide which ServiceTitan price becomes the Housecall Pro Price. Record that decision so a later reviewer can explain every changed number. |
| Equipment tab, service–material and service–equipment links, assets | No equivalent listed in the Housecall Pro price-book import fields | The official import documentation lists industry, category, name, description, price, cost, tax codes, and units of measure. Relationship tabs do not map to a column. Plan to rebuild those associations inside Housecall Pro, or confirm current behaviour with Housecall Pro support before assuming they transfer. |
| Item identifiers and codes | Housecall Pro assigns its own identifiers on import | Do not expect ServiceTitan IDs to survive as Housecall Pro identifiers. Keep them in a spare column only if you need a cross-reference for your own records. |
Housecall Pro requirements above come from its published import and error documentation. Where the documentation is silent, the table says so rather than guessing.
A migration workflow that keeps evidence
- Export from ServiceTitan and keep the raw workbook untouched. ServiceTitan exports the pricebook as an Excel workbook. Check whether inactive items came across, since ServiceTitan documents active-only behaviour for some export fields. Save that file read-only. Every later comparison needs an original that nobody edited.
- Build one flat sheet per import type. Create a services sheet and a materials sheet, one row per item, with a real header row. Housecall Pro matches your column names to its fields in the import wizard, so the header names do not have to be identical to a template, but every row does need the required values.
- Set Industry to the exact name used in your Housecall Pro account. This is the most common reason a first import fails. "HVAC" is rejected where "Heating & Air Conditioning" is accepted, because the value is checked against the industry list in the account, character for character.
- Flatten categories and settle the subcategory rule. Decide the category and subcategory for every item before you import anything. If one category has subcategories, Housecall Pro expects the others to have a matching count; mixing bare services and subcategories inside the same category triggers an error.
- Decide prices deliberately, then check them mechanically. Pick which ServiceTitan price feeds the Housecall Pro Price column and apply it consistently. Then sort the finished sheet by Price and look at the top and bottom: a blank or $0 that should not be there, or a member price that landed where the standard price belonged, is easiest to see at the extremes.
- Trim names and remove hidden characters. Item names longer than 190 characters fail; move the overflow into the description. Pasted data can carry invisible characters that look like nothing is wrong and still break the upload, so retype or clean any cell you are unsure about.
- Compare the finished file against the file you started from. Before uploading, compare the flat sheet you built against the pre-cleanup version of the same sheet. You are looking for rows that disappeared during filtering, categories that went blank during a fill-down, and prices that changed when you did not intend them to. This is the step most migrations skip.
- Import a handful of rows first. Load five or ten representative items, open them in Housecall Pro, and confirm category placement, price, and name look right. Only then import the full catalog.
What a silent loss looks like
An expected change is easy to recognise. A service called Condenser Coil Cleaning had a member price of 129 and a standard price of 159 in ServiceTitan; you decided the standard price becomes the Housecall Pro Price, so the finished row reads 159. Anyone reviewing the file can see why.
The dangerous changes are the ones nobody decided. A category that lived three levels deep in ServiceTitan gets flattened, the fill-down stops one row early, and forty materials arrive with a blank Category. Housecall Pro will reject them with Category: Name is Required, which is the good outcome; the bad outcome is the thirty rows that were filtered out of view while you were editing and never made it into the file at all. No validator catches a row that is not there. Only a comparison against the file you started from does.
Changes worth confirming before any import
- Row count per category in the finished sheet versus the source.
- Any Price or Cost that became blank or $0 during the reshape.
- Any item whose Category or Industry differs from what the source implied.
- Names that were truncated or that still exceed 190 characters.
- Columns present in an earlier version of your working file that are gone now.
Where ImportFix fits, and where it does not
ImportFix does not connect to ServiceTitan or to Housecall Pro and does not move data between them. It is an independent, browser-local review step for the files you build during the migration: it compares an original CSV or XLSX against an edited version and groups the differences into blockers, risky changes, data-quality warnings, and ordinary edits, then scans the final file for the supported pre-import problems above. The comparison and findings preview are free. It is not affiliated with Housecall Pro or ServiceTitan, and it does not guarantee that Housecall Pro will accept a file.
Related guides: the full export, edit, and reimport workflow, moving a price book from Jobber, a general migration checklist, and the error pages for invalid industry, subcategory mismatch, missing category and names over 190 characters.
What is not verifiable from public documentation
- Whether Housecall Pro can import equipment, service–material links, or assets from a spreadsheet. The published import fields do not include them. Treat as unsupported until Housecall Pro support confirms otherwise.
- How Housecall Pro treats identifiers from another system on import. Do not rely on ServiceTitan IDs carrying meaning in Housecall Pro.
- Exact behaviour when an imported item collides with an existing item in the account. Test with a small import rather than assuming an overwrite or a merge.
FAQ
- Can Housecall Pro import the ServiceTitan pricebook workbook directly?
- Not as a multi-tab workbook. Housecall Pro imports one flat sheet at a time for services and one for materials, and each row must carry an Industry, a Category, and a Name. You reshape the ServiceTitan export into those two sheets first, then import each.
- Which ServiceTitan price should become the Housecall Pro price?
- Housecall Pro has one Price field and one Cost field per item. Choose the ServiceTitan price that reflects what you charge by default, apply it consistently across the sheet, and write the decision down so anyone reviewing the file later can explain the numbers.
- Why compare the file against itself before importing?
- Because the most expensive migration errors are rows and values that silently disappeared during filtering, fill-downs, and copy-paste. A format validator confirms the file is well formed; it cannot tell you that thirty materials are missing. Comparing the finished sheet with the version you started from can.
- Does ImportFix guarantee the import will succeed?
- No. It reviews the file for supported issues and shows you what changed. Housecall Pro can still reject a file for account-specific or unsupported reasons, which is why a small test import comes before the full one.
Edited a price-book file already?
Compare the original and edited CSV/XLSX first, then scan the final file for supported import issues. No account or Housecall Pro API key required.
Findings preview is free. Payment is required only to unlock a corrected-file download.