July 17, 2026

Job Costing for Roofers: How to Know If You're Actually Making Money

Author

Liam Walsh

9 minute read

Share

Happy roofer holding tablet displaying financial dashboard with total sales, labor costs, earned revenue, monthly job revenue chart, and $4,120 net profit.

You finished the job. The customer paid. But did you actually make money?

 

In 2026, with material costs running higher than they've been in years and labor tight across most markets, that question has become harder to answer — and more important to get right. A roofing business that was hitting 32% gross margins on residential replacements two years ago may be running at 24% today if it hasn't adjusted its estimates and overhead allocations to reflect what things actually cost now. The problem is you can't fix what you can't see. Most roofers know their bank balance. Very few know which jobs made money and which quietly didn't.

 

Job costing is how you find out. It's the practice of tracking every cost associated with each individual job — labor, materials, subcontractors, overhead — so you can compare what a job actually cost against what you estimated it would cost. Over time, that comparison reveals where your estimates are drifting, which job types are genuinely profitable, and where your operation is leaking margin. RoofPilot connects job costing directly to your estimates and roofing invoicing, so the data flows automatically rather than requiring manual entry at the end of every job.

 

This guide walks through the full job costing process: what to track, how to calculate true profitability, and how to use what you learn to run a more profitable operation.

 

What Job Costing Actually Tells You

 The surface view of a job looks simple: you sold a $15,000 roof, you paid your crew and bought materials, and there's money left over. But without job costing, you don't know whether that job performed the way you estimated it would. You don't know if labor ran four hours over. You don't know if material waste was higher than your estimate assumed. You don't know if that job type — steep-pitch, insurance, commercial — is consistently more or less profitable than your other work.

 

Job costing answers those questions at two levels. At the individual job level, it tells you the exact profit margin on each project and shows you where the estimate was accurate or off. At the pattern level, it reveals which job types, crew configurations, and customer sources are generating the most profit — and which aren't worth pursuing at your current pricing. Without this data, pricing decisions and estimating adjustments are guesswork. With it, they're grounded in what your business actually experiences.

The Four Cost Categories Every Roofing Job Has

Roofer smiling while reviewing holographic profit margin data on tablet showing labor costs, material costs, subcontractor costs, overhead, and 17.85% net profit.

Every roofing job has four types of costs that need to be tracked separately to get an accurate picture of profitability.

 

Direct labor is the cost of crew time spent on the specific job. This means tracking actual hours worked by each crew member, including travel to and from the site, and any time spent on callbacks or warranty work after completion. The critical mistake roofers make here is using base wage rates instead of burdened rates. The true cost of an employee is significantly higher than what you pay them per hour once you account for payroll taxes, workers' compensation insurance, health benefits, and other employment costs.

 

According to the Bureau of Labor Statistics, total employer costs for construction workers are substantially higher than base wages alone. For a roofer earning $25 per hour, a more realistic cost picture looks like this:

Component Amount
Base wage $25.00
Payroll taxes (7.65%) $1.91
Workers' comp (15%) $3.75
Health insurance $2.50
Other benefits $1.00
Burdened rate $34.16

If you're running job cost calculations at $25 per hour, you're underestimating your labor cost by more than a third. Use the burdened rate consistently across all job costing, and recalculate it at least once a year as benefit costs change.

 

Direct materials are the materials used on the specific job — shingles, underlayment, ice and water shield, flashing, fasteners, vents, and disposal. The key discipline here is tracking what was actually used, not just what was ordered. The difference between the two is waste, and waste is one of the most common sources of margin loss that job costing reveals. Tracking returns and credits back to the job is equally important — if you ordered excess and returned it, that cost should be corrected.

 

Subcontractor costs cover any third-party work: tear-off crews, specialty trades for gutters or skylights, dumpster services, and equipment rental. These should be coded to the specific job when the invoice arrives and compared against whatever you quoted when pricing the work.

 

Overhead allocation is the most frequently skipped cost category, and skipping it produces a dangerously optimistic picture of profitability. Overhead covers all the business expenses that don't attach to specific jobs but make every job possible — office rent, administrative salaries, general liability insurance, vehicles, tools, software, marketing, accounting, and licenses. These costs exist whether you do 10 jobs this month or 30, and they need to be distributed across your jobs to understand true profitability.

 

