All articles

Growth

How Much Profit Should a Contracting Job Make?

Published benchmarks put the same work anywhere from 12% to 65% gross margin. Here is how to derive the one number your jobs actually have to hit.

Om Patel 17 min read
Photo: Jason Leung / Unsplash

The short answer

A contracting job should make enough gross profit to cover its share of overhead plus your target net profit, which for most small trade businesses means a 30% to 55% gross margin. The exact number is your overhead rate plus your net profit goal, both as a percentage of revenue. Copying an industry benchmark is how shops go broke at a technically correct margin.

The short answer

A contracting job should produce enough gross profit to cover its share of your overhead plus the net profit you want to keep. In practice that puts most small trade businesses between a 30% and 55% gross margin per job, but the range is useless to you. The number you need is arithmetic, not a benchmark:

Required gross margin = your overhead rate + your target net margin

Both measured as a percentage of revenue. Everything else in this article is either how to get those two inputs right, or what breaks when you use the percentage alone.

The benchmarks disagree by a factor of five

Before deriving anything, it is worth seeing why looking the answer up does not work. Here is what the published sources say about gross margin on trade work, all of them current, all of them citing real data:

SourceWork describedGross margin
Level (contractor benchmark data)HVAC install and project12% to 18%
SimproHVAC replacement and installation45% to 55%
LevelService calls, HVAC and electrical45% to 55%
SimproHVAC service and repair55% to 65%
TradeSworn (worked example)Light commercial install27%
CFMA 2025 Construction Financial BenchmarkerSpecialty trades, aggregate, FY2024, 1,558 companies22.4%
ProjectWatch ProContractors, industry average15% to 20%

Level says HVAC install runs 12% to 18%. Simpro says installation runs 45% to 55%. They are describing the same physical work: pulling an old system out and putting a new one in.

Neither is lying. The gap is definitional. Whether equipment cost, labour burden, vehicle expense and supervision sit above or below the gross profit line moves the same job by thirty points. An equipment changeout where a $6,000 condenser runs through cost of goods sold will never show a 50% gross margin, and a shop that books equipment separately and reports margin on labour only will never show 15%.

Watch out

Before you compare your margin to any published number, check what the source counts as cost of goods sold. If it does not say, the comparison is worthless. This is the single most common way a contractor concludes they are doing fine at a margin that is quietly killing them.

The net profit benchmarks are tighter but still spread. CivilCFO puts the construction average at 5% to 6% net with top-quartile contractors at 10% to 12%. Level reports roughly 9% to 12% net for HVAC, electrical and plumbing, with top performers at 12% to 22%. ProjectWatch Pro cites an industry average of 3% to 7% net against overhead running 25% to 40% of revenue. Going further back, Roofing Contractor reported the NRCA's average roofing company profit at 2.8%.

So the honest summary of the published record: somewhere between 3% and 22% net, on gross margins between 12% and 65%. That is not an answer. It is a reason to do the arithmetic yourself.

The two inputs you actually need

The formula falls out of the definition. Net margin is gross margin minus overhead, all as percentages of revenue. Rearranged, the gross margin you have to hit is your overhead rate plus the net you want to keep.

Input one: your overhead rate. Total everything that is not a direct job cost, rent, insurance, office wages, software, non-billable vehicle costs, your own non-field time, then divide by expected revenue. Level's benchmark data puts overhead rates at 20% to 28% for HVAC, 22% to 30% for electrical and 18% to 25% for plumbing. Smaller shops run higher, because the same insurance and software bill spreads over less revenue.

Input two: your target net margin. This is a decision, not a lookup. What do you want left after everyone including you is paid at market? Ten percent is a reasonable floor if you want the business to fund a truck replacement and survive a slow quarter.

I wrote a full method for building the first number in how to build overhead into your prices, including the allocation base choice that moves overhead on a single $20,000 job from $1,200 to $3,000. The rest of this article assumes you have that number.

Three shops, three correct answers

ShopRevenueOverhead rateTarget netRequired gross margin
Plumbing, 4 trucks$1.4M19.5%12%31.5%
HVAC, 8 trucks$2.2M26%10%36%
Solo remodeler$270K41%12%53%

Twenty-two points separate the plumbing shop from the solo remodeler. Both numbers are correct. If the solo operator reads a benchmark saying 22.4% is the specialty trades aggregate and prices to it, he loses roughly thirty cents on every dollar he bills.

