How to Pull Your Customer List Out of Jobber, Housecall Pro, or ServiceTitan
A 2025 Validity report found that 76% of organizations say less than half their CRM data is accurate, and the first step to fixing that is being able to pull a clean export. Here is exactly how to extract your customer list from Jobber, Housecall Pro, and ServiceTitan.
Key takeaways
- All three major contractor CRMs let you export customer lists, but the path, fields, and limits are completely different on each
- Jobber's CSV export is the most limited. ServiceTitan's API is the most powerful. Housecall Pro lives in between
- Export at least monthly to a file you control, separate from any migration project, because customer data outside the CRM is your only real backup
Contents
- 011. Why You Should Pull a Customer List Even Without a Migration
- 022. How to Export From Jobber
- 033. How to Export From Housecall Pro
- 044. How to Export From ServiceTitan
- 055. Standardize the Export Format Across Sources
- 066. De-duplicate the Combined List
- 077. Validate Phone Numbers and Emails
- 088. Build a Reactivation Segmentation From the Export
- 099. Schedule the Export
- 1010. Hook the Export Into Downstream Tools
- 11Sources
- 12Frequently Asked Questions
A 2025 Validity report found 76% of organizations say less than half their CRM data is accurate, and contractors are over-represented because field-service data is touched by more hands than most B2B CRMs. The first step to fixing your data is being able to pull a clean export. The second step is knowing what is missing from that export.
This post covers exactly how to extract your customer list from Jobber, Housecall Pro, and ServiceTitan, what fields you get on each, and what you have to work around.
1. Why You Should Pull a Customer List Even Without a Migration
Even if you are not switching CRMs, you should pull a full customer list export at least monthly.
Reasons:
- Backup. CRM accounts get suspended, billing lapses, accounts get deleted. Your customer list outside the CRM is the only thing that is fully under your control
- Reactivation campaigns. To run a "12 months no contact" or "lapsed maintenance plan" campaign, you need the list outside the CRM where bulk SMS or email tools live
- Audit. You cannot see duplicates, missing emails, or dead phone numbers from inside the CRM dashboard. You need a flat CSV
- Reporting. Every CRM hides certain reports behind feature gates. A monthly export gives you the raw data to answer questions the dashboard cannot
A 2024 r/sweatystartup thread had a plumbing operator describe losing 2 weeks of access to his Housecall Pro account during a billing dispute. He had no recent export. His office had to reconstruct 800+ active customers from memory, scheduling notes, and Gmail threads.
For background on what kinds of questions a flat customer export lets you answer that the dashboard cannot, see questions Jobber's dashboard cannot answer.
Text Clint: "remind me to export my customer list from my CRM on the first of every month"
2. How to Export From Jobber
Jobber offers two paths: the in-app CSV export and the GraphQL API.
The in-app path:
- Sign into Jobber as an admin
- Go to Settings (gear icon, top right)
- Click Data > Export Data
- Choose Clients
- Click Export. The export downloads as a ZIP that contains a
clients.csvfile
The fields you get in the CSV: client name, company name, primary phone, secondary phone, email, billing address fields, primary property address fields, tags, client type, lead source, balance, and notes.
What you do not get: full property list (only the primary property is in the customer export, secondary properties require a separate export), custom field values, full quote and job history, and attachments.
For the missing pieces, the Jobber Developer API is the cleaner path. The GraphQL endpoint exposes clients, properties, requests, quotes, jobs, invoices, and customFields. You can build a single query that pulls everything you need in one shot.
A practical pattern many contractors use: in-app export monthly for the basics, plus a Pipedream or Zapier workflow that runs the API weekly and writes results to Google Sheets. For the latter approach, see how to connect Jobber to Google Sheets.
Text Clint: "summarize what fields the Jobber CSV export includes versus what only the API returns, so I know what I am missing"
3. How to Export From Housecall Pro
Housecall Pro's customer export lives in the Reports section.
The in-app path:
- Sign in to Housecall Pro as an admin
- Click Reports in the left navigation
- Click Customer Export (or Customer List Report depending on plan)
- Set the date range to "All time" if you want everything
- Click Export to CSV
The fields you get: customer first and last name, company name, mobile and home phone, email, billing address, customer notes, tags, customer source, account ID, lead source, and customer creation date.
What you do not get: per-property service addresses for multi-property customers (separate export needed), full job and invoice history (separate report exports), custom field values (only available via API on enterprise plans), and attachments.
For service address coverage on multi-property customers, run the Properties Export separately. The Housecall Pro API exposes more fields but is gated to enterprise pricing tiers.
For surfacing reports that the standard Housecall Pro UI hides, see Housecall Pro reports that are hidden or missing.
Text Clint: "list which Housecall Pro reports I have run in the last 90 days, so I know which exports my team relies on"
4. How to Export From ServiceTitan
ServiceTitan offers the most options and the steepest learning curve.
In-app paths:
- Reports > Customer Export. The standard customer-list pull, similar in scope to the other two CRMs
- Reports > Custom Reports. Build a custom report against the customer table with whatever columns you need. This is the most flexible UI path
- Reports > Operational Reports > Customers Without Activity. Pre-built dormant-customer report
The fields you get from the standard customer export: customer name, type, billing address, primary phone, alt phone, email, balance, customer status, business unit, source, custom fields (if configured), tags, and creation date.
What you do not get from the customer export alone: location records (separate export, ServiceTitan splits customer billing identity from service location), equipment records, invoice line items, and attachments.
For the heavy lifting, ServiceTitan's API is the best path of any contractor CRM. The ServiceTitan Developer API exposes customers, locations, jobs, invoices, payments, equipment, memberships, and call records. Authentication is OAuth-based and the API is well-documented.
Most contractors over $5M run weekly automated exports via the ServiceTitan API into a data warehouse like BigQuery or Snowflake. The contractors under $5M usually rely on the in-app CSV exports plus the occasional custom report.
For surfacing reports that move the operational needle in ServiceTitan post-export, see ServiceTitan reports that move the needle and how to export reports from ServiceTitan.
Text Clint: "tell me what data I have available in ServiceTitan via the API that I cannot get from the standard CSV exports"
5. Standardize the Export Format Across Sources
If you operate one CRM, this step is optional. If you operate more than one (very common in PE-backed multi-brand operators), you need a canonical schema.
The minimum-viable canonical customer schema:
customer_id(whatever the source CRM uses internally)source(jobber, hcp, servicetitan)first_namelast_namecompany_namephone_primary(10-digit, no formatting)emailbilling_streetbilling_citybilling_statebilling_ziptags(semicolon-separated)lead_sourcecustomer_type(residential, commercial)last_job_datelifetime_revenuecreated_atupdated_at
Pull each CRM's export and transform it into this schema. The clean output goes into Google Sheets, BigQuery, or whatever your downstream system is. The raw exports stay archived in case you need to re-process.
This is exactly the pattern that data fabric tools sit on top of. Once your data is in a canonical schema, every downstream question becomes answerable.
Text Clint: "show me how my Jobber and Housecall Pro customer lists look mapped into a single canonical schema, so I can see who exists in both"
6. De-duplicate the Combined List
Once exports are normalized, run de-duplication. The standard methods:
- Exact phone match. Same 10-digit phone is a duplicate 95% of the time
- Exact email match. Same logic, slightly less reliable because of shared family emails
- Name plus street number. Catches families and roommates entered as separate records
- Soft-match name plus phone last 4. Catches typos in phone number entry
Most contractors with 2+ years of data find 8 to 25% duplicates in their combined list. The Validity 2025 report puts duplicates as the most-cited cause of inaccurate CRM data.
Mark duplicates with a dupe_of column pointing at the canonical record. Do not delete the duplicates from the source CRM yet. The export-side dedup is for analysis. The CRM-side dedup is a separate, more careful project.
For a deeper dedup workflow inside each CRM, see how to deduplicate customers in Jobber, HCP, and ServiceTitan.
Text Clint: "find duplicate customers in my combined export by phone and email, then by name plus street number"
7. Validate Phone Numbers and Emails
Validate the data quality of the export so you know what to fix.
Phones:
- Check digit count. Anything under 10 digits is broken
- Check for placeholders (
555-555-5555,1234567890,9999999999) - Check for duplicates across customers (one phone on 6+ different records is a CSR shortcut, not a real number)
- Check format consistency. Standardize to 10 digits, no formatting
Emails:
- Run through NeverBounce, ZeroBounce, or any modern email validator
- Hard bounces become a
dead-emailtag - Domain typos (
gmial.com,hotmial.com,yahooo.com) get flagged - Records where the
emailfield contains a phone number or a name get flagged
Most contractor customer lists have 15 to 35% bad-quality contact data after 2+ years of operation. The fix is one weekend of cleanup per quarter.
For a structured cleanup playbook see how to clean up your contractor CRM in one weekend.
Text Clint: "audit my exported customer list for phone numbers under 10 digits, placeholder phones, and email addresses with common domain typos"
8. Build a Reactivation Segmentation From the Export
This is where the export starts paying for itself.
Slice the customer list by:
- Last job date (60 days, 6 months, 12 months, 24 months)
- Lifetime revenue (top 20%, middle 60%, bottom 20%)
- Service type (HVAC vs plumbing vs electrical, or maintenance vs install)
- Lead source (Google, referral, returning customer)
- Tags (VIP, do not call, slow payer)
The high-value segments to act on first:
- Top 20% lifetime revenue, no contact in 12+ months
- Customers with maintenance contracts that lapsed 6 to 18 months ago
- Customers with completed installs in the last 24 months who have not been contacted for service
For most contractors, segments 1 and 2 alone are worth $50K to $300K of recoverable revenue per year if a real reactivation campaign runs against them.
For perspective on what AI-driven reactivation looks like, see AI customer reactivation for contractors.
Text Clint: "show me my top 100 customers by lifetime revenue who have not had a job in the last 12 months"
9. Schedule the Export
Manually pulling exports gets skipped. Automate it.
For Jobber: a Pipedream or Zapier workflow on a weekly schedule that calls the GraphQL API and writes results to Google Sheets.
For Housecall Pro: enterprise plans with API access can do the same. Lower-tier plans need someone to log in and pull the CSV monthly.
For ServiceTitan: the API supports incremental exports based on modifiedOn timestamps, which is the cleanest pattern. Most $5M+ shops run this nightly into a warehouse.
Whatever the path, the export should land in the same place every time, with a date-stamped filename, in a folder that the owner and operations manager can both find in under 30 seconds.
Text Clint: "remind me to confirm my CRM customer export ran successfully every Monday morning"
10. Hook the Export Into Downstream Tools
Once the export lands somewhere durable (Sheets, BigQuery, Snowflake, S3), every downstream tool can read from it instead of from the live CRM.
Common downstream uses:
- Bulk SMS reactivation campaigns
- Email marketing list sync (Mailchimp, Klaviyo, ActiveCampaign)
- Postcard campaigns (Lob, Send Out Cards)
- AI receptionist or AI dispatcher tools that need customer context
- Custom dashboards in Looker, Metabase, or Hex
The advantage of running campaigns from the export rather than from the CRM is bulk SMS and bulk email tools tend to have better consent management, better unsubscribe handling, and better deliverability than the CRM's native email tool. If you would rather stay inside the CRM, our guides on how to mass email customers from Housecall Pro and how to mass email customers from Workiz cover the in-platform Marketing Center and bulk send paths respectively.
For the build vs buy decision on AI dispatchers and AI receptionists that read from this kind of export, see AI dispatcher home services build vs buy and AI receptionist plumbing build vs buy.
Text Clint: "show me which downstream tools I have connected to my Jobber, Housecall Pro, or ServiceTitan customer data right now"
Sources
- Jobber Developer API documentation
- Jobber Customer Import help article
- Housecall Pro export documentation
- ServiceTitan Developer API documentation
- Validity 2025 State of CRM Data Management report
- r/sweatystartup customer export horror story thread
- Owned and Operated podcast (Wilson and Carr) on contractor CRM operations
Clint sits outside your CRM and answers questions about the data inside it without requiring you to wrestle with CSV exports first. Ask Clint to find dormant customers, audit duplicates, or pull any segment you would normally have to export and filter by hand. See it in action at textclint.com.
Frequently Asked Questions
6 questions home service owners actually ask about this.
01How often should I pull a customer export?
Monthly minimum. Weekly if you run reactivation or marketing campaigns. Daily if you operate multiple CRMs and need a unified view.
02Does exporting violate Jobber, Housecall Pro, or ServiceTitan terms of service?
No. All three explicitly support customer data export. The data belongs to you, not to the CRM vendor.
03What is the cleanest format to export to?
CSV is the lowest common denominator and works everywhere. JSON via the API is cleaner for custom fields and nested structures. Most contractors use CSV for one-off exports and JSON for automated pulls.
04Can I export historical jobs and invoices the same way?
Mostly yes. Jobber and Housecall Pro both have separate exports for jobs, quotes, and invoices. ServiceTitan exposes them all via API. The detail you can recover varies, see where Housecall Pro reports miss job profit for an example of what does not export cleanly.
05Should I encrypt the export?
If it is sitting in a Google Sheet that the whole company can see, yes encrypt or restrict access. Customer phone numbers and addresses are PII. The legal exposure depends on your state but the practical move is least-privilege access.
06Does Clint pull these exports for me?
Clint connects directly to your Jobber, Housecall Pro, or ServiceTitan account and answers questions across the underlying data without requiring you to manually pull CSV exports. The export workflows above are the right play if you also want a portable archive separate from any tool, including Clint.
See Clint in action
Clint is the pre-built AI for home service shops. Connect your CRM, email, and phone system in minutes and the agents run on your real data.