90% of roofing contractors are losing money on jobs they think are profitable. According to the NRCA, the average roofer nets just 2.8% - meaning half the industry makes less than that. If you want to run a roofing business that actually pays you, the fix starts with how you price, not how many bids you throw.

Why do most roofers underprice jobs?

Roofing Contractor magazine describes a textbook example: a contractor bids $1,100 on a $1,000 job, thinking they locked in 10% profit. They actually netted 9% and came up short by more than $11 on every $1,000 in cost.

The core error is calculating profit as a percentage of cost instead of a percentage of the selling price. If your job costs $10,000 and you want 20% profit, you don't add $2,000 - you divide by 0.80 and price at $12,500. Most contractors have never run that math and would be embarrassed if they did.

We've seen this exact pattern across dozens of contractor accounts: the business looks busy, the calendar is full, the trucks are rolling - and the owner is taking home $60,000 a year on $1.2M in revenue. That is a pricing problem, not a volume problem.

What markup percentage do roofers actually need?

The roofing industry standard markup sits at 10-20% (averaging 15%) according to ServiceTitan - but that range is what keeps you at 2.8% net. Strong performers use 40-80% markup on job costs to achieve their target gross margin, according to ProLine Roofing CRM data.

Here is how the cost structure typically breaks down on a roofing job:

Cost Category% of Total Job Cost
Labor40-50%
Materials30-40%
Overhead (excl. marketing)10-15%
Target Net Profit (best-in-class)12%+

If labor and materials alone eat 70-90% of your bid, there is no room for overhead, customer acquisition costs, or profit. You have to price overhead and marketing into every single job before you calculate profit.

How much does a roofing lead actually cost you?

This is where most pricing conversations fall apart - contractors forget that leads are not free. LocaliQ analyzed 3,211 US-based home services search advertising campaigns between April 2024 and March 2025 and found roofing and gutters carried the highest cost-per-click at $10.70 to $11.13.

The resulting cost per lead lands between $186.79 (LocaliQ) and $350 (WebFX) depending on your campaign and market. In high-competition metro areas, CPCs on roofing keywords can run $25 to $50 per click according to WebFX data cited by WhatConverts - often 10 to 20 times higher than keyword tools predict.

If you are not pricing customer acquisition cost into your jobs, you are letting your ad spend silently consume your margin. See how other contractors are handling lead cost and cash flow pressure before scaling ad spend.

Does your lead source change how you should price?

Absolutely - and most roofers don't account for this at all. According to Biddable's 2026 roofing benchmark data, shared leads book at 8-15% while exclusive leads book at 35-40%. Run the math: a $90 exclusive lead closing at 40% costs you $225 per job acquired, while a $45 shared lead closing at 8% costs you $562 per job acquired.

If your pricing model assumes you close everyone who calls, and you are actually running on shared leads at 8%, your real cost per acquired job is more than double what you think. Your margin targets need to reflect your actual close rate, not your best-case scenario.

This is also why offering financing to roofing customers changes the math - it raises your close rate on higher-value jobs, which drops your effective cost per acquisition. A ServiceTitan survey of 1,020 owners in roofing and related trades found only 38% of companies offer financing, and only 40% of those offer it on all jobs. That is a massive missed opportunity.

What gross and net margin should a roofing company actually target?

Target 20-40% gross margin and 8-12% net margin at minimum. Best-in-class roofing operations hit 12%+ net, and according to CEO Finance Academy's work with roofing companies, those businesses are not necessarily doing more revenue - they have better pricing discipline and job-level cost tracking.

Jon Drew of Refined Exteriors is a real example. Working with Breakthrough Academy, he rebuilt his pricing and operational systems, reduced his staff, and went from just under $1 million in revenue to $2 million while doubling his profits. He did not hustle harder - he fixed how he priced and cut the overhead that was eating him alive.

For context on where roofing sits against other trades, check out contractor profit margins by trade - roofing is high-revenue but operationally complex, which is exactly why margins collapse without systems.

What overhead costs are roofers forgetting to price in?

Boss Roofing consolidated 10 disconnected tools into ServiceTitan and discovered they were carrying $500,000 in hidden overhead. That is not a bookkeeping error - that is the cost of running a business without real-time job costing visibility.

Common overhead items that roofers forget to build into job pricing include vehicle payments and fuel, insurance (general liability, workers comp, commercial auto), software subscriptions, office staff, warranty callbacks, and marketing. Profitability Partners, which has reviewed more than 200 roofing P&Ls, recommends targeting 10-15% overhead as a percentage of revenue, excluding marketing.

If you are not using field service management software to track job-level costs in real time, you are essentially guessing at your margin after the fact. By then it is too late to fix anything.

See AI pricing and job costing automations built for roofers

Get Started

How do you price different roofing material types without losing bids?

Material choice dramatically shifts your pricing floor. According to Build-Folio, installed pricing by material runs:

MaterialInstalled Price Per Square
Asphalt Shingle$300 - $700
Metal Roofing$700 - $1,200
Tile Roofing$1,000 - $1,800