The most common allocation method is percentage of revenue. If your annual overhead runs $300,000 against $2,000,000 in revenue, that's 15% overhead. A $15,000 job carries $2,250 in overhead costs before you count a single hour of labor or a single shingle. A job with a 20% direct cost margin that looks profitable is often breakeven or worse once overhead is added back. The specific allocation method matters less than applying it consistently to every job.

 

What this means for your business: If you're calculating job profitability without allocating overhead, your margin numbers are overstated. Every roofing business has a real overhead rate — know yours and apply it to every job.

 

Calculating True Job Profitability

 With all four cost categories tracked, the profitability calculation is straightforward.

 

Job Profitability = Revenue − (Direct Labor + Direct Materials + Subcontractors + Allocated Overhead)

 

Here's what that looks like on a real job:

Category Estimated Actual
Revenue $15,000.00 $15,000
Direct labor (crew hours × burdened rate) $1,632.00 $1,768
Roofing materials $5,200.00 $5,350
Accessories and waste $550.00 $625
Subcontractors (dumpster) $450.00 $450
Overhead allocation (15%) $2,250.00 $2,250
Total costs $10,082 $10,443
Gross profit $4,918 $4,557
Gross margin 32.80% 30.40%

This job was still profitable — but $361 less than planned. Labor ran four hours over, and materials came in slightly above estimate. Both variances are small individually, but this is one job. If these patterns repeat across 80 jobs a year, the cumulative effect is significant.

 

For roofing businesses, a gross margin of 30–40% is a reasonable target range. Net margins after all overhead and owner compensation typically run 8–15% for well-run operations. If your job margins are consistently sitting below 30%, the issue is usually in one of three places: estimates that price too low, labor that runs over, or overhead that's higher than your pricing assumes.

Using the Data to Improve Your Business

Roofer analyzing large business dashboard showing estimated vs actual costs, labor efficiency, material waste tracking, profitability by job type, and margin trends.

Tracking job costs without reviewing the data accomplishes nothing. The review is where the value is.

 

After every job, compare estimated costs to actual costs in each category. Was labor within estimate? If not, why — did the job take longer than planned, or was the crew configuration wrong? Were materials within estimate? If not, was it measurement error, waste, or a pricing change from the supplier? Understanding the cause of variances is what turns job costing from a reporting exercise into an improvement tool.

 

Across multiple jobs, patterns emerge that single-job reviews can't show. Certain job types may be consistently over-estimating materials while others consistently run over on labor. Certain crews may be measurably more efficient than others on the same type of work. Insurance jobs may perform differently from retail replacement work in ways your estimates don't currently account for. These patterns are invisible until you have enough data points to see them — typically 15 to 20 jobs with complete cost tracking.

 

When your actual costs consistently diverge from estimates in the same direction, your estimating model needs adjustment. If steep-pitch work always runs 20% more labor than flat or low-slope, your steep-pitch labor factor needs to go up. If material waste on complex hip-and-valley roofs is consistently higher than your standard waste percentage, that needs to be in your estimate. For a detailed walkthrough of how to build accurate estimates from the ground up, see how to estimate a roofing job.

 

When certain job types are consistently unprofitable even after accounting for pricing adjustments, the decision is to raise prices for that work or stop taking it. When certain job types perform well above average, the decision is to pursue more of them. Job costing makes both decisions data-driven rather than gut-driven.

 

What this means for your business: One month of job costing data won't tell you much. Six months will show you patterns you didn't know existed. The roofers who run the tightest operations have usually been doing this long enough to have accurate, business-specific cost factors baked into every estimate — not industry averages, but their own numbers from their own jobs.

 

Common Mistakes That Undermine Job Costing

The most common failure point is labor tracking. If crews don't record actual hours by job, or if hours get coded to the wrong job or to a generic overhead bucket, your labor actuals are meaningless. The fix is making time entry as easy as possible — a mobile app that lets crew members clock in and out by job number takes less than 30 seconds and produces accurate data. The harder it is, the less accurate it will be.

 

The second most common failure is ignoring overhead allocation. Roofers who track direct costs only — labor and materials — see a higher apparent margin on every job than they're actually earning. This produces overconfidence in pricing and makes it harder to identify when margins are actually being squeezed.

 

