How do contractors track gross margin per job?
You need three numbers: total revenue on the job, total direct costs (labor and materials), and your overhead allocation. Subtract overhead and direct costs from revenue, divide by revenue, and you have gross margin percentage. We'll walk through how to gather those numbers and why a CRM matters.
The formula is simple. Execution is the hard part.
Gross margin per job = (Revenue - Direct Costs - Allocated Overhead) / Revenue × 100. Here's a concrete example. A plumbing job brings in $2,500 in revenue. You spent $600 on materials, $800 on labor (one tech for 10 hours at $80/hour loaded rate). That's $1,400 in direct costs. If you allocate $300 of overhead to this job (your 12% overhead rate), you're left with $800 gross margin, or 32%. The problem most contractors face isn't the math. It's collecting the actual numbers. You need to know exactly what you spent on materials, how many hours your team actually worked on each job, and how much overhead to assign. Miss any of those inputs and your margin is fiction. Many contractors estimate this by looking at their P&L at month-end and assuming their margin is roughly consistent across jobs. That works if all your jobs are similar. But a $2,000 repair call has different cost structure than a $15,000 renovation. You need per-job visibility.
Where most contractors lose track of margin
Time tracking is the biggest leak. A crew finishes a job in 8 hours, but nobody records it. You estimate 10 hours when you invoice. Your margin calculation is off by the cost of 2 hours of labor—maybe $160 to $240 depending on your tech rates. Material tracking is the second problem. You buy supplies for three jobs at once, but only assign costs to two of them in your system. The third job looks more profitable than it actually is. Overhead allocation is the third. Most contractors either ignore overhead (inflating margins) or apply a flat percentage that doesn't match reality. A $800 job and an $8,000 job don't consume the same amount of office support, truck wear, or insurance cost. A CRM helps because it ties estimates, work orders, timesheets, and material logs together in one place. When a tech logs hours in the field, those hours automatically feed into job cost tracking. When you pull a material line item from inventory, it's tagged to a specific job. You stop guessing.
How to set up margin tracking now
Start by nailing down your loaded labor rate for each role. If you pay a plumber $50/hour, add payroll taxes (12%), benefits (5%), training (2%), and you're closer to $72/hour landed cost. Use that number in your job costing, not the salary. Next, capture actual material costs as they happen. If you use a supplier, pull invoices tagged by job. If you buy from a big-box store, assign materials to jobs when the tech returns to the shop. Third, decide on an overhead allocation method. The simplest: calculate your annual overhead (rent, office staff, insurance, utilities, vehicles) and divide by your annual labor hours. Apply that hourly rate to every job's labor cost. A $500,000 per-year operation with $150,000 in overhead spending 20,000 billable hours per year has $7.50 in overhead per labor hour. Then track it. Use your CRM or accounting software to log time against jobs, materials against jobs, and calculate margin monthly. You'll see patterns within 2-3 months: which job types are actually profitable, which cost more than you price them, and where you're losing money.
Why this matters beyond the math
Margin per job tells you where to spend your effort. If your electrical service calls run 35% margin and your panel upgrades run 18%, you know to prioritize calls. If a certain customer type consistently comes in at 12% margin, you know to either change your pricing or decline those jobs. It also forces pricing discipline. Many contractors underprice because they don't know their actual costs. Once you see that a full kitchen remodel in the area runs higher overhead per job than you expected, you can adjust your bid. Finally, it shows you where to improve. If material waste is eating 3% off your margins, that's actionable. If one tech consistently uses 25% more labor hours than the estimate, you have a training or estimation problem. Without per-job margin visibility, you're making decisions blind. You might be booked solid but unprofitable, or you might be leaving money on the table because you're pricing jobs too low.
Bottom line
Track actual labor hours, material costs, and allocate overhead to each job. Review your margins monthly and adjust pricing or operations based on what you find. The difference between knowing and guessing is usually 5-10 points of margin.