The third row is not hypothetical. A GC posting his own numbers on r/Contractor reported $270,000 of revenue at 53% gross margin and 12% net margin, roughly $30,000, while paying himself about $45,000 in salary. Work backwards: 53 minus 12 means his overhead ran 41% of revenue, and his own $45,000 is 16.7 points of that 41. He needed a 53% gross margin and he hit it exactly. Handed the HVAC shop's 36% target, he would have gone out of business inside a year.

Knowing your required margin only helps if you have enough quotes to hold it. Shops that discount are almost always short of pipeline, not short of discipline. We build lead generation systems for local service businesses: a conversion page, a qualifying form that arrives with the answers attached, and lead-to-sale tracking, so you can walk away from the jobs that price below your number.

Get a lead plan

Your job target is not your blended target

The formula gives you a company average. No individual job has to hit it, and if you run a mixed shop, none of them will.

TradeSworn works through a shop closing service calls at 57%, maintenance agreements at 54%, retrofit at 39%, light commercial install at 27% and one large bid job at 16%, blending to 31.6% overall. Move hours out of low-bid install and into service and well-scoped retrofit and the same shop blends to 37% without changing a single price.

Level's data makes the same point at the valuation level: a shop that is 80% or more service and maintenance trades at 6 to 8 times EBITDA on 15% to 20% net margins, while a shop that is 80% or more install and project work trades at 3 to 5 times on 5% to 12% net. Same trade, same trucks, different business.

So set a floor per work type rather than one number for everything. TradeSworn's framing is the cleanest: a target, a floor, and a review trigger. For their service work that is a 55% target, a 50% floor, and a review of anything below 48%. Anything under the floor needs a reason before it goes out, not an explanation after it closes.

Quote above your target, because margin fades

Here is what almost nobody builds into their target: the margin you quote is not the margin you close.

Construction CFO describes the pattern plainly. A job gets bid at 25% gross margin and closes at 11%. Nobody sat down and decided to give away fourteen points. It leaked, a little each month, through extra work built and never billed and hours running past the bid with nobody checking weekly.

ProjectWatch Pro works a specific case: a mechanical contractor takes a $380,000 commercial retrofit estimated at 22% gross margin, or $84,000 of expected profit. Labour came in $14,000 over, materials $6,000 over on a mid-job price adjustment, and $9,000 of scope went through without a signed change order. Final margin 4.8%. The job felt like it ran fine.

The scale of it shows up in Level's job-level data. Across 315,393 jobs, actual labour hours ran at 99.4% of budget at the median, but 131.1% at the 75th percentile. A quarter of jobs run at least 31% over on budgeted labour hours. Field operators describe the same thing without the statistics. One contractor on r/Contractor: "I noticed when I bid by day for those I was usually off, 1 week job was actually 9 days, 3 week job was actually 18 days." That is 20% to 29% over, consistently, from someone who knew his own work well enough to correct for it by bidding in weeks instead of days.

By the numbers

A job bid at 25% closing at 11%. A job bid at 22% closing at 4.8%. Labour at 131% of budget on the top quartile of 315,393 jobs. If your target is 36% and you quote exactly 36%, your median outcome is below your target and roughly a quarter of your jobs land nowhere near it.

The fix is not to bid scared. It is to measure your own fade and add it. Pull your last twenty closed jobs, compare quoted gross margin to actual, and take the median gap. If it is five points, quote 41% to land 36%. Then work on shrinking the gap, because a fade allowance is a tax you pay for not knowing your numbers mid-job.

Fade stays invisible because of timing. As Construction CFO puts it, profit fade is invisible on a profit and loss statement and obvious on a work-in-progress schedule: the P&L averages every job together, so a fading job sits inside a total that still reads fine. If your books cannot show margin by job while the job is running, you will find every fade at closeout, when the only available action is a post-mortem. That is the failure mode behind QuickBooks not tracking job profitability.

The test percentages fail: gross profit per field hour

Now the part that the benchmark articles miss entirely.

A margin percentage tells you how efficiently a job converted revenue into gross profit. It tells you nothing about how much of your scarcest resource the job consumed. For a shop with two or three crews, the binding constraint is not revenue. It is billable field hours, and you have a fixed number of them.

Compare two jobs at a plumbing shop that needs a 31.5% blended margin:

Service callInstall
Revenue$850$18,000
Direct cost$340$12,600
Gross margin60%30%
Gross profit$510$5,400
Field hours590
Gross profit per field hour$102$60

On percentage, the service call wins by double. On dollars per field hour it also wins, but by far less than the percentage implied. Now apply what actually happens in the field.

