Job Costing Mastery: Why Most Contractors Don’t Know If They’re Actually Making Money

pricing formula instruction

Table of Contents

Job costing is the process of tracking every dollar of revenue and expense associated with a specific job so you know exactly how much profit that job actually generated. Most home service contractors either don’t do it at all, or do it incorrectly in ways that give them a false sense of their margins. The result is a business that looks profitable on the surface and is quietly bleeding money on the jobs nobody’s looking at closely enough.

Revenue is vanity. Profit is sanity. And most home service business owners are running their companies based on revenue numbers that feel good and margin numbers they’ve never actually calculated.

I want to tell you about a pattern I see constantly. A contractor is doing $2.5 million in annual revenue. They’re busy. The trucks are rolling. The phone is ringing. At the end of the year, they sit down with their accountant and find out they made $180,000 in profit. On $2.5 million in revenue, that’s a 7.2% net margin.

Is that good? Is that bad? They genuinely don’t know. Neither does their accountant, who isn’t in the home service industry and has no benchmark to compare it against.

Here’s what they definitely don’t know: which jobs made that money and which jobs ate it. They don’t know if their service calls are profitable or just busy. They don’t know if their installation work is carrying the business or dragging it down. They don’t know which technicians are producing margin and which ones are producing revenue that evaporates by the time overhead is accounted for.

They just know they did $2.5 million and ended up with $180,000. And they’re going to go do it again next year the same way and hope the number is a little bigger.

That’s not running a business. That’s running a very complicated lottery.

Job costing is how you stop guessing. It’s how you find out—at the job level, the technician level, the service type level—where your business is actually making money and where it’s not. And in my experience, what contractors find when they start doing real job costing almost always surprises them. Sometimes pleasantly. Usually uncomfortably. Always usefully.

In this post, I’m going to walk you through what job costing actually is, how to calculate your true labor burden (it’s not what you think), how to allocate overhead correctly, and the three reports you should be looking at every single week. By the end, you’ll have everything you need to start seeing your business the way the most profitable contractors in the industry see theirs.

The Profitable-Looking Business That’s Actually Bleeding Out

Here’s a scenario that plays out in home service businesses every single day.

A contractor runs a $3M plumbing operation. Good reputation, solid crew, steady work. They look at their bank account and it seems okay—not flush, but functional. They look at their monthly revenue and it’s tracking where they want it. They feel like things are going well.

What they’re not looking at:

Their drain cleaning calls are being dispatched at a flat rate that made sense three years ago and hasn’t been updated since labor costs went up 22%. Every drain call is now generating negative margin after true labor burden and truck costs are applied—but because the invoices are getting paid and the money hits the account, nobody’s flagged it.

Their water heater installations look profitable on the invoice. $1,400 for parts and labor, $600 material cost, looks like $800 gross profit. Except nobody accounted for the two hours of drive time, the helper who had to assist on the install, the warranty callback they did six weeks later for free, or the proportional overhead cost of that job. The real margin on that installation is closer to $180. On a $1,400 job.

Their best technician—the one who handles the complex jobs, the ones nobody else can diagnose—is running eight jobs a day. His revenue numbers look incredible. But he’s skipping the upsell conversation every time because he’s focused on throughput, not ticket value. His average ticket is $340. His colleague, who runs six jobs a day and takes the time to present options, averages $620. Nobody knows this because nobody’s looking at revenue-per-job by technician.

All three of these problems are invisible without job costing. With job costing, they’re obvious—and fixable.

What Job Costing Actually Is (And Isn’t)

Job costing is the practice of assigning every cost associated with a job to that specific job, then comparing the total cost to the revenue that job generated to determine actual profit.

Simple concept. Surprisingly rarely executed correctly.

Here’s what goes into a properly costed job:

Revenue: What the customer paid. This one’s easy.

Direct material costs: Parts, equipment, and supplies used specifically on that job. This is the cost most contractors track reasonably well.

Direct labor costs: Not the technician’s hourly wage. The fully loaded labor cost, which includes wages, payroll taxes, workers’ comp insurance, health benefits, paid time off, and any other compensation-related costs. We’ll break this down in detail in the next section because most contractors get this badly wrong.

