ServiceTitan Job Costing: How to Track Gross Margin on Every Job

Running a home service business without tracking job costing is like driving with a blindfold. Revenue comes in, trucks roll, but you don’t actually know which jobs make money and which ones lose it. ServiceTitan has built-in job costing tools. Here’s how they work and how to use them.


The Two Ways to View Job Costing in ServiceTitan

ServiceTitan gives you job costing in two places, and they serve different purposes.

1. The Job Costing Summary Report

Under Reporting, you’ll find pre-configured job costing reports built on the Jobs data set. These give you an aggregate, backward-looking view of your cost performance across multiple jobs.

The key KPIs available include:

  • Gross margin and gross margin %
  • Materials, equipment, and PO bill costs as a % of sales
  • Performance pay as a % of sales
  • Labor burden as a % of sales

This is where you spot trends. If your gross margin has been slipping for the past three months, this is where you catch it. You can filter by business unit, tech, job type, or date range to get as detailed as you need.

2. The Job Costing Flyout

When you’re on an individual invoice page, there’s a Job Costing button at the bottom. Click it and you get a detailed flyout that shows the costing breakdown for that specific job:

  • Labor burden. The actual payroll cost for this job.
  • Materials and other direct costs. Materials on the invoice, plus things like permits or subcontractors.
  • Committed and actual purchase order costs. If POs were used on this job.
  • Gross margin and gross margin %.

This is your job-by-job view. Use it when you want to understand why a specific job came in lighter than expected, or to spot-check whether your technicians’ invoices land where your pricing model predicted.


The Critical Setting: Accounting Periods

Here’s what trips people up: job costing data in ServiceTitan is backward-looking and only populates after certain conditions are met.

The labor burden number on the job costing flyout shows as zero until one of these happens:

  • If you’re not using Touchless Journal Entry integration: the invoice needs to be posted.
  • If you are using Touchless JE integration: the invoice needs to fall within a closed accounting period (using the “Close Through Date” feature).

This catches a lot of people. They pull up a job costing report, see zeros, and think something’s broken. Usually the accounting periods just haven’t been closed yet.

Best practice: If you’re not using the Touchless Journal Entry integration, you should start. It significantly streamlines the accounting side of ServiceTitan and makes job costing data more accurate and automated. Ask your accounting team or CSM about getting it set up.

If numbers aren’t showing up in job costing that you expect to see, check whether the relevant invoice is posted or is within a closed accounting period.


Job Costing from the Estimate Side: Predictive vs. Actual

On the office side, when you look at an estimate, you’ll see a Cost section that shows a projected gross margin. This is predictive, not actual. It’s not pulling from your payroll calculations at all.

What it pulls from is an “Estimated Labor” field that you type in manually, or that comes from price book items you’ve marked as labor items. Think of it as a back-of-napkin calculation, useful for sales conversations but not for real accounting.

The job costing flyout on invoices is the real number. The predictive cost section on estimates is directional at best.

Don’t mix them up. They serve different purposes, and confusing them leads to bad decisions.


Costing Settings Worth Knowing

Under Settings, search for “costing” and you’ll find a few relevant options.

The most important: by default, ServiceTitan only considers items tied to income GL accounts when calculating job costs. If you want to include non-income GL accounts in your costing calculations, you can change that.

For most residential service companies, the default is fine. If you’re doing commercial work or have an unusual accounting setup, review this with your accountant.

There’s also a set of project-specific costing settings tied to a feature gate. These are mainly relevant to commercial and new construction companies that use ServiceTitan’s project tracking. If you’re doing new construction work, look into the Budgets vs. Actuals feature separately. It’s built for that use case.


A Realistic Job Costing Workflow for Residential Service Companies

If you’re a residential HVAC, plumbing, or electrical company, here’s a practical framework for using job costing without overcomplicating it:

