Most roofing companies find out if a job was profitable 30–60 days after they finished it — if ever. Invoices go out, payments come in, bills get paid, and somewhere in the mess of a bank account there's a profit number. But no one really knows which jobs made money and which ones didn't.
Real-time job costing fixes this. It means you know your estimated margin before the job starts, you can see how actual costs compare to budget as the job runs, and you have a completed profitability report within a few days of finishing. This guide covers how to build that system.
Why Roofing Companies Don't Do Job Costing (And Why That's Expensive)
The most common reason: “Our accountant does the books at the end of the quarter.” That's not job costing — that's quarterly accounting. There's nothing actionable in a quarterly number about a specific job that finished in January.
The second reason: “We know our margins are around 35%.” Maybe. But average margins hide a lot. You probably have some jobs at 45% carrying others at 15%. Without per-job tracking, you don't know which job types are killing you, which customers are worth pursuing, or which sales reps are generating profitable work vs. buying jobs with thin pricing.
The Four Cost Categories for Every Roofing Job
1. Materials
Every product on the job: shingles, underlayment, decking (if needed), starter strip, drip edge, flashing, ridge cap, nails, pipe boots, ice and water shield, ventilation. Your estimate should list each line item with a material cost. Your actual cost is the supplier invoice.
Track: estimated materials vs. supplier invoice total. Variance over 5% on materials warrants investigation — waste factor wrong, order quantity wrong, or material prices moved.
2. Labor
Per-square crew pay, or hourly wages plus employer burden for W2 teams. If you're using subcontractor crews, this is the sub invoice. If you're paying your own crew by the square, it's crew pay rate × squares installed.
Track: estimated labor vs. actual crew pay or sub invoice. A consistent 10–15% over-run means your estimates are calibrated wrong for certain job types.
3. Subcontractors / Specialty Work
Chimney work, gutters, skylights, or other specialty trades you sub out. Track these separately from your own labor so you know your sub cost per job.
4. Overhead Allocation
This is the one most roofing companies skip. Overhead — your truck, insurance, equipment, office expenses, software, phone bills, gas — is a real cost of every job. If you don't allocate it per job, your “job profitability” numbers are inflated and you're actually losing money faster than you realize.
A simple approach: take your monthly overhead and divide by your average monthly revenue to get an overhead percentage. If your overhead is $15,000/month and you do $100,000/month in revenue, that's 15% overhead — so every job needs to absorb 15% off the top before you see actual profit.
Building a Job Cost Sheet
For each job, you need to capture:
- Contract value (what you invoiced)
- Estimated materials (from your estimate)
- Actual materials (supplier invoices)
- Estimated labor (from your estimate)
- Actual labor (crew pay or sub invoice)
- Other direct costs (dumpster, permits, specialty subs)
- Overhead allocation (% of contract value)
Gross margin = Contract value − (materials + labor + direct costs)
Net margin = Gross margin − overhead allocation
You want to know both. Gross margin is your operational efficiency. Net margin is your actual business profitability.
What Good Margins Look Like
Healthy roofing company benchmarks (2026):
- Gross margin: 35–50% for well-run residential operations. Lower for commercial. Higher possible with strong supplement recovery on insurance jobs.
- Net margin: 15–25% after full overhead allocation for healthy businesses. Under 10% net is a warning sign.
If you don't know your current gross margin, calculating it for the next 10 jobs will be one of the highest-ROI hours you spend this month.
The Three Things Job Costing Reveals That You Can't See Otherwise
1. Which Job Types Are Profitable
Retail replacements vs. insurance jobs. Residential vs. commercial. Storm work vs. maintenance. Different job types have different true margins. Once you have per-job data, you can see which categories you should be pursuing more aggressively — and which ones you might be better off passing on.
2. Which Sales Reps Generate Profitable Work
A rep who closes 20% more volume but with margins 15% lower than the company average is actually destroying value, not creating it. Job costing per lead source lets you see this clearly.
3. Where Your Estimates Are Consistently Wrong
If your labor is consistently 12% over budget on hip roofs and on target for gables, that's calibration data. Fix the estimate, not the job.
Setting Up Real-Time Job Costing in Your CRM
A good roofing CRM lets you enter estimated costs when you create the job (pulling from your estimate), then record actual costs as the job runs (entering sub invoices, material orders, and crew pay against the job record). The system calculates variance automatically.
In Ketterly, job costing is built into the job record. You estimate the job, the platform tracks what you've actually spent against that estimate, and you have a profitability report for every job as soon as the final costs are entered.
The Minimum Viable Job Costing System (If You're Starting From Zero)
If you're not doing any job costing yet, start simple:
- On every new job, write down the contract value and your estimated labor + material cost.
- When the job is done, record the actual crew pay and material invoice total.
- Calculate: Actual gross profit = Contract value − (actual materials + actual labor).
- Compare to estimated gross profit.
Do this for 20 jobs. You'll already see patterns you didn't know existed — and you'll have the data to make better pricing and job-selection decisions going forward.
Key Takeaways
- Average margins hide individual job performance — per-job costing is the only way to know what's working
- Track four cost categories: materials, labor, direct costs, and overhead allocation
- Gross margin and net margin tell different stories — know both
- Job costing reveals which job types, reps, and estimate categories are making or losing you money
- Start simple: even a basic spreadsheet tracking estimated vs. actual on 20 jobs will change how you price
Go Deeper: Job Costing Resources
- How to Calculate Labor Cost for a Roofing Job — Formula, crew structures, and the most common estimation mistakes
- Material Waste Tracking: How Roofers Lose 12–18% Margin — Where margin leaks and how to plug it
- Roofing Crew Pay Structures — Per square vs. hourly vs. hybrid: what works and when
- How to Pay 1099 Roofing Subcontractors — Compliance, rate structures, and job costing integration
- Post-Job Profitability Analysis — Building the habit of comparing estimated vs. actual on every completed job
- Roofing Job Costing Software Comparison — Honest review of BuilderTrend, QuickBooks, AccuLynx, and dedicated tools
- Production Rate Benchmarks — Squares per crew per day by job type, pitch, and roof complexity
- Ketterly Job Costing — Real-time cost vs. revenue tracking on every active job, built into your roofing CRM