← All posts
job profitabilityhome service financialsMay 11, 2026Clint Research Team

Job Profitability for Home Service Businesses: How to Know If You Are Actually Making Money

Revenue is not profit. Here is how to calculate job profitability in a home service business, which job types lose money most often, and what to track without a CFO.

8 min read

Key takeaways

  • 18% of jobs at the average home service business are unprofitable after accounting for direct labor, parts, and drive time. Most owners do not know which jobs those are.
  • Gross margin by job type is the most important financial metric in a $1M to $10M home service business and the one least likely to be available in a CRM
  • Service agreement and maintenance plan jobs appear unprofitable on a per-job basis but are profitable over a 12-month customer lifetime when renewal rate is above 70%
  • The break-even labor rate for most residential trade businesses (at 40% gross margin target) is $65 to $85 per field labor hour fully loaded
  • Tracking profitability by technician reveals that the top 20% of technicians typically produce 40% of gross profit, not just 40% of revenue
Contents
  1. 01Why most home service owners do not know their job profitability
  2. 02The 4 numbers that tell you if a job made money
  3. 03Which job types lose money most often
  4. 04How to calculate gross margin without a full accounting team
  5. 05How to track profitability without a CFO
  6. 06How Clint Calculates Job-Level Margin
  7. 07Sources
  8. 08Frequently Asked Questions

Revenue is a vanity metric for a home service business. A $2.5M plumbing company with 18% unprofitable jobs is not performing better than a $1.8M company with 95% profitable jobs. The number on the top line does not tell you whether the work is worth doing.

This guide covers how to calculate job profitability in a home service business without a CFO, which job types are most commonly unprofitable, and how to track gross margin across your CRM and accounting software.

Why most home service owners do not know their job profitability

The data required to calculate job profitability sits in three places that almost never talk to each other.

Revenue is in your CRM: the invoice amount for each job.

Parts and materials cost is in your CRM (if you track it at the line-item level) and your accounting software (via purchase orders or vendor bills).

Labor cost is in your payroll system: the hours each technician worked on each job multiplied by their loaded cost rate (wage plus burden, typically 1.2 to 1.35x the base wage for taxes, benefits, and insurance).

Gross margin per job requires all three. No major CRM produces this natively. Jobber, Housecall Pro, and Workiz store invoice amounts and basic line items, but direct labor cost requires a time-tracking join, and parts cost requires a vendor bill join. ServiceTitan is the closest, with a job costing module available on higher-tier plans.

The result: most home service businesses track revenue carefully and gross margin loosely. They know their total gross margin from the P&L (usually 35 to 55% in residential trades), but they do not know which specific job types produce that margin and which ones eat into it.

The 4 numbers that tell you if a job made money

Invoice amount. The easiest number to find. Your CRM has it.

Materials cost. Parts, equipment, and consumables used on the job. This requires either line-item cost tracking in your CRM or a match between job date and vendor bills in your accounting software. If you are not tracking this at the job level, start with the jobs where materials cost varies the most: installs, equipment replacements, large repairs.

Direct labor cost. Hours on site multiplied by loaded labor rate. If a technician earns $28/hour and your burden rate is 28%, the loaded rate is $35.84/hour. A 3-hour job costs $107.52 in direct labor. This requires time-tracking at the job level. Housecall Pro and ServiceTitan have clock-in/clock-out. Jobber's time tracking is available on Growth and higher plans.

Drive time and overhead allocation. Optional but accurate. If a technician spends 45 minutes driving to a job, that is overhead the job should carry. Many contractors exclude drive time from profitability calculations and allocate it as a fixed overhead cost instead. Either approach is defensible as long as you use it consistently.

Gross margin = (Invoice amount - Materials cost - Direct labor cost) / Invoice amount.

A $650 HVAC service call with $45 in parts and 2 hours of labor (at $35 loaded rate) has a gross margin of ($650 - $45 - $70) / $650 = 82.3%. A $650 HVAC service call with $180 in parts and 3.5 hours of labor has a gross margin of ($650 - $180 - $122.50) / $650 = 53.5%. Same invoice amount, very different profitability.

Which job types lose money most often

The patterns are consistent across trades.

High-parts-cost installs at low margin. Water heater replacements, HVAC equipment swaps, and electrical panel upgrades have high parts cost relative to the job total. If your markup on equipment is under 25%, the gross margin on the full job can fall below 30% after labor. Equipment markup is the most common profitability leak in installation-heavy businesses.

Callbacks and warranty work. A callback costs the full labor for the return visit with zero revenue. One callback on a $400 job that required a 2-hour return visit costs roughly $70 in labor. That drops the effective gross margin from 75% to about 57% on the combined job pair. Businesses with callback rates above 8% have a meaningful profitability drain most owners attribute to other causes.

Heavily discounted agreements. Maintenance plan and service agreement pricing is frequently set to win the customer relationship, not to make money on the individual visit. At 35% gross margin target, a maintenance plan that requires 2 visits at 1.5 hours each needs to generate at least $105 in combined invoice value to cover labor alone, before parts or overhead. Many plans are priced below this. They are profitable over a 12-month customer lifetime if the renewal rate is above 70% and if the plan customers book additional repair work at full margin.

