← The Automation Files
Small Business Tech Service Trades 4 min read · June 2026

You Know What Came In. Do You Know What's Actually Profitable?

Most owners know revenue, payroll, and the bank balance. None of those tells you which jobs, techs, or service lines actually make money.

Most trade shop owners know three numbers: revenue, payroll, and bank balance.

Revenue tells you what came in. Payroll tells you what went to the team. Bank balance tells you what's left after everything else. Those three numbers feel like running a business. They're not. They're running a business blind.

The number that actually tells you how the business is performing is profit per job. Revenue per technician. Margin by job type. And almost nobody in a small trade shop can pull those without an afternoon of spreadsheet work, because they live in three different systems, or nowhere at all.


Why job costing doesn't exist in most shops

Job costing means tracking the actual cost of every job: direct labor hours, materials used, any subcontractor fees, and an allocated share of overhead, all connected to a specific ticket. The output is a profitability map. You can see which job types, which technicians, which neighborhoods, and which service categories are actually driving your margin.

In industries where the top quartile of contractors runs at 15 to 20% net margin and the median operator barely clears 5%, that map is the most important thing in the business. Most shops don't have it.

They don't have it because job costing requires three things to exist simultaneously: a configured FSM that captures labor and materials per ticket, an accounting system that tracks costs at the job level, and a connection between the two. Most shops have all three of those pieces sitting separately. The FSM tracks jobs but not materials cost. QuickBooks tracks expenses but not by job. Nobody ever connected them, and the data that would answer "which jobs are actually profitable" has been generated every day for years and immediately discarded.


The three numbers most shops can't answer

Revenue per technician sounds simple. Take total revenue, divide by number of techs. But that's not the right number. The right number is revenue per billable hour per technician, which tells you who's efficient and who's spending four hours on a two-hour job. You can't get that without timesheet data tied to job records.

Profit per job type is the one that changes behavior immediately when shops see it. HVAC maintenance calls feel like low-margin commodity work. Equipment replacements feel like big wins. When you actually run the numbers, factoring in drive time, parts cost, labor hours, and overhead allocation, the answer is frequently the opposite of what the owner expected. The "easy" small jobs carry better margin than the big installs, because big installs take longer and have more material variance. Nobody knows this without measuring it.

Cost per lead by source is the third one. Not cost per lead in the sense of what you paid the platform. Cost per acquired customer who completed a job, net of the lead platform fee and the labor cost to chase and close. Most shops with Angi and Google Ads running simultaneously have never compared the two this way. The platform that looks more expensive per lead often produces cheaper completed jobs because the lead quality is better.


What changes when you actually measure it

Pricing. Shops running job costing almost always discover they're underpriced on specific job types because they've been guessing at margin instead of measuring it. The adjustment isn't dramatic. A few percentage points on flat-rate pricing for the categories that were running thin. That adjustment compounds across hundreds of jobs a year.

Technician performance. When you can see revenue per billable hour by tech, the coaching conversation changes. It's not "you need to be faster." It's "this job type takes you 20% longer than the team average, which is worth a conversation." Specific, not personal.

Dispatch decisions. When you know which job types are most profitable and which techs close them most efficiently, dispatch becomes a strategy rather than logistics.


Where to start

If you're on ServiceTitan, the job costing data is probably already being captured. The problem is the reporting isn't configured. Pull your job profitability report and see what's actually in it.

If you're on Jobber or Housecall Pro, the native job costing is limited, but a QuickBooks Online integration with job-level tracking turned on gets you most of what you need for the profitability analysis.

If you're on QuickBooks Desktop, this is a compelling reason to migrate. Desktop doesn't support the real-time job-level reporting that modern field service businesses need, and it's the single biggest data bottleneck most small trade shops are sitting on.

The data to answer these questions is being generated every day. It's just not being kept.


[The Service Trades Assessment][LINK: quick survey] covers your accounting and reporting setup. If you can't pull job-level profitability today, it'll show up in the gaps.


Michelle Onizuka is co-founder and Systems Architect at Onizuka Studio. She builds automation and AI systems for small businesses — including service trades operations across Tampa Bay and beyond.

← The Commission Spreadsheet Is Running Your Payroll and Wrecking Your Bids The $120,000 Phone Call →

See where your operation actually stands

Five minutes, no keyboard gymnastics, instant results. Find the gaps costing you time and money — and what closing them looks like.

Take the free assessment →

Related reading