Direct job expenses: Anything else that was spent specifically because of that job—permit fees, subcontractor costs, equipment rental, disposal fees, travel costs for out-of-area jobs.

Overhead allocation: A proportional share of your business’s fixed and variable overhead costs—rent, utilities, insurance, office staff, software, vehicle depreciation, marketing. This is the piece most contractors skip entirely, and it’s the piece that most often turns a “profitable” job into a money-loser when you actually account for it.

When you subtract all of these costs from the job revenue, you get the true job profit. That number—not the gross revenue, not the gross margin before overhead—is what tells you whether a job actually made you money.

What job costing is not:

Job costing is not your accounting software’s revenue report. It’s not your invoice total minus your parts cost. It’s not a feeling you have about whether a job went well. It’s a specific, systematic process of assigning every cost to every job and calculating actual profitability at the job level.

The True Cost of Labor: Why Your Hourly Rate Is Lying to You

This is the single biggest source of margin miscalculation in home service businesses. Contractors look at their technician’s wage—let’s say $28/hour—and use that as their labor cost when pricing jobs and calculating profitability. That number is wrong. Often dramatically wrong.

The true cost of a $28/hour technician is not $28/hour. It’s more like $38–$44/hour once you account for everything that wage actually costs you.

Here’s the full calculation:

Base wage: $28.00/hour

Payroll taxes (employer portion):

  • Social Security (6.2%): $1.74
  • Medicare (1.45%): $0.41
  • Federal unemployment (FUTA, ~0.6% on first $7K): ~$0.17 blended
  • State unemployment (varies, estimate 2.7%): $0.76
  • Subtotal payroll taxes: ~$3.08/hour

Workers’ compensation insurance: Varies significantly by trade and state—electrical and roofing are higher risk than flooring or HVAC service. Typical range is 5–15% of wages. At 8%: $2.24/hour

Health insurance (employer contribution): If you’re contributing $400/month per employee: $400 ÷ 173 hours/month = $2.31/hour

Paid time off: Two weeks PTO = 80 hours paid for no production. On a 2,080-hour work year, that’s about 3.8% of wage cost: $1.06/hour

Vehicle costs: If the technician drives a company vehicle, the fully loaded cost of that vehicle (payment/depreciation, insurance, fuel, maintenance) might run $1,200–$1,800/month. At $1,500/month ÷ 173 hours: $8.67/hour

Tools and equipment: Specialty tools, testing equipment, safety gear. Estimate $150–$300/month per tech: at $200 ÷ 173 hours = $1.16/hour

Training and licensing: Ongoing certifications, continuing education, trade school support. Estimate $1,500–$3,000/year per tech: at $2,000 ÷ 2,080 hours = $0.96/hour

Total true labor burden: $28.00 + $3.08 + $2.24 + $2.31 + $1.06 + $8.67 + $1.16 + $0.96 = ~$47.48/hour

That $28/hour technician costs you closer to $47–$50/hour fully loaded. And that’s before overhead allocation.

If you’ve been pricing jobs using $28/hour as your labor cost, you’ve been systematically underpricing your work and wondering why margins feel tighter than they should. Now you know why.

Calculating Your Specific Labor Burden Rate

To calculate your actual labor burden rate:

  1. Take each technician’s annual wage
  2. Add all employer-paid payroll taxes for that employee
  3. Add workers’ comp insurance cost for that employee
  4. Add health insurance employer contribution
  5. Add vehicle costs if company-provided
  6. Add proportional share of tools, training, and other direct employee costs
  7. Add the cost of paid non-productive time (PTO, holidays, sick days, training days)
  8. Divide total annual cost by actual productive hours worked

The result is your true hourly labor cost for that employee. Do this for every technician and you’ll have the foundation of accurate job costing.

Productive hours note: A technician who works 2,080 hours per year is not productive for all 2,080 hours. Drive time, job prep, training days, PTO, shop time—typically 15–25% of total hours are non-billable. Your labor burden rate should be calculated on billable hours only, which increases the effective hourly cost further.