Commercial jobs that run long. Commercial jobs have lower price sensitivity but higher coordination overhead. If a commercial job is quoted at 4 hours and runs 7 hours because of access issues or scope changes, the job profitability collapses. Commercial jobs need change-order discipline to stay profitable.

The plumbing shop with 18% unprofitable jobs and pest control owner who found 3 of 12 services losing money are real examples of what the analysis reveals.

How to calculate gross margin without a full accounting team

Start simple. Pick one job type that you do frequently and for which the parts cost and labor hours are consistent. Calculate gross margin for 20 to 30 recent jobs of that type. You will find a distribution, not a single number. Some jobs will be at 60%+ gross margin. Some will be at 30% or below.

Look for the pattern that explains the low-margin jobs. Is it parts cost variance (techs using more parts than budgeted)? Is it time variance (some techs taking twice as long)? Is it pricing variance (discounting to close)? The answer tells you where to focus.

Once you have a baseline for one job type, expand to your top 3 to 5 job types by revenue. You will quickly identify which services are pulling the gross margin up and which are dragging it down. The job profitability tracking guide by trade has the calculation method adapted for HVAC, plumbing, roofing, and landscaping.

How to track profitability without a CFO

Monthly profitability review: pull your P&L from QuickBooks or your accounting software. Get total gross margin. Then, in your CRM, pull revenue by job type. Estimate the materials cost for each category from your vendor bills. Estimate labor cost from your payroll records. This will not be exact. It will be close enough to tell you which service lines are driving your gross margin and which are not.

Quarterly deep dive: pick one job type per quarter and do the per-job analysis. 20 to 30 jobs, calculate the margin individually, find the distribution, identify the cause of variance. This takes 2 to 3 hours and produces more actionable insight than any monthly report.

For a connected view without manual joins, Clint reads your CRM and accounting data and answers profitability questions directly. "What was my gross margin on water heater installs last quarter?" "Which technician had the highest margin jobs in March?" See the questions owners can ask their business data for the full list.

For how the highest-performing home service operators manage margins, the pattern is consistent: they review gross margin by service line monthly, not annually.

How Clint Calculates Job-Level Margin

Job-level profitability requires joining data from two systems that almost never live in the same place: revenue from the CRM and actual costs from accounting. The CRM shows the invoice total. QuickBooks shows parts cost. Labor cost requires a third calculation. No CRM produces all three in one native report.

Clint connects your CRM and accounting data. Ask "what is my gross margin on diagnostic calls vs. equipment replacements this month?" and Clint joins the sources and returns the margin by job type without an export.

Sources

Frequently Asked Questions

5 questions home service owners actually ask about this.

  • 01What is a good gross margin for a home service business?

    It varies by trade and service mix. Residential HVAC service runs 55 to 70% gross margin. Residential plumbing service runs 60 to 75%. Installation-heavy work (equipment replacements) runs 35 to 55% depending on parts markup. Roofing is typically 25 to 40% because materials are a larger portion of the job. Landscaping recurring maintenance runs 45 to 60%. If your gross margin is below 30% in a service-heavy business, pricing or labor efficiency is the problem.

  • 02How do I calculate gross margin per job in Jobber?

    Jobber does not calculate gross margin per job natively. You need three pieces of data: invoice amount (in Jobber), parts cost (in Jobber if you track line items with cost prices), and labor cost (requires an export of job time and your loaded labor rate). Export jobs by type, match to invoice amounts and time records, apply your loaded labor rate, and calculate margin in a spreadsheet. Or connect Jobber to Clint and ask the question directly.

  • 03What is a loaded labor rate?

    The loaded labor rate is a technician's total cost per hour to the business, including base wage, payroll taxes (7.65% FICA plus state), workers' compensation insurance (typically 8 to 15% in trade businesses), health insurance contribution, and any other benefits. For a technician earning $28/hour, total loaded cost typically runs $36 to $42 per hour. Using the base wage instead of the loaded rate understates your labor cost by 25 to 35%.

  • 04Should service agreements be priced to make money on every visit?

    Not necessarily. Service agreements are often priced as a customer relationship investment, with the full-lifecycle profitability coming from loyalty, renewals, and attached repair work at full margin. The critical numbers to track are renewal rate (should be above 70% to justify below-cost plan pricing), plan customer repair attachment rate (what percentage of plan customers book additional repair work), and plan customer lifetime value vs. non-plan customer lifetime value. If your plan customers are not generating more lifetime value than non-plan customers, the plan pricing is wrong.

  • 05How do I find which jobs lost money last month?

    Filter your CRM to completed jobs last month. Export to a spreadsheet with invoice amount, assigned tech, and job type. Pull your payroll records for tech hours by job. Pull your vendor bills or parts logs for materials cost. Calculate margin per job. Any job under your target gross margin (typically 35 to 45% minimum for residential trade work) is a candidate for review. Clint can answer "which jobs had a gross margin below 40% last month" directly when connected to your CRM and accounting software.

See Clint in action

Clint is the pre-built AI for home service shops. Connect your CRM, email, and phone system in minutes and the agents run on your real data.