Plumbing business profit margins by job type

There's no reliable public benchmark for a plumbing business profit margin at your size. Roto-Rooter, whose parent company reports its results to the SEC, ran a 50.1% gross margin before depreciation in 2025 and kept about 18% of revenue as operating income. Brandon Vaughn, who coaches home service owners, tells service companies to aim for 15% to 25% net profit. Where your shop lands depends on your mix of work.
Gross margin is what's left after the labor, materials and truck costs on the job. Net margin is what's left after overhead and a fair salary for you too. A drain call, a water heater swap, a repipe and a new-construction rough-in each earn very different money per tech hour, and a blended number hides that. Our plumbing bookkeeping page covers how we set up the books to show it.
What's a normal plumbing profit margin?
Nobody publishes one you can trust. The Census Bureau puts plumbers under the same industry code as heating and air conditioning contractors, 238220 (2022 NAICS manual), so government business data can't separate your trade from HVAC. The ranges on software and consulting blogs either cite no source or come from a firm's own client files, which you can't check.
A number you can check comes from Roto-Rooter. Its parent company, Chemed, reports Roto-Rooter's results to the SEC every year. From the 2025 annual report:
- Revenue: $899.9 million.
- Gross margin before depreciation: 50.1%, down from 52.2% in 2024.
- Wages in cost of services: $306.6 million, which works out to about 34% of revenue.
- Income from operations: $160.8 million, which works out to about 18% of revenue, before Chemed's corporate costs and income taxes.
That's one national company, with branches, independent contractors and franchisees serving over 90% of the US population, so treat it as a sanity check and not a target. It does show the shape: about half of each dollar goes to doing the work, and Roto-Rooter keeps close to a fifth after overhead.
For a target, work backward from your own overhead. If overhead, including your salary, runs 35% of revenue and you want Brandon's low end of 15% net, the whole company needs a 50% gross margin.
How job types compare
Here's an example plumbing company doing $2 million a year. Every number is made up to show the math, not to set a benchmark. Gross profit is revenue minus tech labor at a loaded $50 an hour (wages plus payroll taxes, workers' comp and benefits, which the labor burden post shows how to work out), materials, truck costs, permits and subs.
| Job type | Revenue | Gross profit | Gross margin | Tech hours | Gross profit per tech hour |
|---|---|---|---|---|---|
| Service and repair | $500,000 | $260,000 | 52% | 3,000 | $87 |
| Drain cleaning | $300,000 | $200,000 | 67% | 1,500 | $133 |
| Water heaters | $400,000 | $160,000 | 40% | 1,200 | $133 |
| Repipes | $300,000 | $120,000 | 40% | 2,000 | $60 |
| New construction | $500,000 | $100,000 | 20% | 4,000 | $25 |
| Whole company | $2,000,000 | $840,000 | 42% | 11,700 | $72 |
Overhead, including a market salary for the owner, runs $700,000. Net profit is $140,000, or 7%.
Drain work has the highest margin because the price is mostly the tech's time and the jetter. Water heaters show a 40% margin because $180,000 of their $400,000 went to tanks, parts, permits and haul-away, but the jobs are short, so they earn as much per tech hour as drains. Repipes show the same 40% and earn less than half as much per hour, because they tie up a crew for days. New construction usually means bidding against other plumbers, and in this example it eats the most hours of all.
The HVAC profit margins post splits a service and replacement shop the same way.
Which work pays?
Rank your job types by gross profit per tech hour. Margin percent tells you how much of each dollar is left. Gross profit per hour tells you what a tech's day earns, and tech hours are the thing you can't easily buy more of.
Then compare each line to your overhead per tech hour. In the example, $700,000 of overhead over 11,700 tech hours is about $60 an hour. Spread it evenly across every hour, which is rough but close enough to rank them, and here's what each type leaves after overhead:
- Drain cleaning and water heaters: about $73 an hour.
- Service and repair: about $27 an hour.
- Repipes: about break-even.
- New construction: $35 an hour short, about $140,000 a year.
New construction brings in 25% of the revenue, uses 34% of the tech hours and earns 12% of the gross profit. After its share of overhead, it costs about the company's whole net profit.
Don't drop it on that alone. If those techs would otherwise sit in the shop, $25 an hour still pays something toward overhead. If you can fill the hours with service and drain calls, every hour you move is worth $62 to $108 more.
Count what a job type leads to as well. Roto-Rooter's filing says its excavation and water restoration jobs "are generally sold as a result of initial calls from customers regarding drain cleaning issues." A drain call that turns into a sewer line replacement is worth more than its own ticket.
When to stop chasing a line of work
Brandon made this call at his own cleaning company. Window cleaning took different tools and training from the rest of the work, and it earned far less per man-hour:
And it was a low margin service we do like 50 bucks a man hour whereas the exterior cleaning, I can do 100 to $150 a man hour, the margins are way better, I can afford to pay my guys more money. … let's just focus on just the nice high end service. And let's never market again for window cleaning services
That's how Brandon explained it to an exterior cleaning owner who asked whether focusing meant turning down big jobs. What he cut was the marketing for the low line. He gave the same advice to a window cleaning owner whose revenue had stalled on thin margins: shrink to the best customers and most profitable jobs, drop the lower-profit services and raise prices, even if revenue falls.
For a weak line in a plumbing shop, you have three choices:
- Reprice it. In the example, new construction needs $240,000 of gross profit on its 4,000 hours to cover its share of overhead, not $100,000. Bid from your own cost per hour, not from the last builder's number.
- Cap it. If builders won't pay that, take only enough to fill slow weeks.
- Stop marketing it. Move that ad money behind the drain and water heater calls that earn the most per hour.
Set up your books to see it
You can't rank job types until your P&L splits them. Chemed's filing puts field wages and benefits, materials, insurance and service vehicle costs in cost of services, above gross profit, and a plumbing P&L needs the same setup (our chart of accounts for contractors lists the accounts). Then split income by job type. In QuickBooks Online, Intuit's help pages give these steps:
- Go to All apps, then Accounting, then Chart of accounts, and select New account.
- Name it for one job type, such as "Drain cleaning income." Set the account type to Income, pick a detail type and select Save. Repeat for each job type.
- Go to All apps, then Sales & Get Paid, then Products & services. Edit each service item, set its Income account to the matching job type and save.
- Put tech hours and supply-house bills on each job (job costing shows how), then total gross profit and tech hours by job type once a month.
If your P&L can't show job types yet, bring last year's numbers to a free profit call. With YetiBooks you get the same profit specialist every time and your first report with action items inside 30 days (here's how it works).
Questions owners ask
What gross margin should a plumbing company aim for?
Add your overhead percentage to your net profit target. At 35% overhead and a 15% target, you need 50% across the company. A shop with a lot of new construction needs its service and drain work well above that to carry the average.
Does my own pay count before net margin?
Yes. Put your salary on the P&L at what you'd pay someone to run the company. If you only take draws, your net margin is overstated by that amount, and any comparison is off.
Should I track margin by job or by job type?
Both. By job, weekly, catches a repipe going over on hours while you can still do something about it. By job type, monthly, tells you what to market and what to reprice.