How to Calculate Overhead Allocation the Right Way

Overhead is every business cost that isn’t directly tied to a specific job. Your office rent. Your dispatcher’s salary. Your bookkeeper. Your software subscriptions. Your marketing spend. Your owner’s salary. Your liability insurance. All of it.

Most contractors either ignore overhead in their job costing entirely or allocate it in a way that’s too simple to be accurate. Here’s how to do it right.

Step 1: Calculate Your Total Monthly Overhead

Go through your profit and loss statement and identify every expense that isn’t a direct job cost (materials, direct labor, direct job expenses). Add them all up. This is your monthly overhead.

Typical overhead categories for a home service business:

  • Office rent or mortgage
  • Administrative staff salaries (office manager, dispatcher, CSR, bookkeeper)
  • Owner salary (yes, this is an overhead cost—you need to pay yourself)
  • Marketing and advertising
  • Software and technology (CRM, dispatch software, accounting software)
  • Business insurance (general liability, commercial auto, umbrella)
  • Phone and communication
  • Professional fees (accountant, attorney)
  • Training and development
  • Vehicle overhead (for non-job-specific vehicle costs)
  • Miscellaneous office expenses

Step 2: Determine Your Overhead Allocation Method

There are a few ways to allocate overhead to jobs. The two most practical for home service businesses are:

Method 1: Percentage of Revenue Divide total monthly overhead by total monthly revenue to get an overhead percentage. Apply that percentage to every job’s revenue to determine that job’s overhead allocation.

Example: $80,000 monthly overhead ÷ $400,000 monthly revenue = 20% overhead rate. A $1,200 job carries $240 in overhead allocation.

Method 2: Per-Labor-Hour Divide total monthly overhead by total monthly billable labor hours to get an overhead cost per hour. Apply that rate to the labor hours on each job.

Example: $80,000 monthly overhead ÷ 1,600 billable hours = $50/hour overhead rate. A job with 4 labor hours carries $200 in overhead allocation.

Both methods are valid. The per-labor-hour method tends to be more accurate for service businesses where jobs vary widely in size and labor intensity. The percentage-of-revenue method is simpler to implement.

Step 3: Apply Consistently

Whatever method you choose, apply it consistently to every job. The goal is not perfect precision—it’s accurate enough direction. A job costing system that’s 90% accurate and consistently applied is infinitely more valuable than a theoretically perfect system that nobody uses.

The Job Costing Reports Every Contractor Should Review Weekly

Once you have job costing set up, the data is only as valuable as the decisions it informs. Here are the three reports that give you the most actionable insight:

Report 1: Job Profitability by Type

Break your completed jobs down by service type—service calls, maintenance visits, equipment installations, duct work, etc.—and look at average margin by type. What you’re looking for:

  • Which service types are consistently above your target margin?
  • Which are consistently below?
  • Are there service types that are generating volume but not profitability?

This report tells you where to focus your capacity, where to adjust your pricing, and which service types to grow versus which to price more aggressively or consider dropping.

Review frequency: Monthly. Look at trailing 90 days to smooth out outliers.

Report 2: Technician Profitability

This is the report most owners are afraid to look at—and the one that consistently produces the most actionable insights. For each technician, track:

  • Total revenue generated
  • Total jobs completed
  • Average revenue per job
  • Average margin per job
  • Total margin generated

What you’re almost always going to find: significant variation between technicians that isn’t explained by experience or skill level alone. A technician who presents options and takes time with customers might run fewer jobs but generate 40% more margin per job than a technician focused purely on throughput. A technician who consistently misses the upsell conversation might be your most productive person on paper and your least profitable person in reality.

This report doesn’t tell you someone is bad at their job. It tells you where coaching conversations need to happen and where your incentive structures might need to be realigned.

Review frequency: Weekly for top-line numbers (revenue per job, jobs completed). Monthly for full margin analysis.

Report 3: Estimate-to-Actual Variance

