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.


By Liam Walsh • October 26, 2026
How to run the ROI numbers on roofing software. Add up the hours saved, the rework you stop paying for, and the jobs you win, then weigh it against the cost.
By Liam Walsh • October 23, 2026
How to run a software pilot in your roofing company before you commit. Pick one crew and real jobs, set what to measure, and see if a new tool actually fits.
By Liam Walsh • October 19, 2026
A roofing mobile app puts the whole business in your pocket. Run jobs, photos, quotes, and invoices from your phone so the office and the roof stay in sync.
By Liam Walsh • October 16, 2026
Keep your roofing office and field data in sync. One source of truth across your CRM, calendar, and field tools so nobody rekeys or works off stale information.
By Liam Walsh • October 12, 2026
A roof photo workflow built for insurance claims. How to capture, organize, and time-stamp storm damage photos so an adjuster approves them the first time.
By Liam Walsh • October 9, 2026
Your roofing production backlog is the work you have sold but not yet built. How to size a healthy backlog, keep jobs from aging, and protect the cash in it.
By Liam Walsh • October 5, 2026
What to put in a roof inspection report, a ready-to-use template you can copy, and how to turn your findings and photos into a report that wins you the job.
roofing capacity planning
By Liam Walsh • October 2, 2026
Capacity planning for roofing crews is knowing how much work you can actually take. How to size your real capacity, set a buffer, and match crews to demand.
roofing dispatch
By Liam Walsh • September 28, 2026
Roofing dispatch is getting the right crew to the right job on the right day. How to run day-of dispatch, cut idle crew hours, and keep every job on track.
sales to production handoff
By Liam Walsh • September 25, 2026
The sales-to-production handoff is where roofing jobs get dropped after the sale. How to hand off a signed job complete, set a handoff SLA, and stop the leaks.