Here is the number that reframes the problem: between 70 and 80% of plumbing service calls are urgent, and roughly 60,940 plumbing and HVAC firms in the United States employ fewer than five people. Put those together and you get the real reason plumbing jobs leak money between lead and invoice. Your pipeline is not missing stages. Every stage change has to be made by someone who, at that moment, is under a sink with both hands wet.
Every guide draws the same diagram: lead, contacted, scheduled, dispatched, on site, quoted, approved, completed, invoiced, paid. Then it tells you to buy software. Nobody asks the question that decides whether the system survives contact with a Tuesday: who physically moves the job to the next box, and what were they doing thirty seconds earlier?
The short answer
Track a plumbing job as four states with one exit condition each, and assign every state change to a moment when the plumber already has a free hand. The states are unbooked, booked, worked, collected. The exit condition is the single fact that must be true to move on. Anything more elaborate stays accurate for about three weeks and then quietly becomes fiction.
This is deliberately the opposite of what a longer-cycle trade needs. When we mapped security alarm jobs from lead to invoice, nine stages were correct, because an alarm job passes through six real handoffs between different people over weeks. A drain call passes through one person in ninety minutes. Copy the alarm pipeline into a plumbing shop and you get eight boxes that always say the same thing.
Why the standard diagram fails a plumbing shop
The standard diagram assumes a division of labour most plumbing companies do not have: a CSR who books, a dispatcher who assigns, a tech who works, an admin who bills. That is real at $5M. It is a fantasy at $1.48M, roughly what the average American plumbing business turns over.
Three structural facts separate plumbing from the trades this advice was written for:
Volume of state changes. A plumbing tech runs three to five stops a day. A roofing crew works one roof. An alarm installer does one or two installs. A plumbing shop therefore generates several times more job transitions per truck per day than the trades whose software it is sold, and every transition is a chance to stall.
Urgency density. Service Roundtable benchmarks put residential plumbing at 30 to 45% same-day demand, higher than HVAC and far higher than electrical, with total urgent calls at 70 to 80%. You cannot schedule admin around work that arrives as an emergency. The emergency always wins.
Tool sprawl. Simpro's 2025 Trades Outlook Report found the average trade business runs at least five software systems, larger ones eight or more, and nearly a third have no data integration strategy. Quoted in one place, scheduled in another, materials in a third, invoiced in a fourth: four chances to lose the thread on every job.
By the numbers
Industry-leading plumbing businesses run 20 to 35% net profit margins. The median sits at 2 to 8%. On a $1.48M shop that spread is worth more than $250,000 a year, and almost none of it comes from charging more.
Most plumbing owners are not losing money on price. They are losing it in the gaps between systems nobody has time to close, because the person who would close them is billing.
Four states, not nine stages
A state is worth having only if you can name the one fact that lets a job leave it. Status names without exit conditions are decoration.
| State | The job is here when | Exit condition: it leaves when | Who moves it |
|---|---|---|---|
| Unbooked | Someone asked for work and has no time slot | A specific date and arrival window exists, and the customer has heard it | Whoever answered |
| Booked | Time is reserved, nothing has been done | A plumber has been on site and knows what the work is | The plumber, on arrival |
| Worked | Physical work is done or a quote has been given | An invoice has been sent, or a written quote has a recorded outcome | The plumber, before leaving |
| Collected | Money has arrived and any permit is closed | Payment cleared and inspection signed off where one applies | Whoever banks it |
Two things matter more than the table itself.
First, "worked" has two exits, not one. A visit ends either in work performed or in a number given, and both have to leave the state. The second is where shops bleed: a plumber quotes a repipe on Thursday, the customer says they will think about it, and the job evaporates because "thinking about it" is not a state anyone owns. A plumber on r/Contractor who had recently started their own business described exactly this, saying they were "literally losing 10+ hours a week to dead end customers" driving out to quote work they never heard back about. Ten hours a week of a licensed plumber is not a marketing problem. It is an unowned exit condition.
Second, the person who moves the job is almost always the plumber, not an office. Accept that and the design constraint becomes specific.
The three moments a plumber has a free hand
You do not get to choose when a plumber updates the system. You only get to choose which existing moment you attach the update to. In a normal plumbing day there are three that reliably exist.
Moment one: in the truck before the call. Address on screen, engine running, thirty spare seconds. This is the only reliable moment to load context in rather than out: what the customer said, what happened last time, whether an open quote exists on this address. If your system cannot show a job's history on a phone in one tap, the plumber walks in cold and quotes as if the house has no past.
Moment two: at the supply house counter. Discussed below, because it decides your margin.
Moment three: in the truck after the call, before the engine starts. This is the most valuable thirty seconds in a plumbing business, and almost every shop wastes it. The plumber knows what they did, what they used, what needs to come back, and what they noticed but did not fix. Six hours later they are three jobs downstream and half of it is gone. Capture it here or it gets reconstructed from memory later, which is a polite word for guessing.
A plumbing business owner put it plainly on r/Plumbing, describing the daily grind as "having to be on the phone all the time, taking calls mid job (normally let it go to voicemail but then having to deal with it later)". That is the capture problem and the intake problem in one sentence.
Watch out
CallRail's home services data shows roughly 85% of callers who do not reach a live person never call back. Combined with 54% of homeowners hiring a plumber in under four hours, the voicemail you planned to return at 6pm is usually a job that was already booked with a competitor by 2pm.
The supply house run decides your margin
Here is the plumbing-specific event no generic pipeline diagram contains, and it quietly destroys job costing.
A plumber pulls parts for two or three jobs on one ticket, because driving to the supply house three times is insane. That receipt now has to be split across jobs invoiced on different days at different margins. If it is not split at the counter, it gets split at week's end from memory, or dumped whole onto whichever job is open. A plumber on r/Plumbing describing "materials charged to the wrong job because we were in a hurry" is not describing sloppiness, but the default outcome of the trade's normal purchasing pattern.
This matters more every year. Plumbing fixture and material costs have risen more than 30% since 2020, per BLS producer price data. On a $400 ticket, misallocating $60 of fittings does not just make one job look wrong. It makes your whole service line look profitable while a specific job type quietly runs at a loss.
The fix is not software. It is a rule: the receipt gets photographed and tagged to a job before the plumber leaves the counter. Ten seconds, at a moment when they already have a free hand and their wallet out. Skip it and no month-end reconciliation recovers the detail, because the information no longer exists anywhere. For the accounting-side view, we covered QuickBooks job costing for contractors separately.
We build custom CRMs for plumbing and home service companies around how the work actually runs, not around a generic pipeline. If your jobs, quotes, receipts and invoices currently live in four places, we can put them in one and shape the states to your shop.
The three jobs that do not fit the four states
Four states cover the drain calls, the leaks, the fixture swaps and the no-hot-water calls, which is the bulk of residential plumbing volume. Three job types break the pattern and need a second track.
Water heater replacements. In most US jurisdictions a swap requires a permit and inspection, fees typically $50 to $400, and the permit must be inspected before it expires. The job reaches "collected" on the money side while still open on the compliance side. If your system closes on payment, the inspection lives in one person's memory until the municipality writes to you.
Repipes and sewer or water service line work. These carry a real gap between quote and start, and material prices move inside it. A contractor on r/Contractor described quoting a job, waiting three weeks for the customer to decide, then finding prices had jumped hundreds of dollars against a number they were locked into. Copper and fittings behave the same way. Any plumbing quote above a few thousand dollars needs a written expiry date, and that expiry has to be a field the system can chase, not small print nobody reads.
Commercial, property management and warranty accounts. This receivable behaves nothing like the rest of your book. Residential plumbing collects at the door. A property manager pays on terms. Running both through one "collected" state makes your average days-to-payment a blended number that describes no actual customer, and the healthy half hides the sick half. Worth noting the scale: more than two thirds of US plumbing industry revenue is nonresidential, even though nearly all plumbing content, this article included, is written about residential service.
The second visit is a tracking failure, not a routing failure
Most advice treats the return trip as a scheduling or inventory problem. It is mostly an information problem.
Aberdeen Group puts the average first-time fix rate at 75%, best-in-class at 89%. When the first visit fails it takes an average of 1.6 additional visits, each dispatch costing $200 to $300. Plumbing runs at the better end, around 80 to 90%, but the arithmetic still bites: on a $300 to $500 residential ticket, one unnecessary return trip eats most of the margin on the original job.
The tracking connection is direct. A second visit gets expensive when nobody wrote down why the first failed. The plumber who goes back is often not the one who went first, and if the only record is "needs part," they will arrive without it. Make the exit condition explicit: the specific part, the specific reason, and a booked return slot, entered before leaving the driveway. That turns an open-ended callback into a scheduled job with a known cost.
Tip
Review the failed first visits monthly, not the average. The average tells you nothing actionable. A list of ten failures tells you your truck stock is wrong in exactly two ways.
The four numbers that locate the leak
You do not need a dashboard. Four numbers, each pointing at one state in the table above.
- Unanswered call rate. Missed-call rates in home services run 20 to 30%, and 40 to 50% in seasonal peaks. Small owner-operator shops sit at the worse end precisely because the owner is in the truck all day. This is the unbooked state failing before it starts.
- Quotes with no recorded outcome. Count written quotes over 30 days old with no won, lost or expired marker. Above a handful and you are funding site visits you never collect on.
- Median days from work complete to invoice sent. Under one day on same-visit work. BuildOps puts the reliable window at 0 to 10 days and notes that past 20 days invoices get buried or questioned.
- First-time fix rate. Target 80% or better. Every point below that is 1.6 extra visits at $200 to $300 a dispatch on a share of your jobs.
None of these need new software. Three can be counted by hand in an hour from records you already have. For the intake half, we went deeper on tracking where your leads actually come from.
Do not force the paper-check customer into your workflow
A caution no software-vendor guide will give you, because it costs them a subscription.
A plumber on r/Plumbing explained why they still do paper invoicing: "I deal with many elderly customers who want a paper receipt when they give me a check. Online software almost always wants email of customer, and payment by electronic means." Their verdict on the alternatives was blunt: the software programs are "expensive and worthless to a small business."
That is not being behind. That is correctly reading a customer base. Plumbing demand tracks housing age, and the median US home is now 44 years old. A system that cannot record a job paid by cheque, or that demands an email address before it will create a customer, gets worked around. A system that gets worked around is worse than no system, because now you believe it. Record the state change regardless of payment method. "Collected" means the money arrived, not that Stripe said so.
What to actually run this on
In order of how most plumbing shops should think about it:
- Under three people: a shared list with the four states and exit conditions written at the top, plus a hard receipt-photo rule. Not glamorous, genuinely sufficient.
- Three to ten people: off-the-shelf field service software is usually right. Plumbers on r/Plumbing consistently report Housecall Pro and Jobber fitting at this size and ServiceTitan not. One shop with five plumbers and one admin debated ServiceTitan and said "it didn't make sense." A two-truck operator noted ServiceTitan would not return their calls at startup and now chases them twice a week, which tells you who the product is built for.
- Ten plus, or a mixed service and construction book: this is where off-the-shelf breaks. An IT manager at a plumbing company running residential and commercial new construction, remodel and repipe, plus a service department, described hunting for one system and finding job information "is stored in too many locations, and causing double work." At that point a custom CRM built around your actual states is usually cheaper than the integration tax on five platforms.
The rule: buy the tool after you have written the states, never before. A tool bought first imposes its pipeline on you, and that pipeline was designed for a trade with an office.
The 30-day build
- Week 1. Write the four states and exit conditions on one page. Do not customise them yet. Count your unanswered calls and open quotes with no outcome. That is your baseline.
- Week 2. Institute the two capture rules: receipt tagged at the supply house counter, job closed out in the truck before the engine starts. Nothing else changes this month. These two habits carry most of the value.
- Week 3. Split your book into residential same-visit work and everything else. Give the second group permit and inspection fields for water heater work, and its own payment clock for commercial accounts.
- Week 4. Measure the four numbers against your week 1 baseline. Only now decide whether your tool is the constraint, and if it is, choose the replacement against your written states rather than a feature list.
The checklist
- Every job sits in exactly one of four states, and each state has one written exit condition.
- Every state change has a named owner, and that owner is a real person with a free hand at that moment.
- Every quote has an expiry date and a recorded outcome. No quote dies silently.
- Every supply house receipt is photographed and tagged to a job at the counter.
- Every failed first visit records the specific part, the specific reason, and a booked return slot before the plumber drives away.
- Water heater and repipe jobs do not close until the inspection is signed off, regardless of payment.
- Commercial and property management receivables are measured on a separate clock from residential.
- The system accepts a cheque and a paper receipt without complaint.
Plumbing does not have a pipeline problem. It has a capture problem wearing a pipeline costume. The jobs are short, the calls are urgent, the margins are thin, and the only person who knows what happened is the one least able to type. Build for that and the invoice takes care of itself. Build from the software demo instead and you will spend three years wondering why a full schedule keeps producing a 4% net margin.
Sources
- Simpro, Plumbing Industry Statistics for 2026 (compiling IBISWorld, BLS, Statista, BDR, Brentwood Growth, Harvard JCHS and the Simpro 2025 Trades Outlook Report)
- Aberdeen Group, Fixing the First-Time Fix, via OptimoRoute
- BuildOps, Guide to Plumbing Invoicing
- HVAC, Plumbing and Electrical Service Call Statistics 2026 (compiling Service Roundtable, CallRail and ServiceTitan benchmarks)
- phcppros, Water heater permits and inspections
- r/Plumbing, What software do you use to run your plumbing jobs day to day?
- r/Plumbing, Biggest day-to-day headaches technology hasn't solved
- r/Plumbing, Looking for an ERP/Accounting and FSM solution for a Plumbing company
- r/Contractor, How do you filter out tire kickers and time wasters?
- r/Contractor, Material price increases mid job