For larger jobs—installations, replacements, significant repairs—compare the estimated cost to the actual cost after job completion. Track:

  • Estimated labor hours vs. actual labor hours
  • Estimated material cost vs. actual material cost
  • Estimated job profit vs. actual job profit

Consistent variance in one direction tells you your estimating process is systematically off. If you’re consistently underestimating labor hours, your pricing model needs adjustment. If material costs are consistently running over estimate, your parts pricing or waste factor needs recalibration.

Review frequency: After every significant job. Monthly trend review.

Setting Up Job Costing in Your Business From Scratch

If you’re starting from zero, here’s the practical path forward:

Step 1: Calculate Your Labor Burden Rates

Use the framework from the labor cost section above. Do this for every field employee. This is a one-time calculation you update annually (or whenever compensation changes significantly).

Step 2: Calculate Your Overhead Rate

Pull your last three months of P&L. Identify all overhead costs. Calculate your monthly average. Divide by revenue or billable hours to get your allocation rate. Update quarterly.

Step 3: Set Up Your CRM or Job Management Software

Most modern field service software—ServiceTitan, Housecall Pro, FieldEdge, Successware—has job costing capability built in. If you’re using one of these platforms and not using the job costing features, call their support line today and ask for a walkthrough.

If you’re not using field service software, this is the moment to evaluate whether you should be. A spreadsheet-based job costing system is better than nothing, but it’s labor-intensive and error-prone. The right software makes this automatic.

Step 4: Define Your Cost Categories

Set up consistent cost categories that map to your job types. Every job should have the same set of cost fields: materials, direct labor (using your burden rate), direct expenses, and overhead allocation. Consistency is what makes the data comparable over time.

Step 5: Train Your Team on Data Entry

Job costing is only as good as the data going into it. Your technicians need to log their actual time on jobs accurately. Your parts usage needs to be captured at the job level. Your office staff needs to allocate costs to the right jobs. Build this into your workflow—not as an extra step, but as part of the standard job completion process.

Step 6: Set Your Weekly Review Routine

Block 30 minutes every week to review your job costing reports. Put it in the calendar. Treat it like any other important business meeting. The insight is only valuable if you actually look at it and act on it.

Job Costing by Trade: What to Watch For

Different trades have different margin profiles and different job costing challenges. Here’s what to pay attention to by trade:

HVAC

  • Watch for installation jobs where technician hours run long due to unexpected complications. These should be flagged for estimate review.
  • Track service call profitability separately from installation profitability—they have very different margin profiles.
  • Monitor maintenance agreement profitability carefully. The value of an agreement is partly in the margin on the visit and partly in the retention and replacement opportunity it creates. Make sure your costing captures both.
  • Seasonal variation is significant—summer and winter labor efficiency often differs from shoulder season.

Plumbing

  • Emergency calls typically carry higher margins than planned work—make sure your pricing reflects that.
  • Water heater installations are a common margin trap: the job looks profitable on materials and labor but often underperforms when overhead and callback rates are accounted for.
  • Drain work has significant variation in job duration that makes labor estimation challenging. Track actual vs. estimated hours closely.
  • Remodeling and new construction work often has different margin profiles than service work. Track them separately.

Electrical

  • Panel upgrades and service changes have high parts costs that can obscure margin problems if material markup isn’t correctly applied.
  • Code compliance work often runs longer than estimated—build a contingency into your labor estimates for these jobs.
  • Commercial work typically has lower margins than residential but higher volume. Make sure you’re not cross-subsidizing commercial with residential pricing.

Roofing

  • Material cost fluctuations make job costing particularly important. Your margin on a job quoted in January may look very different by the time materials are purchased in March.
  • Supplement revenue from insurance claims should be tracked as its own category—it has a very different margin profile from standard residential work.
  • Subcontractor costs need to be captured at the job level meticulously. This is where roofing margins most commonly erode.

How to Use Job Costing Data to Make Better Business Decisions

Data without decisions is just filing. Here’s how the best contractors translate job costing insight into action:

Pricing decisions: If a service type is consistently running below your target margin, your price is too low, your cost is too high, or both. Job costing tells you which. If material cost is the culprit, look at your purchasing and markup strategy. If labor is running long, look at your process and training. If both look right and you’re still under margin, raise the price.