Ask r/Contractor how to bid a five hour job and the top answer, at 38 upvotes, is a question back: "I no longer bid hourly, day rates only. Between travel time, getting materials, etc., can you work on anything else during that time?" A finish carpenter in Washington: "I don't bid half days anymore. Even if a job only takes one hour I charge a full day ($600). Because I just can't reliably fit more than one job into a day." Another runs a rule: four hours or less prices at four, four and a half or more prices at a full eight.

They are all describing the same thing. That five-hour service call does not consume five hours of capacity. With travel, the supply house, and the fact that nothing fits behind it, it consumes a day. Recalculate at eight hours and the $510 of gross profit becomes $64 per field hour, and the 60% margin job is now worse per unit of capacity than the 30% install.

The floor nobody calculates

That reframe gives you a floor that a percentage cannot express. Take the four-truck plumbing shop: $273,000 of annual overhead, four techs, roughly 1,500 billable field hours each, so 6,000 billable hours a year.

  • Overhead per field hour: $273,000 / 6,000 = $45.50
  • Target profit per field hour: 12% of $1.4M = $168,000 / 6,000 = $28.00
  • Required gross profit per field hour: $73.50

Any job producing less than $73.50 of gross profit per field hour loses that shop money, whatever its margin percentage says. The $850 service call at a realistic eight hours produces $64. It fails, at a 60% gross margin.

This is exactly what a commenter on that job costing thread was reaching for: "You are only paid for billable work, but your business costs run all the time. Admin, travel, gaps between jobs, equipment, insurance, tax, time off, and your own salary all have to be recovered from the work you can charge for. If that foundation isn't right, individual jobs can look profitable while the business slowly loses money."

Run both tests. The percentage catches jobs you priced too cheaply. The dollars per field hour catches jobs you priced correctly and should not have taken.

Tip

Calculate your required gross profit per field hour once and write it on the wall. It is a single dollar figure, it does not change through the year, and it is the fastest quote-time sanity check in the business. If a job clears your margin percentage but not your hourly floor, it is a job that only works when you have nothing better booked.

The seven points lost to markup and margin

None of this survives if you compute the percentage wrong, and a lot of contractors do. A contractor on r/Contractor put it as plainly as it can be put:

"Seriously embarrassing to admit but I was quoting jobs at '30% profit' and wondering why I was barely breaking even. Turns out I was confusing markup with margin. A 30% markup is only a 23% margin."

He is right. Markup is a percentage of cost. Margin is a percentage of price. A 30% markup means price equals 1.3 times cost, so the margin is 0.30 divided by 1.30, which is 23.1%. Seven points, silently, on every job.

To hit a target margin, divide cost by one minus the margin:

Target gross marginDivide cost byEquivalent markup
30%0.7042.9%
36%0.6456.3%
40%0.6066.7%
50%0.50100%
55%0.45122%

The method a contractor posted on r/Contractor gets this right and is worth stealing wholesale: estimate man-hours, multiply by crew wage, mark that up to your burdened labour rate, add materials, add other costs like equipment and subs, add your overhead recovery, then divide the total by one minus your target gross margin. On $18,000 of cost at a 40% target, that is $18,000 divided by 0.6, or $30,000.

His follow-on point is the one worth internalising. If overhead is fixed and a shop moves its average gross margin from 30% to 40%, the ten points land almost entirely on the bottom line, taking net margin from 10% to 20%. Not a 10% improvement. A doubling of take-home profit.

The owner wage adjustment

One last correction, and it invalidates more contractor P&Ls than everything above combined.

Go back to the solo GC: $270,000 revenue, 53% gross margin, 12% net, roughly $30,000 of profit, on a $45,000 salary. He counted his salary at all, which already puts him ahead of most owner-operators. But if replacing him costs $85,000, the honest net is $30,000 minus the missing $40,000, which is negative $10,000.

The rule is simple. Hours on the tools are a direct job cost and belong in cost of goods sold at what it would cost to replace you. Hours spent estimating, scheduling, invoicing and chasing payment are overhead, the same as an office manager's salary. Owners who take only a draw put none of it in either bucket, which makes every job they personally work look more profitable than it is.

Until you make that adjustment, your gross margin is overstated, your overhead rate is understated, and the required margin you derived from them is too low.