Using base wage rates instead of burdened rates is the third common issue, and it compounds over time. If you have 10 crew members and you're underestimating each one's true cost by 30%, your labor line on every job is materially wrong. Recalculate your burdened rates at least annually, especially when insurance costs or benefit costs change.

 

Finally, job costing data that isn't reviewed on a schedule is essentially wasted effort. A monthly review of job profitability — even a 30-minute pass through the numbers — is enough to catch problems before they compound across a full quarter.

Making Job Costing Work in Practice

Roofer reviewing job costing data on tablet showing estimated vs actual costs with +$800 variance and final 23% profit margin after real-world results.

The good news is you don't need complex accounting software to start. For your first ten jobs, the process can be straightforward: record actual labor hours, record actual material costs, and compare each to your estimate at completion. That alone, done consistently, will surface the most important patterns in your operation.

 

From there, add detail progressively — breaking labor into production and supervision, tracking material waste separately, adding subcontractor costs, and beginning overhead allocation. Once you have the process running consistently, software that connects roofing measurement software to your job cost tracking eliminates the manual data transfer between estimating and actuals. The estimate becomes the budget, actuals are tracked against it, and variances are visible without anyone having to calculate them manually.

 

The contractors who know their numbers — their actual labor productivity, their real material costs, their true overhead rate — consistently outperform those who estimate from memory and track from intuition. Job costing is how you build that knowledge base, job by job, until your estimates reflect exactly how your business operates.

 

Know exactly what each job costs — and what you actually made.

 

RoofPilot tracks labor, materials, and job costs and connects them directly to your estimates so you can compare actuals to budget on every project.

 

Start for Free | See Measurement Features

This is paragraph text. Click it or hit the Manage Text button to change the font, color, size, format, and more. To set up site-wide paragraph and title styles, go to Site Theme.

This is paragraph text. Click it or hit the Manage Text button to change the font, color, size, format, and more. To set up site-wide paragraph and title styles, go to Site Theme.


Roofer holding tablet showing job completed workflow with final payment still missing
By Liam Walsh July 13, 2026
How to get paid faster on every roofing job — deposit structures, payment terms, and invoicing tools that cut days-to-payment and protect cash flow.
Homeowner signing roofing contract on phone with verified digital signature
By Liam Walsh July 10, 2026
How to implement digital signatures for roofing contracts — legal validity, setup options, best practices, and how e-signatures close deals faster.
Roofer reviewing detailed roofing contract agreement with couple at kitchen table
By Liam Walsh July 6, 2026
What every roofing contract needs to protect your business — scope, payment terms, warranty language, change orders, and the clauses that prevent disputes.
Roofer presenting professional multi-option roofing proposal example on large tablet to homeowners
By Liam Walsh July 3, 2026
Roofing proposal examples for residential, storm damage, multi-option, and commercial jobs — with templates and the structure that turns estimates into signed contracts.
Roofer presenting professional digital roofing proposal on tablet to smiling homeowners
By Liam Walsh June 29, 2026
How roofing proposal software helps you quote faster, present professionally, and close more jobs — what to look for and how to get the most out of it.
Roofer doing door to door roofing sales showing tablet proposal to smiling homeowner at front door
By Liam Walsh June 26, 2026
How to run door-to-door roofing sales that actually work — territory strategy, opening scripts, objection handling, and the CRM setup that ensures no lead gets dropped.
Roofer in truck using roofing lead follow-up system on tablet
By Liam Walsh June 22, 2026
The roofing lead follow-up sequence that converts more estimates — timing, scripts, and templates for phone, text, email, and the CRM setup that makes it automatic.
Roofer reviewing roofing marketing dashboard with closed jobs, revenue, and cost per lead
By Liam Walsh June 19, 2026
How to track roofing lead sources and calculate true marketing ROI — from setup to monthly review — invest in what actually closes jobs, not just generates leads.
Roofer closing more roofing jobs by presenting clear proposal on tablet to smiling homeowner
By Liam Walsh June 15, 2026
How to close more roofing jobs without adding headcount — speed, professional proposals, a repeatable sales process, and the follow-up system that converts.
Roofer receiving multiple roofing leads from Google search, Facebook ads, incoming calls, etc.
By Liam Walsh June 12, 2026
How to generate more roofing leads — proven strategies from Google Business Profile to storm marketing, referrals, and the follow-up system that closes more jobs.