Full replacement jobs can run up to $36,000 on large homes with premium materials, according to Hatch's analysis of LocaliQ data. The high ceiling is exactly why roofing justifies the $186.79 to $350 average CPL - the job economics support it, but only if you price correctly.

When you are bidding premium materials, your markup percentage stays the same but your absolute margin dollars increase. This is why well-run roofing companies upsell customers on higher-grade materials - not as a sales trick, but because better materials on a correctly-priced job produce better absolute profit per truck per day.

What do roofers who hit 12%+ net have in common?

A ServiceTitan survey of 1,018 residential and commercial roofing companies (conducted by Thrive Analytics, October 2025) found that 75% expect revenue to increase in 2026 and 74% expect higher profit - the strongest outlook in recent years. But 39% still cite rising labor and overhead costs as their primary threat.

The contractors hitting 12%+ net are not immune to those pressures. They track every job's actual vs. estimated cost and price their close rate into their margin requirements.

They also review overhead quarterly instead of annually. That quote from r/Roofing that gets shared constantly - "roofing is very lucrative, doctors, lawyers, roofers, but it's 100% about the systems" - is accurate. Without pricing discipline and job costing, you are buying yourself a stressful 80-hour week for a 2.8% net.

If you are scaling and starting to manage multiple crews, the same principles apply - see how growing a roofing business with proper systems in place changes the margin picture at higher revenue levels.

For tracking the numbers that actually predict whether your pricing is working, home service KPIs to track gives you the dashboard metrics that profitable roofers monitor weekly, not at tax time.

How to build a job costing system that protects your margin

A solid job costing system starts before the bid goes out. Assign a cost code to every labor hour, every material line, and every subcontractor invoice the moment it hits your books. Most contractors using field service management software can automate this step entirely, pulling actuals into a job-level P&L without manual entry.

Once a job closes, run a post-job review within 48 hours while details are fresh. Compare estimated labor hours to actual hours clocked. Compare material takeoffs to what was actually purchased and returned. If you are off by more than 10% on either line, that error needs to feed back into your next estimate.

Contractors who skip this step often discover the same leak on 20 consecutive jobs before they notice the pattern in their bank account. The fix is not working harder - it is reviewing the data faster. Pair this habit with the KPI tracking framework to catch margin bleed before it becomes a cash flow crisis.

How seasonality affects roofing pricing strategy

Roofing demand is heavily seasonal in most US markets, and that volatility directly impacts how you should price. During peak storm season or summer demand surges, your crew utilization is high and your cost per job drops - which means you have room to hold firm on margin instead of discounting to fill the schedule.

During slow periods, the temptation is to cut prices to keep crews busy. That is the wrong move if it pushes you below your overhead threshold. Instead, use slow periods to lock in maintenance agreements and inspection contracts that generate predictable revenue without the same material cost exposure as full replacements.

Contractors who learn how to handle slow seasons without slashing prices tend to come out of those periods with better average margins than those who chased volume at discounted rates.

Frequently Asked Questions

What is a good profit margin for a roofing job?

Target 20-40% gross margin and 8-12% net margin as a minimum. The NRCA reports the industry average is just 2.8% net, meaning most contractors are well below what is considered a healthy business. Best-in-class roofing operations clear 12%+ net through disciplined pricing and overhead control.

What is the difference between markup and margin in roofing?

Markup is calculated as a percentage of your cost. Margin is calculated as a percentage of your selling price. Roofing Contractor magazine found that most roofers confuse the two - a 10% markup on a $1,000 job produces a 9% margin, not 10%, leaving money on the table on every single job. To hit a 20% margin, divide your job cost by 0.80, not multiply by 1.20.

How much should I spend on marketing per roofing job?

LocaliQ's analysis of 3,211 home services campaigns (April 2024 to March 2025) shows roofing CPL averaging $186.79, with WebFX data citing up to $350 per lead on Google Ads. Your pricing needs to absorb real acquisition cost - figure out your actual close rate, divide your monthly ad spend by jobs closed, and build that number into every bid.

Should I use shared or exclusive roofing leads?

Exclusive leads book at 35-40% while shared leads book at 8-15% according to Biddable's 2026 roofing benchmarks. A $90 exclusive lead closing at 40% costs $225 per acquired job. A $45 shared lead at 8% costs $562 per acquired job. The cheaper lead is often the more expensive customer.

How do I price overhead into roofing jobs without overbidding?

Calculate your total monthly overhead (vehicles, insurance, software, office, marketing) and divide by your projected monthly job count. Add that number as a line item before you calculate profit. Profitability Partners recommends targeting 10-15% overhead as a share of revenue, and tracking it job-by-job so you catch margin bleed before it becomes a cash flow crisis.

Your next step

Pull your last 10 completed jobs and calculate the actual net margin on each one - materials, labor, overhead allocation, and acquisition cost included. If you are averaging below 8%, your pricing structure needs to change before you bid another job. Start with the markup-vs-margin math, build in your real CPL, and use job costing tools to track actuals against estimates so you stop finding out you lost money after the crew is already gone.