Gross margin per job
Gross margin per job is the profit on a single job after its direct cost — the labor, parts, and subcontractor cost attributed to that job — expressed in dollars or as a percentage of job revenue.
The inputs.
- Job revenueWhat the job billed, net of any discounts or adjustments.
- Job costLabor, parts, and subcontractor cost attributed to the job — not a blended shop rate.
- Read withMaintenance contract margin for agreement work, where margin rolls up over the full visit cadence.
What to know.
How to calculate gross margin per job
Gross margin per job equals job revenue minus job cost, divided by job revenue for the percentage view. Job cost is the actual labor, parts, and subcontractor cost attributed to that specific job — not a blended shop rate applied to the whole book. That attribution is the hard part: a margin figure built on estimates or averages can't tell you which jobs, customers, or equipment classes actually make money.
Why gross margin per job matters for commercial contractors
It's the unit-level truth behind the P&L — average margin across the book hides which work is profitable and which is a loss leader. Comparing margin per job shows where to reprice, where to push back on scope, and where to walk away, and it feeds agreement decisions, since a string of thin jobs under an agreement becomes a thin contract. At 10 to 200 techs, small per-job margins compound into the difference between a healthy and an underwater year.
What drives gross margin per job down
The drivers are labor running past the estimate without it being captured, parts-cost surprises, callbacks that double the labor on a single invoice, and cost recorded against the wrong job. Almost all of it is a data problem rather than a pricing problem — if cost isn't attributed at the job level as the work happens, the margin looks fine on paper and the leak is invisible.
How Thermal tracks gross margin per job automatically
Thermal captures labor and parts as part of the work order, and job costing attributes that cost to the job and to the agreement that generated it, so margin per job and per agreement roll up from the same records — no separate cost-tracking spreadsheet. For agreement-covered work, per-visit margin feeds the maintenance contract margin over the term. QuickBooks Online sync is in early access; the Sage Intacct and Business Central adapters are on the roadmap.
Questions attached to this term.
How is gross margin different from markup?
Markup is the pricing multiplier added to cost. Gross margin is the profit as a share of revenue. They describe the same job differently — a 50 percent markup produces a 33 percent gross margin — so the two get confused easily, and margin is the number that matters for profitability.
What costs go into job cost?
Direct cost: labor, parts, and subcontractor cost attributed to the job. Overhead like office and vehicle costs is typically excluded from gross margin and handled separately.
Why do some jobs look profitable but actually lose money?
Usually because cost was captured against the wrong job, or because time-and-materials line items were absorbed into the agreement rather than billed. The margin is only as good as the cost attribution.
How does gross margin per job relate to maintenance contract margin?
For agreement-covered work, each visit's margin rolls up into the contract margin over its term — a contract is only as healthy as the per-job margins underneath it.
These numbers, on your own book.
If you want to see them calculated from real work orders and agreements rather than a spreadsheet, that's a demo.