Three years of your own records, read in full: 9 programs, 12,600 jobs, 742 replacement estimates, 9,640 phone calls and every invoice since October 2023.
Two labels run through this document. From your data means the figure was counted from your own records. Our estimate means it is a projection, and the assumption behind it is stated beside it so you can disagree with it.
01The short version
Plumbing and Heating Business is a sound business that is losing money in three places it cannot currently see.
What is working
- Revenue has grown each year, to $2,600,000 in the last twelve months. From your data
- Service and repair work earns a 58% gross margin, the highest of your four lines of work. From your data
- Customers on your membership plan say yes to a replacement 61% of the time. Everyone else says yes 34% of the time. From your data
Where you are losing money
- People who want to hire you and never hear back. 168 calls from new numbers were missed and never returned, and 24 website inquiries were never answered. 238 replacement estimates were given and never marked won or lost. From your data
- Work that was done and not billed. 46 finished jobs worth $21,300 were never invoiced. 412 service invoices left off a part that the technician's notes say was used. 131 members dropped off the plan because a card failed and nobody called. From your data
- Hours paid that produce nothing. Each service truck spends 2.3 hours a day driving. 187 visits went back to fix an earlier job. Your office copies between programs by hand for about 9 hours a week. From your data
The three things to fix, in order
- Answer every inquiry and follow up every replacement estimate. What it is costing you: about $67,000 a year. Our estimate
- Bill everything you do, and keep the members you have. About $47,000 a year, plus $21,300 once. Our estimate
- Make Housecall Pro the one place your records are kept, and plan the day by area. About $35,000 a year. Our estimate
The one number to improve first: the share of replacement estimates that reach a yes or a no. Today it is 68%.
These figures are what each problem is costing you. They are not a promise of what will be recovered.
02What you asked for
On our first call, you were asked: if you could wave a wand and have one thing in your business handled automatically, perfectly, every time, what would it be?
Your answer, word for word:
"Every time one of my technicians gives a customer a price on a new water heater or a furnace, somebody stays on it until we get a yes or a no. Right now, if the customer does not say yes on the spot, nobody calls them again. I find out we lost it when I drive past and see another company's truck at the house."
The records agree with you. 238 of your 742 replacement estimates have no outcome, and 196 of those show no call or text after the day the price was given. Fix 1 is built around your answer.
03What we looked at
| Software | What was read | Period |
|---|---|---|
| Housecall Pro | 6,480 customer records, 12,600 jobs, 742 replacement estimates in the last twelve months, 684 memberships, job notes and photos | October 2023 to September 2026 |
| QuickBooks Online | Every invoice, payment, supplier bill and the general ledger | October 2023 to September 2026 |
| Gusto | Hours, pay and overtime for all 14 people | October 2023 to September 2026 |
| Quo phone system | 9,640 inbound calls and 7,900 texts | October 2025 to September 2026 |
| Google Business Profile | Views, calls, website clicks, reviews | April 2025 to September 2026 |
| Google Local Services Ads | 540 leads you were charged for, and the spend | October 2025 to September 2026 |
| Google Ads | Spend, search terms, clicks | October 2025 to September 2026 |
| Website form and Gmail | 386 inquiries and the replies to them | October 2025 to September 2026 |
| The dispatcher's shared spreadsheet | Parts on order, callbacks, the on call list and estimates to chase | Current version |
What was missing. Google Ads has call reporting switched off, so a call from an ad cannot be told apart from any other call. Callbacks are tagged in Housecall Pro with no reason recorded. Phone history before October 2025 is not held.
Confidence. High on money, jobs, estimates, memberships and hours. Medium on marketing, because of the gap in call reporting. The value of missed inquiries is an estimate and is labeled as one.
04The shape of your business
Four lines of work make up the year. From your data
| Line of work | Jobs | Revenue, last 12 months | Share | Gross margin |
|---|---|---|---|---|
| Service and repair calls | 3,120 | $1,248,000 | 58% | |
| Furnace and boiler replacements | 80 | $650,000 | 36% | |
| Water heater replacements | 210 | $546,000 | 41% | |
| Membership plan fees, with 1,010 tune up visits | 1,010 | $156,000 | 20% | |
| Total | 4,420 | $2,600,000 | 47% |
Growth is slowing. Revenue rose 9.1% two years ago and 3.2% in the last twelve months. From your data
No single customer matters much. Two sources of customers do. Your ten largest customers are 6% of revenue. But 612 of your 1,400 new customers, or 44%, came from Google's two paid products. From your data
Two technicians bring in 56% of service revenue. Four technicians run service calls. Technicians A and B billed $698,000 of the $1,248,000. From your data
Winter is your biggest season. December to February brings in 33% of the year's revenue and 58% of the year's overtime. April to June is the slowest quarter, at 19%. From your data
This is why everything below comes in this order. The business does not need more leads first. It needs to answer, close and bill the work that already reaches it.
05Where the money comes from and where it goes
You kept 8.0 cents of every dollar. Operating profit was $208,000 on $2,600,000, after your own salary. From your data
| Where each dollar went | Share of revenue |
|---|---|
| Labor, field and office | 38% |
| Parts, materials and equipment | 27% |
| Trucks, fuel and repairs | 6% |
| Overhead, insurance, advertising, software, rent | 21% |
| Operating profit | 8% |
Work done and never invoiced: $21,300. We matched every finished job in Housecall Pro against every invoice in QuickBooks. 46 finished jobs have no invoice. Most are service calls from December to February, closed on the truck with the invoice left as a draft. From your data
Parts used and not billed: about $26,800 a year. On 412 service invoices, the technician's notes name a part and the invoice has no part on it. Our estimate, at an average of $65 a part from your own price book.
Warranty parts you paid for twice: about $5,400. 37 parts were replaced under a manufacturer's warranty, and QuickBooks shows no credit from the supply house for any of them. Nobody files the claim. From your data
Discounts came to $38,200. Technicians C and D gave a discount on 31% of their invoices. Technicians A and B gave one on 9%. All four work from the same price book. From your data
Your prices have fallen behind your costs. The price book was last updated in January 2024. Since then your supply house price for a standard tank water heater has risen 11%, and your average technician wage has risen 14%. Each point of margin on water heaters is $5,460 a year. From your data
You are paid in 17 days. Service calls are invoiced within a day, and most are paid before the truck leaves. Replacements take a median of 6 days to invoice, because the office builds each one by hand. $148,000 is owed to you today. $41,000 of it is more than 60 days old, and $23,500 of that is owed by two property management companies. From your data
Software costs $21,840 a year across 11 tools. Two of them do the same job as Housecall Pro, at $265 a month. From your data
06Who stays and who drifted
The membership plan is the best thing you sell, and it is not being looked after. From your data
| Memberships | Count |
|---|---|
| Active on 1 October 2025 | 668 |
| Signed up in the year | 244 |
| Lost in the year | 228 |
| Active on 30 September 2026 | 684 |
You signed up 244 members and lost 228. The plan grew by 16.
131 of the 228 never chose to leave. Their card expired or was declined, the payment failed, and the membership ended. Nobody called. Another 58 cancelled, and 39 moved or sold the house. The 131 were paying $29,900 a year in fees. From your data
127 members had no visit at all in the last twelve months. The plan promises two tune up visits a year. 684 members were owed 1,368 visits and 1,010 were done. A member who pays every month and never sees a technician is the next one to cancel. From your data
Members buy from you. Members were given 138 replacement estimates and accepted 84, or 61%. Everyone else was given 604 and accepted 206, or 34%. From your data
Most first time customers do not come back. Of the 1,310 customers who first called you in the year to September 2025, 341 returned in the following twelve months. That is 26%. From your data
You know which water heaters are about to fail. Job notes and photos in Housecall Pro give an age for 1,120 water heaters in your customers' homes. 412 are ten years old or more. Nothing in any program uses that list. From your data
07How new customers find you
1,400 new customers arrived in the last twelve months. From your data
| Source | New customers | Average first year revenue | Ad spend | Cost per booked job |
|---|---|---|---|---|
| Google search and your Google profile | 402 | $720 | None | None |
| Google Local Services Ads | 348 | $610 | $38,400 | $110 |
| Google Ads | 264 | $540 | $52,800 | $200 |
| Referral from a customer | 231 | $1,240 | None | None |
| Saw a truck | 38 | $720 | None | None |
| Unknown | 117 | $690 | None | None |
The average new customer spent $742 in their first year.
Google Ads cost $200 for each booked job, and those customers spent $540. That is your most expensive source and your lowest spending customer. From your data
37% of the Google Ads money went to searches you do not want. $19,500 was spent on searches for plumbing jobs and pay, for commercial work, and from towns outside your service area. From your data
You paid for 61 leads and never called them back. Local Services Ads charged you for 540 leads, about $71 each. 61 of them were missed calls that nobody returned. That is about $4,300. From your data
Your best source costs nothing and has no process. Referred customers spend the most by a wide margin. Nothing in any program asks for a referral.
Your Google profile is seen 5,900 times a month. In 18 months it produced 6,840 call clicks and 4,120 website clicks. From your data
What cannot be measured yet. With call reporting off, the 264 Google Ads customers are only those who used the website form or told your office where they found you. The true count is higher. Turning call reporting on is part of Fix 1 and costs nothing.
08How fast you answer
You miss 15% of your calls. 1,446 of 9,640 inbound calls went unanswered. From December to February the share rose to 24%: 732 of 3,050. From your data
| When the call was missed | Missed calls |
|---|---|
| Weekdays, 7 to 8 in the morning, before the office opens | 188 |
| Weekdays, 8 to noon | 246 |
| Weekdays, noon to 1, when both office staff are at lunch | 231 |
| Weekdays, 1 to 4:30 | 205 |
| Weekdays, after 4:30 | 318 |
| Weekends | 258 |
| Total | 1,446 |
The single lunch hour loses almost as many calls as the whole morning.
168 new callers never heard from you. Most missed calls came from existing customers who reached you later. 412 came from numbers that are not in your customer list, and 168 of those were never called or texted back. From your data
Website inquiries wait 19 hours. That is the median time to a first reply. 24 of 386 inquiries were never answered. From your data
What a booked call is worth. In your own records, 62% of new callers who reach a person book a job, and a new customer spends $742 in the first year. So each new inquiry is worth about $460. If a third of the 192 unanswered inquiries were people with a real job, that is 64 customers and $29,400 a year. Our estimate
238 replacement estimates have no outcome. You gave 742 estimates worth $2,840,000. 290 were won and 214 were lost. The other 238, worth $760,000, were never marked either way, and 196 of them show no contact after the day the price was given. From your data
Who gave the estimate matters more than the price. From your data
| Who gave the estimate | Estimates | Won | Share won |
|---|---|---|---|
| Technician A | 148 | 71 | 48% |
| Technician B | 131 | 55 | 42% |
| Technician C | 122 | 39 | 32% |
| Technician D | 117 | 27 | 23% |
| You | 224 | 98 | 44% |
| Total | 742 | 290 | 39% |
You gave all 188 furnace and boiler estimates and 36 of the larger water heater jobs. All four technicians quote water heaters from the same price book. Technician A's open estimates show a second call or text 61% of the time. For the other three it is 12%. Technician A follows up. Nobody asked the others to.
Your own estimates are slow in the season when speed matters most. A technician reports a furnace or boiler that needs replacing, and you visit and price it. The median wait from the report to your estimate is 6 days. From your data
| Days from the technician's report to your estimate | Estimates | Won | Share won |
|---|---|---|---|
| The same day or the next | 48 | 28 | 58% |
| 2 to 5 days | 62 | 27 | 44% |
| 6 days or more | 78 | 25 | 32% |
09What customers say
412 Google reviews, average 4.7. Only 38 arrived in the last twelve months, against 3,410 paid jobs. From your data
54 reviews have no reply, including 7 of your 11 reviews below three stars.
What people praise: a technician who explained the problem before starting, and a truck that arrived when promised. What people complain about: hearing nothing after being given a price, and a repair that needed a second visit. Both complaints match the records in parts 8 and 10.
Reviews affect what you pay for leads. Google says it uses your review count, your rating and how reliably you answer when it decides where to show your Local Services Ad.
10How your week runs
A service truck does 4.1 jobs a day. Four service trucks ran 4,130 service calls and tune up visits over 1,000 truck days. From your data
| Where a service truck's paid day goes | Hours |
|---|---|
| On the job | 5.2 |
| Driving | 2.3 |
| At the supply house | 0.7 |
| At the shop, loading and paperwork | 0.9 |
| Total paid day | 9.1 |
Trucks are sent by who is free, and not by where they are. On 31% of days at least one truck crossed your service area twice. Taking 20 minutes a day of driving off each service truck is 333 hours a year, or $17,300. Our estimate, at a full cost of $52 an hour.
1,140 trips to the supply house. That is the count of counter purchases on your supplier bills. No truck has a standard stock list. From your data
The four service technicians, side by side. From your data
| Technician | Service calls | Average ticket | Memberships sold | Callbacks |
|---|---|---|---|---|
| A | 810 | $452 | 96 | 31 |
| B | 795 | $418 | 71 | 38 |
| C | 770 | $371 | 22 | 40 |
| D | 745 | $354 | 14 | 56 |
| All four | 3,120 | $400 | 203 | 165 |
This is not a ranking of effort. Technician D is your newest, 14 months in, and has not worked a day alongside a senior technician since the first month. The table shows three habits that A and B have and nobody has taught: offer the plan on every call, bill every part, and call back on every estimate.
187 callbacks in the year. 165 followed a service call and 22 followed an install. That is 5.5% of paid jobs. A callback takes about 1.5 hours of truck time and earns nothing: 281 hours, or $14,600 a year. Our estimate, at $52 an hour. Bringing technicians C and D to the rate of A and B would remove about a third of them.
Overtime cost $30,000 in premium pay. 58% of it fell in December, January and February. From your data
Your own hours. You told us you spend 24 hours a week on office work, 8 of them on estimates. Our estimate, from your own count of your hours.
11Your software and your records
The tools are good. Too much of the business runs outside them.
| Tool | What it does for you | Verdict |
|---|---|---|
| Housecall Pro | Customers, calls booked, dispatch, estimates, invoices, memberships, the price book | Keep. Make it the one place your records are kept. |
| QuickBooks Online | The books | Keep. Fix how membership payments arrive. |
| Gusto | Payroll | Keep. |
| Quo | Phones and texts | Keep. Add a text back on missed calls. |
| The dispatcher's spreadsheet | Parts on order, callbacks, the on call list, estimates to chase | Replace with Housecall Pro job tags and fields. |
| Google Local Services Ads | Paid leads by phone and message | Keep. Answer every one. |
| Google Ads | Paid search | Keep, with call reporting on and the unwanted searches removed. |
| Google Business Profile | Your listing and reviews | Keep. Reply to every review. |
| Two overlapping tools | A separate review request tool and a separate forms tool | Cancel. $265 a month. |
Membership payments reach QuickBooks as one combined deposit. Housecall Pro sends invoices to QuickBooks correctly. Membership payments arrive as a single deposit with no customer attached, and your office manager matches them by hand, about 4 hours a week. The dispatcher's spreadsheet takes another 5. From your data, and our estimate from what your office told us.
The spreadsheet holds work that no program knows about. It lists 64 open items today: parts on order, callbacks to book and estimates to chase. None of them exists in Housecall Pro. If the spreadsheet is wrong or the dispatcher is out, they are lost. From your data
The two programs do not agree. Housecall Pro holds 6,480 customers and QuickBooks holds 7,020. 410 are duplicates. This is how 46 finished jobs went unbilled: nothing compares the two. From your data
Record gaps. 318 customers have no mobile number, so they cannot be sent a text. 96 members have a card that expires in the next 90 days.
Access. 6 people who no longer work for you still have a working login to at least one program. Two of those logins open the Housecall Pro app, with every customer's address in it. From your data This is something for you to act on this week.
What only one person knows. The on call rotation lives with the dispatcher. Boiler work lives with one install lead.
12What breaks if you are away for a month
- Furnace and boiler estimates stop. You give every one of them.
- Dispatch depends on one person and one spreadsheet, with nobody trained to cover.
- One install lead does all the boiler work.
- You hold the contractor's license the company works under.
- Both ad accounts sit in your personal Google login. Nobody else can pause a campaign or answer a lead.
- Two property management companies owe $23,500 that is more than 60 days old, and nobody is assigned to collect it.
None of these is a crisis today. Each one could become a crisis with a single event.
13What AI is worth using here
Worth doing now
- A text back within a minute to every missed call, and a same day reply to every website inquiry, written in your voice and approved by you once. After hours, the text gives the on call number for emergencies.
- Estimate follow up at 2, 5 and 10 days, by text and then by a call list for your office, until each estimate is marked won or lost.
- Furnace and boiler estimates drafted the same day from the technician's notes, photos and your price book, for you to approve or change before they go out.
- A check of each invoice against the job notes before it closes, so a part named in the notes is on the bill. And a weekly match of finished jobs to invoices.
- A check on membership cards, so a member is contacted before a card expires and on the day a payment fails.
- A review request after each paid job.
Not worth doing yet
- An automated voice answering your phone. Most of your missed calls fall at lunch and after 4:30. A staggered lunch and a text back cover those at no cost. A customer with water on the floor wants a person. Look again if you still miss more than 10% of calls in six months.
- Moving to a larger software package such as ServiceTitan. It is built for bigger shops and costs several times what you pay now. Nothing in this analysis is caused by Housecall Pro. Switching would cost you a season of disruption and fix none of it.
- Pricing furnaces and boilers from photos, with no visit. Venting, gas line size and the condition of the flue decide the price, and they need someone standing in the room. A draft from photos that you check is useful. A price nobody checked is not.
- Spending more on ads. You are already paying for leads nobody calls back. More leads into the same phone line would raise the cost and the loss together. Fix the answering first, then decide.
14The options, the three fixes and the scorecard
Option A: do nothing. The business stays profitable. The losses in this document continue at roughly their current size, and the membership plan keeps losing nearly as many members as it gains.
Option B: fix it yourselves. Everything here can be done by your own office with this document as the plan. The limit is time: the 9 hours a week your office spends copying between programs are the hours this would need, and winter is close.
Option C: Sannidhi does it. The three fixes below, in order.
| Fix | What gets done | What it is costing you | Cost |
|---|---|---|---|
| 1. Answer and follow up | Text back on missed calls. Same day replies. A staggered lunch in the office. Follow up on every replacement estimate until it is marked won or lost. Furnace and boiler estimates drafted the same day for your approval. Call reporting on, and the unwanted searches removed. | About $67,000 a year. Our estimate | Included |
| 2. Bill what you do, keep your members | Weekly match of finished jobs to invoices. Parts checked against job notes before an invoice closes. Warranty claims filed. Members contacted before a card expires and when a payment fails. Overdue tune up visits booked. The price book updated, with your approval. | About $47,000 a year, plus $21,300 once. Our estimate | Included |
| 3. One record, and a planned day | The dispatcher's spreadsheet moved into Housecall Pro. Membership payments matched in QuickBooks without retyping. Trucks sent by area. A stock list for each truck. A reason recorded on every callback. Old logins removed. | About $35,000 a year. Our estimate | Included |
Together the three problems are costing you about $149,000 a year, about 5.7% of revenue. These are the amounts you are losing. They are not a promise of what will be recovered.
Every cost, stated plainly
- Sannidhi: $500 a month.
- New software: none. Two tools are cancelled, which saves $265 a month.
- Your time: one hour a week to read the Monday report and make the decisions it asks for.
How the estimates were built. Fix 1 is $29,400 from unanswered inquiries plus 5% of the $760,000 in open estimates, which is $38,000. Fix 2 is $26,800 in parts not billed, $5,400 in warranty parts, and $14,900 from keeping half of the 131 members lost to a failed card. Fix 3 is 9 office hours a week at $27 an hour, which is $12,600, plus $17,300 in drive time and $4,900 for a third of the callbacks.
What comes first. Fix 1 starts in the first week, because it is what you asked for and because the heating season starts in November. Fix 2 starts with the 46 unbilled jobs, since that money is already earned.
Your scorecard
These are your main numbers as of 30 September 2026. The same ten are measured again every quarter, and your Monday report tracks them in between.
| Main number | Today | Where it comes from |
|---|---|---|
| Revenue, last 12 months | $2,600,000 | QuickBooks |
| Replacement estimates that reached a yes or a no | 68% | Housecall Pro |
| Replacement estimates won | 39% | Housecall Pro |
| New inquiries with no reply | 192 a year | Quo, website form |
| Active memberships | 684 | Housecall Pro |
| Memberships lost, last 12 months | 34% | Housecall Pro |
| Finished work not yet invoiced | $21,300 | Housecall Pro and QuickBooks |
| Callbacks, last 12 months | 187 | Housecall Pro |
| Jobs per service truck per day | 4.1 | Housecall Pro |
| Your hours a week on office work | 24 | Your own count |
What we could not tell from your records
- Why a job needed a callback. The tag is there and the reason is not. A one line reason on every callback fixes this from now on.
- Which ad calls became jobs. Call reporting closes this gap.
- True profit on each job. Parts are bought at the counter and not assigned to a job, so the margin on a single job cannot be counted. A stock list for each truck and parts on every invoice make it possible.
- Why customers say no to an estimate. 214 were marked lost and none has a reason.
- How your own hours divide. We have your count of 24 hours a week and nothing to check it against.