Home services and trades
How to export customers, jobs and invoices from Housecall Pro
By SourceX Editorial · Updated
Short answer
To export data from Housecall Pro, pull customer, job, estimate and invoice lists to spreadsheets first, then treat photos, notes, messages and any call recordings as separate exports or written support requests. Keep the IDs that link each customer to jobs and invoices, export history in yearly batches, and reconcile counts before you cancel or switch.
Key takeaways
- List exports cover the core tables, but photos, attachments, notes and message history usually need separate steps.
- The customer ID, job ID and invoice number are what let you rebuild history after the export.
- Ask support in writing for anything you cannot export yourself, and ask what happens to account data after cancellation.
- Accounting data is a check on the invoice export, not a substitute for it.
What can you export from Housecall Pro yourself?#
Housecall Pro users can usually export the core lists themselves: customers, jobs, estimates and invoices, as spreadsheet files from inside the app. Which columns appear, and which users can run exports, depends on your plan, your permissions and the app's current version, so check the vendor's help center before planning around a specific field.
Anything that is not a row in a list tends to need more work. Job photos, attachments, checklists, internal notes, customer message threads and any call recordings from phone features are the usual gaps. Where your plan includes API access, a developer can often pull more detail than the list exports show.
Export map by data type#
An export map assigns every data type to a route and names the fields that must survive. Build it before anyone clicks export, and use it as the completion checklist. The routes below are a starting point, not a promise: export screens, available columns and API access vary by plan, permissions and app version, so confirm each route in the vendor's help center or with support.
Treat the gap column as your support request list. Each gap either gets closed by a developer, closed by the vendor, or recorded as a known limitation in the export manifest.
| Data type | Usual route | Fields to confirm | Gap to request |
|---|---|---|---|
| Customers | List export | Customer ID, name, contacts, tags, lead source, notes | Archived or deleted customers |
| Service addresses | Customer export or API | Address linked to customer ID, all addresses per customer | Extra addresses dropped when only the primary appears |
| Jobs | List export, filtered by date | Job ID, customer ID, address, status, dates, technicians, line items | Visit-level detail on multi-visit jobs |
| Estimates | List export | Estimate ID, options, line items, status, linked job | Declined and expired estimates |
| Invoices and payments | List export | Invoice number, job ID, line items, tax, payments, refunds | Payment detail beyond totals |
| Service plans | List export or API | Plan, start and renewal dates, visits, billing | Visit history per plan |
| Price book | Export or API | Item codes, names, descriptions, prices, categories | Images and option groupings |
| Photos and attachments | Manual download or support request | File name or folder tied to job ID | Bulk download across all jobs |
| Notes and checklists | API or support request | Author, timestamp, job ID | Full note history, not only the latest |
| Messages and calls | Support request | Date, channel, customer link | Text threads and any recordings |
The IDs that keep customers, jobs and invoices linked#
IDs keep a customer, the jobs done at that address and the invoices billed for them connected once they leave the app. A job export that carries only the customer's name, not the customer ID, breaks as soon as two customers share a name or one customer changes theirs.
Linked IDs are also what make the archive useful later. A buyer checking repeat customers, an adjuster asking about a past repair or a reviewer assessing your job history all need to follow one customer through every job and invoice.
- Confirm every job row carries the customer ID and the service address.
- Confirm every invoice row carries the job ID, not only the customer name.
- Confirm estimates carry the ID of the job they converted into, where one exists.
- Name photo folders by job ID, and keep a manifest that maps files to jobs.
- Never renumber IDs in the archive copy, even if the new system assigns its own.
Gaps to request from support, in writing#
Support requests should be written, specific and dated, because the answers decide what you can still recover after cancellation. Send them early in the process, not in the final days of the subscription.
Keep every reply with the export manifest. If a request cannot be met, record that too, so a later reviewer knows the gap was known rather than overlooked.
- A bulk export of all job photos and attachments, organized by job.
- Full note and checklist history with authors and timestamps.
- Customer message history, including texts and emails sent from the app.
- Call logs and recordings, if you used built-in phone features.
- Archived or deleted records that do not appear in list exports.
- The data return format, delivery method and expected timing.
- What happens to account data after cancellation, and when it is deleted.
Checks before you rely on the export#
Checks prove the export is complete while you can still fix it. Run them before the account closes, and have the person who knows each record family sign off.
When a check fails, fix the cause before re-exporting, not the file. A short year usually means a date filter or a row limit; unreconciled months usually mean refunds, deposits or voided invoices handled differently in the two systems. Record each failure and its fix in the manifest.
| Check | How to run it | What a failure looks like |
|---|---|---|
| Record counts by year | Compare exported rows with in-app reports for the same dates | A year with far fewer rows than expected |
| Invoice totals | Sum invoices by month and compare with the accounting system | Months that do not reconcile |
| End-to-end job trace | Follow several jobs from customer to estimate, job, invoice and photos | A step with no matching record |
| Date coverage | Check the earliest and latest dates in each file | History that starts later than the account did |
| Text encoding | Open files and scan notes for broken characters | Garbled apostrophes or accented names |
| Duplicates | Look for repeated IDs or overlapping date ranges | The same job appearing in two batches |
Illustrative: a plumbing company exports before a merger#
Illustrative: a fictional residential plumbing company is merging into a larger HVAC and plumbing business that runs a different platform. The acquiring COO asks for full history, not just active customers, before the plumbing company's subscription ends.
The office manager exports customers, jobs, estimates and invoices in yearly batches and finds that the job file carries customer names but not IDs. A developer uses API access to pull jobs with customer IDs and visit detail. Support is asked in writing for a bulk photo export and the message history; the photos arrive, and the reply about messages is filed with the manifest.
The merged company imports active customers and open work into its platform and stores the full archive, keyed by the original IDs, as a sealed copy. The reconciled archive also answers the acquirer's questions about the plumbing company's repeat customers.
What the export is for after the switch#
A complete Housecall Pro export serves more than migration. It supports warranty and dispute questions, gives a buyer or lender verifiable history, and shows which records a company holds if it ever considers licensing data to AI developers.
SourceX's first fit check needs only a description of the archive, such as the systems involved, the years covered and the record families, with no files shared. If a package moves forward through the SourceX five-step transaction of Supply, Rights, Preparation, Approval and Delivery, the SourceX Evidence Packet records the export route and date as part of provenance, alongside licensing rights, permitted use, the privacy record and release authorization.
Frequently asked questions
Can QuickBooks or our accounting system replace the invoice export?
No. Accounting data holds totals, taxes and payments, but usually not the job, technician, line-item and visit detail behind each invoice. Use accounting totals to check the invoice export, and keep both.
Should we export everything at once or by date range?
Yearly batches are easier to check. Smaller files are less likely to hit size limits, and each year's count can be compared with in-app reports. Name each file with its date range and record it in the manifest.
Do archived customers show up in exports?
Not always. Archived or inactive records may be filtered out of default lists. Check the export filters, compare totals with the account's customer count, and ask support how to include archived records if they are missing.
Is it safe to send the export to a consultant or new vendor?
The export contains customer names, addresses, contact details and job notes, so treat it as personal data. Share only what the recipient needs, use a secure transfer, and make sure an agreement covers confidentiality and deletion when the work is done.
What about data held in apps connected to Housecall Pro?
Connected apps for accounting, financing, reviews, marketing or phones may hold records the platform never stored, such as call audio or financing decisions. List every integration, decide which records you need from each, and export them on the same schedule as the main account.
Related resources
See if your company qualifies
A short company assessment. No data uploads are needed.