Home Service CRM Reporting: What Owners Actually Need to See
Most field service CRM reports tell you what happened, not what to do next. Here is what owners should actually track, why your reports disagree with QuickBooks, and how to fix it.
Key takeaways
- CRM revenue and QuickBooks revenue almost never match because CRMs recognize revenue on job completion while QuickBooks recognizes it on payment receipt
- The average contractor running Jobber, Housecall Pro, or ServiceTitan has at least 3 reporting gaps that require a spreadsheet workaround within the first year
- Lead source reporting breaks the moment a customer comes in through two channels, which is most repeat customers
- Stale quote tracking requires a manual filter in every major CRM because none of them surface it natively as an alert
- Proactive alerts on overdue invoices, stale quotes, and missed calls recoup more revenue than any new report you could build
Contents
- 01Why CRM reports are built for the wrong person
- 02The 6 reports every owner actually needs
- 03Why your CRM and QuickBooks will never agree
- 04How proactive alerts beat static reports
- 05What to ask your CRM data in plain English
- 06How to fix CRM reporting without rebuilding everything
- 07Where Clint Fits
- 08Sources
- 09Frequently Asked Questions
Your CRM was built for operations, not for ownership. Every major field service platform, Jobber, Housecall Pro, ServiceTitan, Workiz, and GoHighLevel, ships with reports that answer scheduling and dispatch questions. Almost none of them answer the question you actually want answered on a Tuesday morning: are we winning?
This guide covers the 6 reporting gaps that show up in nearly every $1M to $10M home service business, why your CRM and QuickBooks will never naturally agree, and what to do about the data you cannot get out of any one system.
Why CRM reports are built for the wrong person
Field service software was designed to run jobs, not to give owners a financial picture. The reporting in these tools reflects that priority.
Jobber's built-in reports cover job counts, invoices sent, and payments received. They do not cover gross margin by job type, technician revenue per hour, or estimate close rate by lead source. ServiceTitan is closer, but its report library is built around volume metrics that mean more to a COO than a founder. Housecall Pro added the "Reporting" tab relatively recently and it still requires CSV export for any multi-dimensional analysis.
The result: contractors who have been on these platforms for 2 or more years almost universally have a parallel spreadsheet or Google Sheet that does the job the CRM cannot. That spreadsheet is almost always out of date.
The 6 reports every owner actually needs
Revenue by job type. Not total revenue. Revenue by service category: HVAC installs vs. HVAC service, water heater replacements vs. drain clearing, scheduled lawn service vs. one-time cleanups. Without this, you are optimizing the wrong service lines. Most CRMs require a CSV export and a pivot table to produce this.
Estimate close rate by lead source. If your Google LSA leads close at 42% and your Angi leads close at 19%, you do not want to spend the same amount on both. None of the major CRMs surface this as a native report. You need a join between your lead source tag and your quote status, which almost no CRM does natively. The lead leakage audit for Jobber users covers the export steps in detail.
Technician revenue per hour. Average ticket tells you what jobs are worth. Revenue per hour tells you who is efficient. A tech doing $1,800 average tickets in 6 hours beats one doing $2,200 tickets in 10. This requires joining job revenue to clock-in/clock-out records, which only ServiceTitan does natively for most operators.
Accounts receivable aging. Invoices over 30 days are a cash flow problem. Invoices over 60 days are a revenue recovery project. Most CRMs show total AR. Almost none show you AR aging with a drill-down to the specific customer and invoice. You need that drill-down when you are making collection calls.
Stale quotes. Quotes sent more than 7 to 14 days ago with no response are money sitting on the table. Jobber, Housecall Pro, and Workiz all let you filter by quote status but do not proactively surface quotes that have gone cold. That filter lives 3 clicks deep and most owners only run it quarterly. See how to see stale estimates in your CRM for the exact filter path in each platform.
Missed call tracking. A missed call in a home service business costs an average of $150 to $400 in lost job value, depending on the trade and average ticket. CRMs almost never track missed calls because the phone system lives outside the CRM. Bridging call tracking data to your CRM requires either a phone integration (ServiceTitan has one; Jobber does not) or a manual tagging process.
Why your CRM and QuickBooks will never agree
This is the question that comes up in every business review meeting when a CFO or bookkeeper joins: "The CRM says $380K in revenue last month. QuickBooks says $312K. Which is right?"
Both are right. They are measuring different things.
CRMs recognize revenue on job completion. When a tech marks a job done and an invoice is generated, the CRM counts that as revenue. QuickBooks recognizes revenue on payment receipt (for cash-basis businesses) or on invoice date (for accrual-basis). If you have $68K in invoices that were completed in April but paid in May, your CRM shows April at $380K and QuickBooks shows April at $312K. Neither number is wrong.
The fix is not to reconcile the reports manually. The fix is to understand what each number is telling you and stop expecting them to match. Use the CRM number for operational decisions (job volume, tech performance, service mix). Use the QuickBooks number for financial decisions (cash position, tax liability, profitability). For a deeper walk through on connecting these two systems, see how to connect CRM and accounting data.
How proactive alerts beat static reports
Static reports require you to remember to look at them. Proactive alerts find you.
The three highest-ROI alerts in a home service business:
-
Stale quotes over 7 days with no response. A same-day text to a customer who went quiet converts at roughly 20 to 35% in most trades. Waiting 30 days to run a stale quote report drops that to under 10%.
-
Invoices unpaid past 30 days. Sending a payment reminder the day an invoice hits 30 days past due cuts average AR aging by 8 to 12 days for most contractors who implement it.
-
Customers with no booked job in 12 months. This is your dormant reactivation list. For recurring service businesses (HVAC maintenance, pest control, landscaping), 12-month-dormant customers have a reactivation rate of 25 to 40% with a single outreach. For how the best home service operators track this, the pattern is consistent: top performers run dormant lists monthly. Everyone else runs them never.
Static dashboards and scheduled reports are better than nothing. But the business intelligence that actually moves revenue is the alert that fires before you remember to look.
What to ask your CRM data in plain English
The 6 reports above require either a native CRM feature, a CSV export, or a joined data source. For most contractors, that means 2 to 4 hours of data work per month, minimum, assuming the data is clean.
A different path: connect your CRM, accounting, and call data to a single layer and ask questions in plain English. "Which lead source had the highest close rate last quarter?" "Show me all invoices over 60 days unpaid." "Which technician had the highest average ticket this month?"
The questions home service owners can ask their business data page has the full catalog of what becomes answerable once your data sources are connected.
How to fix CRM reporting without rebuilding everything
Start with data hygiene before any reporting project. A report built on dirty data is worse than no report because it creates false confidence. Run the 9 dirty data problems in contractor CRMs audit before you invest in any reporting layer.
Once your data is clean, prioritize the reports by decision frequency. Revenue by job type is a monthly decision. Stale quotes are a weekly decision. Missed calls are a daily decision. Build the daily-decision reporting first because it produces the fastest payback.
The last thing most contractors need is another dashboard. What they need is fewer things to look at that answer more questions. That is the difference between a reporting tool and an answer engine.
Where Clint Fits
The reports this guide describes need data from at least three systems: job records from your CRM, costs from your accounting software, and spend from your ad platforms. Most owners pull the CRM report, stop there, and never close the loop to actual margin.
Clint connects all three. Ask "what is my gross margin by job type this month?" and Clint joins your CRM and accounting data and returns the breakdown in seconds. No export, no pivot table, no waiting until month-end.
Sources
Frequently Asked Questions
6 questions home service owners actually ask about this.
01Why does my Jobber revenue not match my QuickBooks revenue?
Jobber recognizes revenue when a job is completed and an invoice is generated. QuickBooks recognizes revenue when an invoice is paid (cash basis) or on the invoice date (accrual basis). If you have outstanding invoices at month end, the numbers will always differ. This is not a bug. Stop reconciling them and start using each number for what it is designed to measure.
02What is the most common CRM reporting gap in home service businesses?
Estimate close rate by lead source is the most valuable report that almost no CRM produces natively. You need a join between the lead source tag on a customer record and the accepted/declined status on quotes linked to that customer. ServiceTitan gets close. Jobber, Housecall Pro, and Workiz require a CSV export and a spreadsheet join.
03How do I track stale quotes in Jobber?
In Jobber, go to the Quotes section, filter by status "Awaiting Response," then sort by creation date ascending. There is no native alert for quotes that have gone stale, so you need to either run this filter weekly or set a reminder. Clint can surface stale quotes automatically when connected to your Jobber account.
04Can I connect my CRM to QuickBooks for unified reporting?
Most major CRMs have a QuickBooks Online sync for invoices and payments. ServiceTitan has a native two-way sync. Jobber and Housecall Pro both sync invoices and payments. None of them produce a unified revenue + margin report because gross margin requires cost data (labor hours, parts) that lives in the CRM but typically does not flow to QuickBooks in a way that supports job-level margin calculation.
05What is the best way to track technician performance in a field service CRM?
Start with average ticket per technician and job completion time per technician. ServiceTitan surfaces both natively. For Jobber and Housecall Pro operators, you need to export completed jobs with the assigned technician and join to invoice amounts. Revenue per labor hour is the most accurate performance metric but requires clock-in/clock-out data, which adds another join.
06How many reports should I be checking weekly?
Three: stale quotes, unpaid invoices past 30 days, and revenue vs. prior week. Everything else is monthly or quarterly. Owners who check more than 5 reports weekly almost always stop within 60 days. Keep the weekly review under 15 minutes or it does not stick.
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.