Capacity decisions: When you know which jobs are most profitable per hour of labor, you can make smarter decisions about which work to prioritize during peak season when capacity is constrained. A maintenance call that takes two hours and generates $180 in margin might be worth deprioritizing in favor of an installation that takes four hours and generates $800 in margin—when you have to choose.

Technician development: Job costing by technician gives you a data-driven foundation for coaching conversations. Instead of “I feel like you’re not upselling enough,” you can say “Your average ticket is $340 and our team average is $540. Let’s talk about what’s happening in those customer conversations.” That’s a different kind of conversation—and a more productive one.

Service mix decisions: Some contractors discover through job costing that a significant portion of their revenue is coming from low-margin work that’s consuming capacity they could fill with higher-margin work. That’s a strategic insight that changes marketing priorities, hiring decisions, and sales focus.

Growth decisions: If you’re considering adding a service type, acquiring a competitor, or opening a new location, job costing data from your existing operation gives you the most realistic baseline for modeling the economics. Gut feeling is a bad investment model. Actual margin data is a much better one.

Common Job Costing Mistakes That Are Costing You Real Money

Mistake #1: Using wage rate instead of burden rate for labor. As we covered above, this is the most expensive and most common job costing error. If your labor cost calculation doesn’t include payroll taxes, workers’ comp, benefits, and vehicle costs, your margin numbers are significantly overstated.

Mistake #2: Not allocating overhead. A job that looks profitable on direct costs alone may be unprofitable when overhead is correctly allocated. If you’re not allocating overhead to jobs, you don’t know your true margin on anything.

Mistake #3: Ignoring callbacks and warranty work. Every callback and warranty call has a cost—technician time, parts, overhead—and that cost belongs to the original job that generated it. If you’re not tracking and allocating callback costs, your job profitability data is inflated.

Mistake #4: Only looking at the average. Averages hide problems. A 22% average margin across your service call business might include service calls running at 35% margin and service calls running at 8% margin. The average looks fine. The 8% calls are a problem that only shows up when you look below the average.

Mistake #5: Setting it up and never looking at it. Job costing data that nobody reviews produces exactly zero business value. Build the review routine before you build the system. If you don’t have 30 minutes a week to look at your numbers, the problem isn’t job costing—it’s time management.

Mistake #6: Not updating your rates. Labor costs change. Overhead costs change. Your burden rate and overhead allocation from two years ago may be significantly wrong today. Review and update your rates at least annually—and immediately after any significant cost change like a health insurance renewal or vehicle addition.

Real-World Example: What Job Costing Revealed for a $2M HVAC Company

Let me walk you through a realistic picture of what job costing surfaces when a contractor finally sets it up properly.

An HVAC contractor is doing $2M in revenue with 8 technicians. They’re running about 1,400 jobs per year across service calls, maintenance visits, and equipment installations. They think they’re making about 15% net margin based on their year-end accounting. That would be $300,000—a solid result.

They set up job costing with proper labor burden rates and overhead allocation. Here’s what they find:

Service calls: Average revenue $380. Average true cost (labor burden + parts + overhead) $295. Average margin: 22%. This is actually better than they thought—their service call business is healthy.

Maintenance visits: Average revenue $189. Average true cost $201. Average margin: negative 6%. Every maintenance visit is losing money. Their maintenance pricing hasn’t been updated in four years and their labor costs have increased significantly. This is a $47,000 annual problem they didn’t know they had.

Equipment installations: Average revenue $6,800. Average true cost $5,440. Average margin: 20%. Solid. But when they break this down by installation type, they find that heat pump installations are running at 14% margin (labor consistently runs long due to complexity) while straight equipment swaps are running at 26%.

By technician: Two of their eight technicians are generating below-average margin on every job type. One is running too many callbacks (which get allocated back to his jobs), and one is consistently underperforming on upsell conversations. Both are generating high revenue—so they looked fine without job costing. With it, they’re clearly candidates for coaching and development.