Step 1: Use Dynamic Pricing for your pricebook.
Dynamic Pricing builds your target gross margin into the price of every service automatically. You set your billable rate, material markups, and target margins, and the pricebook does the math. This gives you a structural baseline.

Step 2: Use price levels for job complexity.
When a job is harder (difficult access, special equipment, unusual circumstances), technicians can bump it to Level 2, 3, or 4 in your dynamic pricing modifiers. This prevents undercharging on jobs that cost more to deliver.

Step 3: Close your accounting periods regularly.
Whether monthly or more frequently, closing periods activates the labor burden data in your job costing flyout. Without this, the most important cost number—what you actually paid in labor—stays invisible.

Step 4: Review your job costing reports monthly.
Pull the Job Costing Summary report monthly and look for trends. Is your gross margin holding steady? Are certain business units underperforming? Are certain job types consistently unprofitable? This is where you catch issues before they compound.

Step 5: Spot-check outliers with the flyout.
When a job in your report looks way off—either unusually profitable or unprofitable—open that invoice and use the job costing flyout to understand why. Materials overrun? Labor went long? Price was discounted? The flyout tells the story.


Job Costing for Commercial and New Construction

If your company does commercial or new construction work, the job costing picture is different. ServiceTitan has a Financials tab on project pages that supports costing by project rather than by individual invoice. This is where larger, multi-phase jobs get tracked.

The Budgets vs. Actuals feature is specifically built for companies doing new construction work, where you need to track estimated vs. actual costs across the life of a project. That’s covered separately in the Blue Collar Nerd guide, since it’s specific enough to need its own deep dive.


What Job Costing Won’t Tell You

ServiceTitan job costing gives you a strong picture of your direct job costs. What it doesn’t automatically build in is your overhead allocation—rent, admin salaries, insurance, vehicle costs, and everything else to run the business.

Your gross margin in ServiceTitan is pre-overhead. That’s still an extremely valuable number, but it’s not the same as your net margin. You need to layer overhead analysis separately, either in your accounting software or through your own modeling.

Here’s a reasonable way to think about it: use ServiceTitan to track whether you’re making money in the field, and use your accounting software (QuickBooks, Sage, etc.) to track whether the business as a whole is profitable.


Frequently Asked Questions

Why is my labor burden showing as zero in the job costing flyout?
The invoice hasn’t been posted yet (if not using Touchless JE), or the invoice isn’t in a closed accounting period (if using Touchless JE). Close the period or post the invoice.

Can I see job costing by technician?
Yes. Use the Jobs data set in Reporting and add technician as a dimension. You can see how individual techs’ invoices are performing on a cost basis.

What’s the difference between the estimate cost section and the job costing flyout?
The estimate section is predictive, based on manually entered estimated labor. The job costing flyout is actual, based on real payroll data once the accounting period is closed.

Does job costing work with purchase orders?
Yes. Committed costs (from POs) and actual costs are shown in the flyout. ServiceTitan also prevents double-counting materials that appear both on the invoice and on a PO.

Should I use Dynamic Pricing before worrying about job costing?
Yes. Get Dynamic Pricing configured first. It builds your target margins into the pricing structure, which gives you a baseline to measure actuals against in your job costing reports.


The Bottom Line

Job costing in ServiceTitan is most powerful when the whole system works together. Dynamic Pricing sets your target margins, technicians price jobs correctly in the field, accounting periods close regularly, and someone pulls and reviews the reports. None of those pieces is complicated on its own. The discipline of doing it consistently is where most companies fall down. Build the habit, and the data will tell you exactly where your money is going.

Related guides: ServiceTitan Configurable Payroll and ServiceTitan dashboards.

Table of Contents

ServiceTitan Mastery For Your Whole Team

Searchable video lessons, role-based modules, and a private community — everything your team needs to actually use ServiceTitan with confidence.

See Pricing →

Black Friday Sale – 50% off your first 3 months! Use code BFRIDAY. Only applies to monthly pricing plan