Job profitability: definition, formula, and dashboard example
Job profitability measures how much money a job actually keeps after you pay for the labor, materials, and direct costs to complete it. Here is how to calculate it, what to watch for, and how to track it live across every technician and trade.
Formula
Job profitability = (job revenue – direct job costs) ÷ job revenue × 100
Direct job costs include labor (hours worked × burdened rate), materials, subcontractors, and any direct permit or equipment costs tied to that specific job. Overhead allocation is handled separately. The result is the gross margin percentage for a single job.
Some operators track job profitability in dollars (job gross profit) rather than as a percentage. Both are useful. The percentage lets you compare jobs of different sizes; the dollar figure tells you what lands in the bank.
What is job profitability?
Job profitability is the gross margin earned on a single completed job, after subtracting the direct costs (labor, materials, subs) required to deliver it. It is the most granular profitability signal a home-service company has, because it shows whether individual jobs, job types, technicians, or service lines are generating healthy margin or quietly eroding it.
Most contractors track revenue. Fewer track job-level margin. That gap is where money disappears. An HVAC company can run its highest-volume month ever and still have flat or negative cash flow at the end of it, because the jobs being dispatched most often are the ones with the thinnest margins, not the ones with the best returns.
How the math works
To calculate it, subtract a job's direct costs (the technician's burdened labor for time on site, parts and materials, and any permit or disposal fee) from what the job invoiced, divide by the invoice, and multiply by 100. The percentage is only half the story, because two jobs can land at a similar margin while contributing very different dollars.
Reading job profitability by job type is what tells you which work to chase. A quick, low-cost call can post a healthy margin percentage yet contribute few dollars, while a larger job at a slightly lower percentage contributes far more, so the volume of the right job type matters as much as the rate. Job-level revenue comes from the CRM (Housecall Pro's Profit-by-date report or ServiceTitan's Jobs report); the direct costs come from the job and the payroll data you connect, so job profitability is a derived view rather than a single CRM field.
What counts as a direct cost?
Direct job costs are expenses that exist because of that specific job: field labor (including burden such as payroll taxes, workers comp, and benefits), materials and parts used on the job, subcontractors, equipment rentals, and job-specific permits or fees. Overhead (rent, admin salaries, software, truck payments) is not a direct cost here; it belongs at the gross margin and NOI level. Mixing overhead into direct job costs is the most common distortion (see the callout below).
Who owns this metric and how often to review it
The finance or controller role owns the monthly roll-up, but operations and service managers should be looking at job profitability weekly by technician and job type. When connected to a CRM like ServiceTitan or Housecall Pro alongside QuickBooks, the cost-of-job data is already captured digitally, which makes it feasible to surface job-level margin in near real time rather than waiting for the books to close. Pair it with revenue per technician to see whether a high-revenue tech is also running high-margin jobs or just a high volume of thin ones.
Job profitability by job type: same technician, same week
| Job type | Invoice | Direct costs | Gross profit | Margin % | Dispatch priority |
|---|---|---|---|---|---|
| HVAC system replacement (install) | $6,800 | $3,200 | $3,600 | 53% | High value; protect capacity |
| HVAC service call (diagnostic + repair) | $420 | $155 | $265 | 63% | Good margin per hour; watch volume |
| Plumbing drain cleaning | $250 | $118 | $132 | 53% | Low gross-profit dollars; upsell opportunity |
| Electrical panel upgrade | $3,200 | $1,900 | $1,300 | 41% | Margin below target; review parts cost |
| Garage door spring replacement | $340 | $90 | $250 | 74% | High margin per hour; grow this mix |
What good and poor job profitability signals look like
Margin targets vary by trade, job type, market, and labor model. Use these as directional reads and set your own baseline from the last 90 days of completed jobs.
- Job margin improving month over month across all job typesPricing discipline and parts costs are under controlGood
- Current
- Target
- High-margin job types growing as a share of total jobs runMix shift toward better work; dispatch strategy is workingGood
- Current
- Target
- Job margin varies widely by technician on the same job typeParts usage or time-on-site discipline differs; coach to the efficient techsWatch
- Current
- Target
- Revenue is up but average job margin is flat or fallingVolume may be masking a mix shift toward lower-margin workWatch
- Current
- Target
- Specific job types consistently below target marginRepricing, parts sourcing, or scope control needed on those job typesPoor
- Current
- Target
- Month-end margin different from in-month job-level dataCost coding or timing issues in QuickBooks; reconcile regularlyPoor
- Current
- Target
| Metric | Current | Target | Status |
|---|---|---|---|
| Job margin improving month over month across all job typesPricing discipline and parts costs are under control | Good | ||
| High-margin job types growing as a share of total jobs runMix shift toward better work; dispatch strategy is working | Good | ||
| Job margin varies widely by technician on the same job typeParts usage or time-on-site discipline differs; coach to the efficient techs | Watch | ||
| Revenue is up but average job margin is flat or fallingVolume may be masking a mix shift toward lower-margin work | Watch | ||
| Specific job types consistently below target marginRepricing, parts sourcing, or scope control needed on those job types | Poor | ||
| Month-end margin different from in-month job-level dataCost coding or timing issues in QuickBooks; reconcile regularly | Poor |
Warning
Common mistake: overhead buried in direct costs
When shop overhead (rent, admin salaries, software subscriptions, vehicle payments) gets allocated into the job cost line, every job looks less profitable than it is, and the comparison between jobs becomes meaningless. Keep overhead at the company level and use gross margin percentage to judge the job. Use NOI or net margin to judge the company after overhead. Mixing them produces a number that is wrong at both levels and cannot be acted on.
Job profitability on a live datacube financial dashboard
How job profitability appears on a datacube Financial board, pulling from a connected CRM and QuickBooks so managers can see margin by job, tech, and job type without waiting for month-end close.
Figures are illustrative. Your datacube board reflects your own connected CRM (such as ServiceTitan, Workiz, or Housecall Pro) and QuickBooks data.
Info
Owner takeaway: job profitability is a coaching and dispatch lever
Most owners treat job profitability as a finance report. The operators who grow fastest treat it as an operational signal. Which job types should you push more of? Which technicians are using parts efficiently? Which calls are worth the drive time? Answering those questions requires job-level margin data in front of dispatch and service managers, not locked in a spreadsheet that lands two weeks after month-end.
Related KPIs to read alongside job profitability
| KPI | Why it pairs with job profitability |
|---|---|
| Gross margin | Company-level view of revenue minus COGS; job profitability rolls into this number |
| Revenue per technician | High revenue per tech is only good if the jobs being run are also high-margin |
| Average ticket | Higher ticket does not always mean higher margin; job profitability surfaces the difference |
| Cost per booked job | Ties marketing acquisition cost to the eventual job margin; needed for true ROI |
| Callback rate | Callbacks eat margin: a free return visit adds direct labor cost with no additional revenue |
Key takeaways
- Job profitability shows you which jobs, techs, and job types are actually keeping money, not just moving it through the P&L.
- Keep direct costs clean: labor, materials, subs, and job-specific fees only. Overhead belongs at the gross margin level.
- Track it by job type and technician weekly, not just as a monthly company total. The spread between your best and worst jobs tells you exactly where to focus.
- Job-level margin data from your CRM and QuickBooks, surfaced in real time, turns profitability from a lagging report into an active dispatch and coaching tool.
Job profitability FAQs
See job profitability by tech, trade, and job type in a live dashboard
Connect your CRM and QuickBooks to datacube and watch job-level margin update in real time, broken out by technician and job type so you can coach, dispatch, and price with confidence before the month closes.
Keep exploring
Related
Go deeper