The immediate actions from this data:

  1. Raise maintenance visit pricing by $40 to restore profitability. Communicate the change to customers proactively.
  2. Update heat pump installation pricing to reflect actual labor hours required.
  3. Build a callback tracking system and allocate callback costs to originating technicians and jobs.
  4. Initiate coaching conversations with the two underperforming technicians based on specific data.

Estimated margin impact of these four changes: approximately $85,000 annually. On a $2M business, that’s the difference between a 15% net margin and a 19.25% net margin.

That’s what job costing actually does. It turns gut feelings into data and data into decisions.

Frequently Asked Questions

What’s a good profit margin for a home service contractor? Target gross margins (before overhead) of 50–65% for service work and 35–50% for installation/replacement work. Net margins (after full overhead allocation) of 10–20% for a healthy, growing home service business. If you’re consistently below 10% net, your pricing, your costs, or both need attention.

Do I need special software for job costing? Not necessarily—a well-designed spreadsheet can work for smaller operations. But field service management software with built-in job costing (ServiceTitan, Housecall Pro, FieldEdge, Successware) makes the process dramatically faster and more accurate. If you’re over $1M in revenue, the investment in the right software is almost always justified by the margin insight it produces.

How do I handle jobs that take much longer than expected? Track the variance and figure out why. Was it an estimating error? An unusual complication? A training issue? If it’s a consistent pattern with certain job types or certain technicians, that’s actionable data. If it’s a true one-off, document it and move on—but still allocate the actual cost to the job so your historical data is accurate.

Should I share job costing data with my technicians? Yes—selectively and thoughtfully. Technicians who can see their own performance data in context (average ticket, callbacks, margin per job) tend to make better decisions in the field. Share individual data privately, not in a way that creates unhealthy competition. Aggregate data—team averages, company targets—can be shared more broadly.

How often should I update my labor burden rates? At minimum annually, when you do your year-end financial review. Also update immediately after any significant compensation change—a wage increase, a change in benefits, adding or removing a vehicle. Stale burden rates produce inaccurate job costing data, which produces bad decisions.

What if my technicians resist logging their time accurately? This is a training and culture issue more than a system issue. Make accurate time logging part of job completion—not a separate step. Use your CRM’s mobile app to make it as frictionless as possible. Explain why it matters: accurate time tracking is how you know when to raise prices, when jobs are running efficiently, and how to reward the right behaviors. When techs understand that the data benefits them—through better pricing that supports better compensation—compliance tends to improve.

My business is under $500K. Is job costing worth the effort at my size? Yes. The earlier you build this habit, the better. At smaller revenue, the margin swings per job are proportionally larger as a percentage of your total business. A handful of chronically underpriced jobs can meaningfully impact a $500K business. Start simple—a basic spreadsheet with labor burden rates and overhead allocation—and build from there.

What to Do Next

Job costing isn’t glamorous. It’s not the marketing strategy or the sales technique or the leadership framework that’s going to transform your business overnight. But it is the foundation of every smart business decision you’ll make—and most contractors are making those decisions without it.

Here’s where to start this week:

  1. Calculate your true labor burden rate for your highest-volume technician. Use the framework in this post. Write the number down and compare it to what you’ve been using. If there’s a significant gap, that’s your first action item.
  2. Pull your last 90 days of jobs and categorize them by type. Calculate the average revenue per job type. That’s your starting point—even without full burden and overhead allocation, knowing your revenue by job type begins to show you the picture.
  3. Set up a weekly 30-minute review block in your calendar labeled “Numbers Review.” You don’t have a full job costing system yet. Put the time in the calendar anyway. Build the habit before you build the system.
  4. Call your CRM or field service software support line and ask them to walk you through their job costing features. Chances are you’re already paying for this capability and not using it.

If you want help interpreting your numbers, building a job costing framework, or understanding what your margins should look like for your trade and market, our team works with home service contractors at every stage—and helping owners see their business clearly is one of the most important things we do.

Schedule a Strategy Session with Our Team

No pressure, no pitch. Just an honest look at your numbers and what they’re actually telling you.