Skip to main content

Roofing Gross Profit Margin Benchmarks: What Healthy Looks Like and How to Get There

Emily Crawford, Home Maintenance Editor··30 min readRoofing Business Operations
On this page

Most roofing owners can tell you their revenue to the dollar and have almost no idea what they actually keep. Revenue is the vanity number. Gross profit margin is the one that decides whether a busy season builds equity or just buys you a bigger headache and a tax bill. If you want one number to run the business on, it is gross profit dollars per job and the margin percentage behind it.

This is a practitioner's breakdown of roofing gross profit margin benchmarks: what counts as gross profit (and what people wrongly leave in or out), what healthy looks like by job type and region, how to calculate it without lying to yourself, where the margin quietly leaks, and a concrete workflow to push it three to eight points without raising a single price by gouging customers.

The short version up front: a residential re-roof company that bids and job-costs cleanly should be landing in the high 30s to mid 40s on gross margin, with the best-run shops pushing past 50 on retail work. Commercial and new-construction roofing usually run thinner. If you are sitting at 25 or below on residential, you do not have a sales problem first. You have a measurement problem and a pricing problem, in that order.

What gross profit margin actually means in roofing

Gross profit is revenue minus the direct cost of producing the job. It is not net profit. It is not your owner's pay. It is the money left after you pay for the materials and the labor that physically delivered the roof, before any office overhead.

The formula is simple and people still get it wrong:

Gross profit ($) = Revenue (collected contract price) − Cost of goods sold (COGS)

Gross profit margin (%) = Gross profit ($) ÷ Revenue × 100

The whole game is what you put in COGS. For a roofing job, COGS is everything that scales with the job itself:

  • Shingles, underlayment, ice-and-water, drip edge, ridge, starter, fasteners, sealant, pipe boots, flashing, vents.
  • Tear-off labor and install labor (your crew payroll for that job, or the sub invoice).
  • Crew payroll burden tied to that labor: the employer side of payroll taxes, workers' comp, and any per-job benefits load.
  • Dumpster and disposal/tipping fees.
  • Permits and any required inspection fees pulled for that specific job.
  • Equipment rental specific to the job (a boom lift, a conveyor).
  • Job-specific fuel and the cost of getting the crew and material to that address.
  • Material delivery and any restocking fees.
  • Warranty/callback reserve for that work.