Build your number this week

  1. Total last year's overhead and divide by last year's revenue. That is your overhead rate. Include a market-rate wage for every hour you worked that was not on the tools.
  2. Re-cost your own field hours into cost of goods sold at replacement rate. Recalculate gross margin.
  3. Pick a target net margin. Ten percent floor, twelve to fifteen if you want the business to fund its own growth.
  4. Add them. That is your required blended gross margin.
  5. Split it by work type. Set a target, a floor and a review trigger for service, maintenance, retrofit and install separately. The blend is an outcome of your mix, not a rule for any single job.
  6. Measure your fade. Last twenty closed jobs, quoted margin versus actual, take the median gap, add it to every quote until the gap shrinks.
  7. Compute your gross profit per field hour floor. Overhead plus target profit, divided by realistically billable field hours. Write the dollar figure on the wall.
  8. Check your arithmetic. Divide cost by one minus the margin. Never add a markup and call it a margin.

The bottom line

The question "how much profit should a contracting job make" has no industry answer, and the five-fold spread across published benchmarks is the proof. It has a shop answer, and it is your overhead rate plus your target net margin, quoted with a fade allowance on top and floored by a dollar figure per field hour.

The shops that hit their number are not better estimators. They know two things most operators do not: what their overhead actually costs per billable hour, and what their own time is worth at market. Everything else is arithmetic.

The fastest way to hold a margin is to stop needing every job. Pavado builds done-for-you lead generation for contractors and home service businesses, targeted outreach and Meta campaigns feeding a conversion page and a qualifying form, with tracking from lead to closed sale so you can see which jobs actually cleared your number.

Get a lead plan

Frequently asked questions

How much profit should a contracting job make?
Enough gross profit to cover the job's share of your overhead plus your target net profit. Written as a formula, your required gross margin equals your overhead rate plus your net profit goal, both measured as a percentage of revenue. A shop carrying 26% overhead that wants 10% net has to average a 36% gross margin. A solo operator carrying 41% overhead needs 53%. Both numbers are correct for the shop that produced them.
What is a good gross margin on a service call?
Published benchmarks for service and repair work cluster between 45% and 65%. Level's contractor benchmark data puts service call gross margin at 45% to 55% for HVAC and electrical and 45% to 60% for plumbing, while Simpro reports 55% to 65% for HVAC service and repair. Service work runs higher than install because it is labour-driven with a small material component and a tight scope.
Why do industry profit benchmarks disagree so much?
Because nobody defines cost of goods sold the same way. Level puts HVAC install and project margin at 12% to 18% while Simpro puts replacement and installation at 45% to 55%, and both are describing equipment changeouts. The gap is almost entirely whether equipment cost, labour burden and vehicle costs sit above or below the gross profit line. Compare a benchmark to your own numbers only after you have checked what it counts.
Is net profit or gross profit the number I should track per job?
Gross profit, because it is the only one you control at quote time. Net profit is a company-level outcome that depends on overhead you already committed to months ago. As one contractor put it on r/Contractor, gross profit is the pool of money that still has to pay off all your overhead, and only what survives that is real net profit.
What net profit margin should a contracting business make?
Most published data lands between 5% and 12% net for the industry as a whole, with well-run trade shops higher. CivilCFO puts the construction average at 5% to 6% net with top-quartile contractors at 10% to 12%. Level reports typical net margins of roughly 9% to 12% for HVAC, electrical and plumbing, with top performers reaching 12% to 22%. Anything under 5% leaves nothing to absorb a bad job.
Should I quote at my target margin exactly?
No, quote above it, because closed margin is reliably lower than quoted margin. Construction CFO describes a job bid at 25% gross margin closing at 11%, a 14 point fade nobody authorised. Level's data across 315,393 jobs shows actual labour hours at 99.4% of budget at the median but 131.1% at the 75th percentile, so a quarter of jobs run at least 31% over on labour alone. Add your own historical fade to your target.
Why does a job with a high margin percentage still lose money?
Usually because it consumed more capacity than the percentage suggests. A $850 service call at 60% gross margin produces $510 of gross profit. If travel and mobilisation make it a full day, that is about $64 per field hour, which can fall below what you need to cover overhead. Percentage measures the job. Dollars per field hour measures what the job cost you in the only thing that is genuinely scarce, which is crew time.
Does my own pay count as job cost or overhead?
Both, split by what you were doing, and it has to be counted at a market rate or the margin is fiction. One GC on r/Contractor reported $270,000 of revenue at 53% gross margin and 12% net while paying himself around $45,000. If replacing him costs $85,000, the real net is negative. A net margin that only exists because the owner underpaid themselves is a wage, not a profit.
Done-for-you lead generation: a dedicated conversion page, a qualifying form that arrives with the answers attached, and lead-to-sale tracking, fed by targeted outreach and Meta ad campaigns we build and run.
Get a lead plan

Free tools

Find out what your site is costing you.

Enter your address and we check the real page. Scores are free and the itemised report lands in your inbox. No account, and we change nothing on your site.