What does NOT belong in COGS, because it is overhead and lives below the gross-profit line:

  • Office rent, utilities, and software subscriptions.
  • Sales commissions are a gray area — many shops treat them as a selling cost below the line, but the cleanest read is to keep them as a direct cost because they scale dollar-for-dollar with the sale. Pick one treatment and never move it.
  • Owner's salary, office staff, estimators not on the roof.
  • Marketing and lead acquisition.
  • General liability insurance (workers' comp is direct; GL is usually overhead).
  • Trucks, tools, and equipment you own (depreciation is overhead).
  • Accounting, legal, bank fees.

Gross margin tells you whether your pricing and production are healthy. Net margin tells you whether the whole business is healthy after overhead. You can have a fantastic gross margin and still lose money if overhead is bloated, and you can have a thin gross margin that no amount of overhead-trimming will save. Most roofers obsess over the wrong one. Fix gross first.

Gross margin vs. net margin: the two numbers and how they relate

Term What it covers Healthy residential re-roof range
Gross profit margin Revenue minus direct material + direct labor + job costs 38%–50%
Operating / net profit margin Gross profit minus all overhead, before/after owner pay 8%–15% net

The relationship that matters: Net = Gross − Overhead %. If your overhead runs 28% of revenue and you want a 12% net, you need a 40% gross margin floor. Back into your required gross margin from your overhead, not from a number you heard at a trade show.

The benchmarks: what healthy gross margin looks like by work type

There is no single roofing margin. The number swings hard by the type of work, who does the labor, and whether you sell retail or insurance/storm. Here are realistic, field-grounded ranges. These are operating bands seasoned estimators target, not published survey figures — your own job costing is the only benchmark that ultimately matters.

Work type Typical gross margin band Notes
Residential retail re-roof (in-house crews) 40%–52% Highest control over price and production; the profit center for most shops
Residential re-roof (subbed labor) 30%–40% You give up labor margin to the sub; volume can offset
Insurance/storm restoration 30%–42% Scope is set by an accurate, documented estimate; supplements protect margin
Repairs and small jobs 45%–65% High margin per dollar, low dollar per job; protects shoulder-season cash
New residential construction 18%–28% Builder-controlled pricing, bid pressure, slow pay
Commercial flat (TPO/EPDM/mod-bit) 25%–38% Larger tickets, thinner margin, longer cycle, retainage
Metal / standing seam 35%–48% Material-heavy, skill-dependent labor, premium pricing

A few honest caveats. Repairs look gorgeous on a percentage basis and terrible on a dollars-per-day basis once you count windshield time — they are a cash-flow and relationship tool, not your engine. Commercial margin percentages run lower but the gross-profit dollars per job can be enormous, which is the point: a 30% margin on a $180,000 TPO job is $54,000 of gross profit, more than several retail re-roofs combined. Always look at margin percentage AND gross-profit dollars per job. One without the other lies to you.

Storm restoration changes the margin math because the scope is anchored to documented damage rather than a number you pull out of the air. The healthy way to protect margin on this work is documentation discipline, not claim gymnastics. You inspect the roof, you photograph and document the damage thoroughly, and you write an accurate repair estimate aligned to Xactimate line items for your own scope of work. You hand that estimate to the homeowner. The homeowner files. The insurer decides coverage.

Where margin gets protected is the supplement — but only on the documentation side. When you find additional damage or code-required items (drip edge, ice-and-water per the local amendment to the IRC, additional layers discovered at tear-off), you document them with photos and measurements and submit the supporting documentation for that work. You are stating facts about your scope, with evidence.

What erases margin and your license at the same time: negotiating or adjusting the claim for a fee, interpreting the homeowner's policy or coverage for them, promising a specific approval or payout, telling a homeowner the deductible will be waived or absorbed, advertising a free roof, or representing the homeowner against the carrier. That is unlicensed public adjusting in most states, and it is a fast way to lose everything you built. The safe and durable frame is simple: document thoroughly, write an accurate estimate, hand it over, let the homeowner file and the insurer decide. Margin on storm work comes from clean documentation and a complete scope, not from coverage promises you are not allowed to make.

How to calculate your real gross margin (and stop fooling yourself)

Most roofers calculate gross margin once a year from their tax return, on accrual or cash basis they do not understand, with labor scattered across the wrong accounts. That number is useless for running the business. Here is how to get a number you can trust, at the job level and at the company level.

Step 1: Job-cost every job, the small ones included

For each completed job, total up:

  1. All material delivered to that job, at actual invoice cost (not your estimate, not list price). Pull it from supplier invoices tagged to the job.
  2. All labor that touched that roof, fully burdened. Burdened means base wage plus the employer's payroll tax, workers' comp premium for that class code, and any per-hour benefit load. If you pay a crew $25/hr and your burden is 28%, your real labor cost is $32/hr. Costing at $25 is the single most common way roofers fool themselves into a fake margin.
  3. Job-specific costs: dumpster, permit, delivery fee, equipment rental, fuel, restocking.

Gross profit on the job = collected price − the three buckets above. Margin = that divided by collected price.

Step 2: Reconcile collected vs. contracted

Use the price you actually collected, not the contract amount, on closed jobs. Change orders, concessions, discounts to close, and the credit-card processing fee on a $30,000 charge (2.9% is $870 — real money) all move the number. If you bill $28,500 and collect $27,200 after a goodwill credit and a card fee, your revenue for the margin calc is $27,200.

Step 3: Roll jobs up to a company gross margin

Sum gross profit dollars across all jobs in the period, divide by summed collected revenue. Do it monthly. A monthly company gross margin trend is one of the most useful dashboards in the business — it catches a slipping number in weeks instead of finding out at tax time.

A worked example

A standard retail re-roof, 28 squares, architectural shingle, single-story walkable:

Line Amount
Contract price collected $19,400
Shingles + accessories (actual invoices) $5,050
Underlayment, ice-and-water, drip edge, ridge, starter, fasteners $1,180
Tear-off + install labor, burdened $4,300
Dumpster + disposal $520
Permit $185
Delivery + fuel $240
Card processing (2.9%) $563
Total COGS $12,038
Gross profit $7,362
Gross margin 37.9%

That is a respectable but not elite job. Notice the levers sitting in plain sight: the burdened labor and the card fee. If this crew is slow and the labor runs to $5,400 instead of $4,300, the margin drops to 32.2%. If the homeowner pays by check instead of card, you keep the $563 and the margin jumps to 40.8%. Two operational decisions — crew speed and payment method — swing this single job almost nine points. That is the whole thesis of margin work: it is won in dozens of small operational places, not in one big price hike.

A second worked example: where it goes wrong

Now take a job that looks identical on the contract but bleeds. Same 28 squares, same shingle, but a cut-up hip-and-valley roof on a two-story with a steep pitch, sold by a rep who shaved the price to win it against a low-baller.

Line Amount
Contract price (originally $20,800) collected after a $1,800 "to earn your business" discount $19,000
Shingles + accessories — over-ordered at a 6% waste factor on a roof that needed 14% $5,720
Underlayment, ice-and-water (extra valleys), drip edge, ridge, starter, fasteners $1,460
Tear-off + install labor, burdened — steep/cut-up roof ran 1.6 crew-days, not 1.0 $6,150
Restocking fee on returned squares $95
Dumpster + disposal (two layers found at tear-off) $710
Permit $185
Delivery + a second material run $410
Callback: re-flash a valley that leaked, labor + material $480
Card processing (2.9%) $551
Total COGS $16,271
Gross profit $2,729
Gross margin 14.4%

Same roofer, same crew, same week — 14.4% instead of 37.9%. Nothing here was a freak event. The discount, the under-estimated waste factor, the steep-roof labor that was priced as if it were walkable, the second material run, and one callback together vaporized two-thirds of the gross profit. Every one of those five was preventable at the estimate or on the jobsite. This is what "margin is won in dozens of small places" looks like when you lose instead of win it. The benchmark band assumes you avoid this job; most thin shops are running a yard full of them and blaming the market.

The single most useful exercise: stack-rank your jobs

Take the last 20 to 30 job-costed jobs and sort them by gross margin, worst to best. Two things will be obvious within five minutes. First, your problem is concentrated — a handful of jobs at the bottom are dragging your whole average down, and they almost always share a cause (one crew, one job type, one salesperson, steep/cut-up roofs you keep mis-pricing). Second, your best jobs prove your pricing is fine — if the top of the list is at 48% and the bottom is at 15%, you do not have a pricing problem, you have a consistency problem, and consistency is an operations fix, not a price increase. Most owners discover they have been about to raise prices across the board when what they actually needed was to stop doing the bottom five jobs the way they did them.

Markup vs. margin: the mistake that quietly bleeds shops

This is the costliest arithmetic error in the trade, and it is everywhere. Markup and margin are not the same number, and confusing them means you think you are making 40% when you are making 28%.

Markup is what you add on top of cost. Margin is what percentage of the final price is profit.

If your COGS on a job is $12,000 and you want a 40% margin, you do NOT add 40% to cost. Adding 40% markup gives you a price of $16,800 — and a margin of only 28.6% ($4,800 ÷ $16,800). To actually hit a 40% margin, you divide cost by (1 − margin):

Price = COGS ÷ (1 − target margin)

$12,000 ÷ (1 − 0.40) = $12,000 ÷ 0.60 = $20,000. That requires a 66.7% markup, not 40%.

Here is the conversion table to tape to your estimator's monitor:

Target gross margin Required markup on cost Multiply cost by
25% 33.3% 1.333
30% 42.9% 1.429
35% 53.8% 1.538
40% 66.7% 1.667
45% 81.8% 1.818
50% 100% 2.000
55% 122% 2.222

If your estimating template uses a flat markup multiplier and you assumed that multiplier equals your margin, every job you have ever priced is thinner than you think. Fix the template first; it is the highest-leverage thirty minutes you will spend this quarter.

Where roofing margin leaks: the usual suspects

Margin rarely dies from one big wound. It bleeds from a dozen small cuts. Here is where it goes, roughly in order of how much money it costs the average shop.

1. Bad measurement and material waste

Under-measuring means change orders, surprise material runs, and eating the difference to keep the customer happy. Over-ordering means returned material restocking fees or shingles rotting in the yard. Aerial measurement and tight takeoffs pay for themselves the first time they prevent a second material delivery. A 5% waste factor that should have been 12% on a cut-up hip roof turns a profitable job into a break-even one.

2. Crew speed and rework

Labor is your most variable cost. A crew that does a clean tear-off-to-cleanup in a day on a job you budgeted at a day and a half is pure found margin. A callback for a leak around a chimney flashing is the opposite: you pay labor twice, you pay material twice, and you spend the goodwill. Track callback rate as a margin metric, because every callback is a direct hit to the gross profit on that job.

3. Discounting to close

The fastest margin killer in sales. A salesperson who knocks $1,500 off a $19,000 job to close it did not give away 8% of the price — they gave away roughly 20% of the gross profit, because the discount comes entirely out of the margin, not the cost. On the worked example above, a $1,500 concession turns $7,362 of gross profit into $5,862 — a fifth of the profit, gone, to save a conversation. Train salespeople in margin dollars, not price percentages.

4. Burden you forgot to count

Workers' comp for roofing is one of the highest class-code rates in the trades. Payroll taxes, comp, and benefits commonly add 20%–35% on top of base wage. If you cost labor at base wage, your real margin is several points lower than your spreadsheet claims, on every job, forever.

5. Payment processing and slow pay

Card fees on large tickets are real margin. So is the cost of money when a commercial job sits on retainage for 90 days. Offer a check or ACH discount, or build the processing cost into the price rather than absorbing it.

6. Supplier pricing you never renegotiate

Material is half your COGS. A two-point improvement on material cost from rebate programs, better supplier terms, or buying ahead of a manufacturer price increase drops almost entirely to gross profit. Most shops never have the conversation.

7. Chasing the wrong roofs

This one hides upstream of every job-cost spreadsheet, and it is the most expensive of all. Margin is set before the truck rolls — it is set by which doors you knocked and which leads you spent money chasing. Drive, mail, and pay payroll to bid roofs that are nowhere near needing replacement, and your real cost per sold job balloons even though every individual job looks fine on paper. Selling cost is overhead, but it determines how much price pressure you face: when you only talk to homeowners whose roofs are genuinely worn out, you close warmer, discount less, and defend margin without trying.

Targeting and the upstream margin lever

Every margin tactic on the production side is downstream of one question: did you spend your selling dollars on roofs that were actually due? You can run a flawless tear-off and still have a thin business if half your estimates went to roofs with ten good years left, sold by a homeowner who was never going to buy.

This is where which-roofs-are-due data changes the economics before a single shingle is costed. RoofPredict scores the roofs in an area by two things that drive whether a home is genuinely ready to replace: roof age, estimated as a range from aerial imagery, and the storms each roof has actually taken, modeled per roof rather than read off a regional hail map. A hail map tells you where it hailed; per-roof modeling estimates which roofs in that footprint were likely worn out. Pair age with storm exposure and you get a ranked picture of which houses on a street are worth your crew's time and which are not.

The margin connection is direct and unglamorous: fewer estimates burned on roofs that were never close to due, less gas and payroll spent on the wrong doors, more conversations with homeowners whose roofs are genuinely failing — which is exactly the conversation where you defend price instead of discounting to close. It also enriches your existing list. Mine your old estimates and past customers, overlay roof-age range and storm exposure, and you surface the homes in your own book that have aged into needing you, without buying a single lead.

Honest limits, because a thin trade compares notes. Roof age comes back as a range, not an install date — you will see something like 18 to 22 years, not a certificate. Storm modeling is odds, not proof; it tells you which roofs were likely impacted, and your inspection still confirms condition. It does not measure the roof or identify the shingle, and it is not a lead service that hands you a sold customer. It sharpens the outbound you already do so the jobs you cost out started from better doors. The benchmark math earlier in this piece assumes you are bidding roofs that have a real reason to buy; targeting is how you make that assumption true.

A workflow to raise gross margin 3–8 points

Margin improvement is not one decision. It is a sequence you run in order, because each step depends on the one before it. Here is the sequence that works.

Step 1: Measure before you touch price (Weeks 1–2)

You cannot improve a number you are not measuring honestly. Before changing anything:

  • Job-cost the last 20 completed jobs with fully burdened labor and actual material invoices.
  • Calculate gross margin per job and the spread. The spread matters more than the average — a 38% average that ranges from 22% to 51% is a consistency problem, not a pricing problem.
  • Tag each job by type (retail, storm, repair, commercial) and by crew. Patterns jump out immediately.

Step 2: Fix the estimating template (Week 3)

  • Convert any flat-markup multiplier to a true margin-divisor (cost ÷ (1 − target margin)).
  • Set a margin floor by job type. A common structure: 45% target on retail, 38% on storm, 50%+ on repairs, with a hard floor 5 points below target that requires owner approval to breach.
  • Build burden into the labor line so no one has to remember it.
  • Add card processing as a visible line, with a check/ACH alternative.

Step 3: Stop the discount bleed (Week 4)

  • Retrain salespeople in gross-profit dollars. Every concession gets quoted to them as profit dollars surrendered, not price percentage.
  • Replace price discounts with value adds that cost you less than they are worth to the homeowner (an upgraded ridge vent, a longer workmanship warranty) where it makes sense.
  • Require owner sign-off below the margin floor. Most below-floor jobs simply stop happening once someone has to ask.

Step 4: Attack the two biggest cost lines (Weeks 5–8)

  • Material: renegotiate supplier terms, get on rebate programs, buy ahead of announced price increases, tighten waste factors with better takeoffs.
  • Labor: measure crew production rate (squares per labor-hour) by crew, find the gap between your fastest and slowest crews, and close it with training or crew restructuring. Cut callbacks with a flashing-and-detail checklist on every job — callbacks are double labor and double material.

Step 5: Move the sales mix upstream (ongoing)

  • Shift selling effort toward roofs that are genuinely due, using roof-age range and storm exposure to rank doors and enrich your list, so estimators spend their hours on homes that close warm.
  • Track close rate and average margin by lead source. Some sources produce low-margin price-shoppers; some produce homeowners who need you and pay for quality. Spend where the margin is.

Step 6: Review monthly, adjust quarterly

  • Pull company gross margin every month. Watch the trend, not the single number.
  • Recompute your overhead percentage quarterly and reset your required gross-margin floor (Net = Gross − Overhead).
  • Re-job-cost a fresh sample every quarter to make sure the template still reflects reality, especially after material price moves.

Setting margin floors by job type: a practical structure

A single company-wide target is a blunt instrument. Different work carries different cost structures and risk, so set the floor where the work lives.

Job type Target gross margin Hard floor (owner approval below) Why
Retail re-roof, in-house 45% 40% Your profit center; protect it hardest
Storm restoration 38% 33% Documentation-driven scope; supplements protect upside
Repairs / small jobs 50% 45% High percentage, low dollars; mind windshield time
Metal / premium 45% 40% Skill premium and material risk
Commercial flat 32% 27% Thin %, big gross-profit dollars; watch retainage and slow pay
New construction 24% 20% Builder-controlled; only take it if it loads your slow weeks

The floor is not a suggestion. The discipline of requiring a sign-off below the floor is what actually holds margin, because it converts a thousand quiet salesperson concessions into a deliberate, accountable decision.

Gross-profit dollars per day: the metric pros watch

Margin percentage is necessary but not sufficient. The number elite operators actually run on is gross-profit dollars per crew-day. A 50% margin on a repair that takes a full crew half a day might be $900 of gross profit. A 38% margin on a re-roof that takes the same crew a day might be $7,000. The percentage flatters the repair; the dollars-per-day tells you the truth about which work to feed your crews.

Compute it simply: gross-profit dollars on the job ÷ crew-days the job consumed. Rank your job types by it. You will often find that a slightly-lower-margin job type is your real engine because it produces far more gross-profit dollars per day of crew capacity — and that your beloved high-margin repairs are a cash tool, not a growth tool. This is the metric that resolves the repairs-look-great-on-percentage trap for good.

Overhead recovery: how gross margin turns into money you keep

Gross margin is the lever, but the reason it matters is what happens after overhead. The bridge between the two is your overhead recovery, and most roofers have never calculated it cleanly. Here is the mechanic.

Your overhead is every cost that does not scale with a single job: office rent and utilities, software, the office manager and the dispatcher, your own salary, marketing, general liability insurance, truck payments and depreciation, accounting and legal. Add it up for the year. Divide by your annual revenue. That percentage is the share of every dollar that gets eaten by keeping the lights on before you earn a dime of net profit.

Required gross margin = Overhead % + Target net %.

Work an example. A shop does $3.2M a year. Overhead totals $832,000, which is 26% of revenue. The owner wants a 12% net after paying themselves a market salary (which is already inside overhead). Required gross margin = 26% + 12% = 38% floor. Price below 38% gross on average and you cannot hit 12% net, full stop, no matter how good the crews are. Price at 44% gross and your net lands near 18%. This is the calculation that converts a benchmark range into your number. A shop with lean overhead (18%) can thrive at a 30% gross margin; a shop carrying heavy overhead (32%) is losing money at a 38% gross margin that would make the lean shop rich. Benchmarks are a starting point. Your overhead sets your real floor.

The trap inside overhead recovery is volume. Overhead percentage is calculated against revenue, so it moves as revenue moves. Land a big year and your overhead percentage drops even if the dollar amount is flat — which means the margin you needed last year is higher than the margin you need this year, and shops that do not recompute keep pricing to an outdated, too-high floor and lose work, or to a too-low one and lose money. Recompute overhead recovery every quarter and especially after a big swing in volume. This is also why chasing thin-margin volume can be smart or suicidal depending on your overhead structure: extra volume that absorbs fixed overhead can be worth taking at a lower margin, but only if it does not force you to add overhead to deliver it.

A quick overhead-recovery reference

Your overhead % of revenue Target net % Required gross-margin floor
18% 10% 28%
22% 12% 34%
26% 12% 38%
30% 12% 42%
34% 14% 48%

The lesson the table teaches in one glance: two roofers can run the exact same crews and material and one nets 14% while the other loses money, purely because of overhead structure. If your gross margin is healthy on benchmark terms and your net is still thin, your problem is overhead, not pricing — and the fix is below the gross line, not above it.

Seasonality, cash flow, and the margin you can actually bank

Margin on paper and cash in the account are different animals, and roofing's seasonality drives a wedge between them. A 42% gross margin earned across a frantic summer means little if the winter eats it because crews sat idle on payroll, or if a chunk of it is locked in retainage on commercial jobs that pay in 90 days. Three seasonal realities shape the margin you can actually keep.

Idle-season payroll. If you keep crews on payroll through a slow winter to retain them (often the right call — re-hiring and re-training a crew every spring is brutal on quality and on margin through callbacks), that idle labor is overhead that did not exist in your summer math. Either reserve for it out of peak-season gross profit or fill the slow weeks with the work that loads them: repairs, smaller jobs, and the storm/age-driven roofs your targeting surfaces year-round. A repair-and-small-job pipeline is not a high-dollar-per-day engine, but in February it is the difference between paying your crew from gross profit and paying them from your line of credit.

Retainage and slow pay. Commercial and new-construction work commonly hold 5%–10% retainage until final completion, and even your contract balance can sit 30–90 days out. That is real gross profit you earned and cannot spend, and the cost of carrying it (your line-of-credit interest) is a genuine margin drag that the job-cost spreadsheet does not show. Factor a cost-of-money line into long-cycle bids, or you are quietly financing your customers at your own expense.

Deposit and draw structure. Healthy roofing cash flow front-loads collection: a deposit at signing, a material draw, and the balance at completion, so you are rarely funding a job out of your own pocket. The shops that bleed are the ones that buy all the material, pay all the labor, and collect once at the end — they can be wildly profitable on paper and still go under because the cash timing breaks them. Margin you cannot bank is not margin yet.

Regional and seasonal cost factors that move the benchmark

The benchmark bands are national-ish. Your real numbers shift with where and when you work, and pretending otherwise is how shops mis-read their own performance.

  • Labor market. Roofing wages and the availability of skilled crews vary widely by metro. A high-cost labor market compresses gross margin unless price keeps pace — and it often does not, because customers anchor to a remembered price. Track your squares-per-labor-hour and your burdened labor rate as a unit cost so you can see compression coming instead of discovering it at tax time.
  • Workers' comp class rates. Comp premium for roofing class codes is among the highest in any trade and varies by state. A move of a few points in your comp rate is a direct move in your burdened labor cost on every job. Know your rate, know your experience modifier, and treat improving your safety record (and thus your mod) as a margin project, because it is one.
  • Material price volatility. Asphalt-based products track petroleum and announced manufacturer increases come in waves. The shops that protect margin watch the producer price signals, buy ahead of telegraphed increases, and re-quote open estimates that go stale — an estimate written before a 9% shingle increase and sold after it is a margin you handed back.
  • Storm cycles. In hail and wind markets, a major storm floods the area with demand and with out-of-town crews. Demand can support price; the swarm can crush it. Margin in storm markets is protected by documentation quality and by working the roofs that genuinely qualify on age and exposure, not by racing competitors to the cheapest bid.
  • Permit and code load. Local code amendments (ice-and-water coverage requirements, re-decking and ventilation rules, drip-edge mandates per the adopted IRC) add real cost that must be in the estimate. A code-required item discovered at tear-off and not priced is margin gone. Know your jurisdiction's adopted code and its local amendments cold.

None of these change the principle. They change your number. The discipline is the same everywhere: measure your real costs in your market, price to a margin floor derived from your real overhead, and re-check both as the market moves.

A one-page margin scorecard to run weekly

If you track only one set of numbers, track these. Pull them every week from your job-cost data and you will catch problems while they are still small.

  1. Company gross margin, trailing 4 weeks. The headline. Watch the trend line, not the single week.
  2. Gross margin spread (best job minus worst). A wide spread is a consistency problem. Narrow it.
  3. Gross-profit dollars per crew-day, by crew. Tells you which crews and which work actually pay.
  4. Average discount given, per sold job. The discount bleed, made visible. Set a ceiling.
  5. Callback rate, last 30 days. Every callback is double labor and double material against that job's margin.
  6. Squares per labor-hour, by crew. Your production-rate early-warning system.
  7. Material cost as a percent of revenue. Drifts up quietly with price increases and loose waste factors.
  8. Close rate and average margin by lead source. Tells you where to spend selling dollars.
  9. Percent of jobs sold below the margin floor. Should be near zero, and each one should have an owner sign-off behind it.

Nine numbers, one page, ten minutes a week. That cadence is what separates shops that know their margin from shops that find out in April. It is unglamorous and it is the entire job.

A short checklist before any estimate leaves the office

  • Is labor costed fully burdened (wage plus payroll tax, comp, benefits)?
  • Is the waste factor right for THIS roof's pitch and cut-up, not a default?
  • Are all code-required items for this jurisdiction in the scope?
  • Is the price derived by cost ÷ (1 − target margin), not cost × markup?
  • Does the gross margin clear the floor for this job type?
  • Is card processing accounted for, with a check/ACH alternative offered?
  • For long-cycle work, is a cost-of-money line in the bid?
  • For storm work, is the documentation complete and the estimate Xactimate-aligned for your scope only — with nothing said about coverage, payout, or deductibles?

Common questions estimators ask, answered straight

Should sales commission be in COGS or overhead? Either is defensible; pick one and never move it, because moving it makes your trend lines lie. The cleanest argument for putting it in COGS is that it scales dollar-for-dollar with the sale, so it belongs to the job. The cleanest argument for overhead is that it is a selling cost, not a production cost. The wrong answer is doing it differently month to month.

Is workers' comp a direct cost? Yes. Comp premium is tied to the labor that produced the job, so it burdens the labor line and lives in COGS. General liability insurance is overhead.

What about owner labor on the roof? If the owner is swinging a hammer, that labor has a cost even if no paycheck is cut. Charge the job a fair labor rate for owner time, or your margin is fictional and you will mis-price the day you hire someone to replace yourself.

Putting it together

The benchmark numbers — high 30s to low 50s gross margin on residential retail, thinner on commercial and new construction — are the destination. The route there is measurement, an honest estimating template, killing the discount bleed, attacking material and labor cost, and pointing your sales effort at roofs that are actually due so you defend price instead of slashing it. None of it is exotic. All of it is operational discipline most shops skip because revenue feels like progress and margin feels like homework.

Margin is set long before the truck rolls — in your template, in your floors, and in which doors you decided were worth knocking. If you want the upstream piece handled, RoofPredict ranks the roofs in your area by age range and the storms they have actually taken, and enriches your own list with the same signals, so your crews start every job from a better door. Roof age comes back as a range and storm exposure as odds, not certainties — it sharpens your outbound, it does not replace your inspection. Book a demo and bring a roof you already know the answer on; you decide if it called it.

FAQ

What is a good gross profit margin for a roofing company?

For residential retail re-roofing with in-house crews, a healthy gross profit margin runs roughly 40% to 52%, with the best-run shops pushing past 50%. Subbed-labor residential typically lands 30% to 40%, storm restoration 30% to 42%, commercial flat 25% to 38%, and new construction 18% to 28%. Below 25% on residential usually signals a measurement and pricing problem before a sales one.

How do I calculate gross profit margin on a roofing job?

Take the price you actually collected and subtract the direct cost of producing the job (COGS): material at actual invoice cost, fully burdened labor, dumpster, permit, delivery, equipment rental, and card processing. Gross profit equals collected price minus that total. Gross margin equals gross profit divided by collected price, times 100.

What is the difference between gross margin and net margin in roofing?

Gross margin is revenue minus direct material and labor and job costs, and it tells you whether your pricing and production are healthy. Net margin subtracts all overhead (office, marketing, owner pay, trucks, insurance) and tells you whether the whole business is healthy. A common relationship is Net equals Gross minus your overhead percentage; a typical residential net is 8% to 15%.

What costs should be included in roofing COGS?

Everything that scales with the job: all material, fully burdened install and tear-off labor (base wage plus payroll tax, workers' comp, and benefits), dumpster and disposal, job permits, equipment rental, delivery and job fuel, warranty reserve, and card processing on that sale. Office rent, marketing, owner salary, general liability insurance, and owned trucks and tools are overhead, not COGS.

Why is markup not the same as margin?

Markup is what you add on top of cost; margin is the percentage of the final price that is profit. Adding 40% markup to a $12,000 cost yields a $16,800 price and only a 28.6% margin. To hit a true 40% margin you divide cost by (1 minus the margin): $12,000 divided by 0.60 equals $20,000, which is a 66.7% markup. Confusing the two makes every job thinner than you think.

How can a roofing company increase its gross profit margin?

Job-cost honestly with burdened labor, convert your estimating template from flat markup to a true margin divisor, set margin floors by job type with owner sign-off below them, stop discounting to close (a concession comes entirely out of profit), renegotiate material and tighten waste factors, raise crew production and cut callbacks, and point sales effort at roofs that are actually due so you defend price instead of slashing it. Three to eight points is realistic.

What gross margin should I expect on storm and insurance roofing work?

Storm restoration commonly runs 30% to 42% gross margin. The scope is anchored to documented damage, so margin is protected by thorough documentation and a complete, accurate estimate rather than by negotiating the claim. Document and photograph the damage, write an Xactimate-aligned estimate for your scope, and hand it to the homeowner; the homeowner files and the insurer decides coverage.

No. Negotiating or adjusting the claim for a fee, interpreting the homeowner's policy or coverage, promising a specific payout or approval, telling a homeowner the deductible will be waived or absorbed, or representing the homeowner against the insurer is unlicensed public adjusting in most states. The safe and durable approach is to document damage thoroughly, write an accurate estimate for your own scope, and let the homeowner file while the insurer decides coverage.

Why does my actual margin come in lower than my estimate?

The usual culprits are unburdened labor (costing crew at base wage instead of base plus payroll tax, comp, and benefits, which adds 20% to 35%), card processing fees on large tickets, discounts given to close, change orders eaten to keep the customer happy, and material waste from loose takeoffs. Each is small alone; together they routinely cost five to ten points.

Should I look at margin percentage or gross profit dollars per job?

Both, plus gross-profit dollars per crew-day. A high margin percentage on a small repair can produce fewer profit dollars per day of crew capacity than a lower-margin re-roof. Percentage tells you pricing health; gross-profit dollars per crew-day tells you which work actually to feed your crews. Repairs flatter the percentage but are usually a cash tool, not your growth engine.

The Roofline by RoofPredict

Stay Ahead of Roofing Market Changes

Join The Roofline by RoofPredict for weekly roofing intelligence: material price signals, storm demand, insurance and regulatory updates, sales tactics, and local contractor opportunities.

By signing up, you agree to receive The Roofline by RoofPredict. Unsubscribe anytime.

Sources

  1. NRCA - National Roofing Contractors Associationnrca.net
  2. U.S. Bureau of Labor Statistics - Roofers Occupational Outlookbls.gov
  3. U.S. Bureau of Labor Statistics - Producer Price Index (Construction Materials)bls.gov
  4. U.S. Small Business Administration - Calculate Your Startup Costs and Marginssba.gov
  5. IRS - Cost of Goods Sold (Publication 334, Tax Guide for Small Business)irs.gov
  6. OSHA - Fall Protection in Residential Constructionosha.gov
  7. IBHS - Insurance Institute for Business & Home Safety (Roofing & Hail Research)ibhs.org
  8. NOAA National Weather Service - Storm Prediction Centerspc.noaa.gov
  9. ICC - 2021 International Residential Code (Roof Assemblies, Chapter 9)iccsafe.org
  10. Federal Trade Commission - Advertising and Marketing Basicsftc.gov
  11. Texas Department of Insurance - Public Insurance Adjusterstdi.texas.gov
  12. U.S. Census Bureau - Construction Spending (Residential)census.gov
  13. SBA - Small Business Financial Management Guidesba.gov
  14. RoofPredictroofpredict.com

Related Articles