See it in actionBook a demo →

Profitability analytics

See revenue, costs, and margin by job, customer, route, and technician — plus gross vs net profit, vehicle costs, profit per labor hour, and recurring revenue (MRR).

Updated August 1, 2026

What the Profitability page shows

The Profitability page breaks down revenue, costs, and margin across your company — by job, customer, route, and technician. Pick a date range with the presets at the top: Last 30 Days, Last 90 Days, or All Time.

KPI cards and the cost breakdown

The Profitability page with KPI cards for revenue, total costs, gross profit, and average margin above the breakdown tabs
  • Revenue — what was earned in the period.
  • Total Costs — hover the card for the breakdown: Chemicals / Parts / On-Site Labor / Driving Labor / Mileage / Processing Fees (card fees your company absorbed).
  • Gross Profit — the top-line profit. When a monthly overhead is configured, the card also shows "− overhead → net" underneath, so you see true net profit too.
  • Avg Margin and the current regional Gas Price.

Below the cards: jobs completed, average profit per job, profit per labor hour, and — when some completions have no labor time or mileage recorded — an amber "visits missing cost data" chip. Hover the chip to see why data is missing.

Until every active technician has an hourly rate and every vehicle has a Cost per Mile or MPG, the page shows a setup banner: "Complete your setup for accurate profitability data — Set hourly rates for employees and MPG for vehicles to see labor and travel costs", with links to the Employees and Vehicles pages. It disappears on its own once those rates are filled in.

Gross profit vs net profit

The top-line number is Gross Profit. To get closer to true net profit, two optional settings live in Payroll → Settings (the popover at the top right of the Payroll page):

  • Labor burden % — payroll taxes, workers' comp, and similar on-costs, added on top of labor costs.
  • Monthly overhead $ — shown as an overhead line in the profitability summary, turning gross profit into net.

How revenue is attributed

Revenue is attributed to match what's actually invoiced, not a naive per-visit rate:

  • Monthly and weekly flat rates are split across the month's visits.
  • Work-order discounts are netted out.
  • On jobs where chemicals are partially included, only the billed overage counts as chemical revenue.

Vehicle and mileage costs

  • Enter an all-in Cost per Mile ($) on the vehicle (vehicle form) and it overrides everything.
  • Or enter just MPG and the system computes a fuel-only cost from weekly regional gas prices.
  • When both are set, the Mileage cost is split into Fuel (miles × gas price ÷ MPG) and Vehicle wear & depreciation (the rest of the all-in rate) — shown in the Total Costs tooltip and on route detail pages, so you can see actual gas spend separately from wear.

Miles per route come from odometer readings, GPS, or estimates — tracked automatically alongside clock-in/out (see Employees, time & payroll).

The tabs: Jobs, Customers, Routes, Technicians

Below the summary, tabs break profitability out into sortable profit tables by Jobs, Customers, Routes, and Technicians — click any row for its detail page. A fifth tab, Recurring Revenue, is covered below.

The Technicians tab also has a muted Tips column. Tips are pass-through gratuities that belong to the technician, so they are shown for reference only — they are never counted in revenue, profit, or margin. See tips and gratuities.

Wherever a margin appears, a job or period with costs but no revenue shows a red dash instead of a percentage — that's a loss, not a break-even "0%".

Drill down: overview pages, runs, and per-stop costs

  • Jobs tab → job overview page. Clicking a job row opens an aggregate page for that job — Revenue, Costs, Profit, Margin, and Completions cards, a Profit Over Time chart, a Cost Breakdown donut, and an Individual Completions table. Each completion row clicks through to a single-visit detail page with its own cost details and the exact chemicals and parts used. The same page is reachable from a job's View Details link on its Profitability card.
  • Routes tab → route overview page. Clicking a route row opens the aggregate for that route — the same cards plus Runs and Miles, and an Individual Runs table listing every time the route was driven. Each run clicks through to a route-run detail page.
  • Route-run page → Stop Details. A run's page shows cost tiles (Chemicals, Parts, On-Site Labor, Driving Labor, Mileage, Processing Fees) and a Stop Details table. Stops with recorded usage have an expander that opens the per-stop cost detail: the chemicals used, the parts used, and time at the stop.
  • When a vehicle has both Cost per Mile and MPG set, the run's Mileage tile splits the cost into fuel and wear & depreciation — e.g. "$4.10 fuel + $6.20 wear & depreciation".

Customer and Technician rows drill down the same way, each with its own charts and an Individual Jobs table.

The Recurring Revenue (MRR) tab

The Recurring Revenue tab shows current MRR, annual run rate, the count of recurring customers, and a breakdown by billing type. The rules:

  • MRR counts maintenance jobs that are on active routes: flat monthly/weekly rates, plus per-visit rate × route frequency for per-visit jobs.
  • A job with a rate but no route has no recurring schedule and is excluded — the tab shows a count of these so they aren't invisible.
  • Route assignments that already ended don't count.
  • Work orders are one-time revenue and are never in MRR.

The annual run rate is seasonal-aware: jobs with seasonal schedules sum each segment's rate × frequency across the year, instead of projecting the current season × 12 — so a summer-heavy book isn't overstated in July or understated in January.

  • Realized Recurring Revenue — a 12-month chart that stacks recurring (maintenance) vs one-time (work order) revenue, so the mix is visible. The current month is shown lighter because it's still in progress. The Profitability summary also shows a maintenance vs work-order revenue and profit split.
  • MRR Movement — new vs churned customers month over month, counting recurring revenue only.

The Recalculate button

Recalculate (top right) recomputes all profitability data. Use it after fixing the inputs — correcting odometer readings, updating chemical costs or hourly rates, or changing the labor burden % — so the numbers reflect the fixes.

There's also a per-run Recalculate button on each route-run detail page. A run's numbers are normally computed once, when the route is completed — if you fix that run's odometer readings or the vehicle's MPG, cost per mile, or gas data afterwards, click Recalculate there to refresh just that run ("Mileage and costs will refresh in a moment").

Frequently asked questions

Why is a job with a rate missing from MRR?

MRR only counts maintenance jobs on active routes. A job with a rate but no route assignment has no recurring schedule, so it's excluded — the Recurring Revenue tab shows a count of excluded jobs so you can spot them.

What does the amber "visits missing cost data" chip mean?

Some completions in the period have no labor time or mileage recorded, so their costs are incomplete. Hover the chip to see why.

I fixed an odometer reading / hourly rate — why didn't the numbers change?

Click Recalculate (top right of the Profitability page). It recomputes all profitability data and is meant for exactly this — after fixing odometer readings, chemical costs, hourly rates, or the labor burden %.

Where do I set labor burden and overhead?

Payroll → Settings (the popover at the top right of the Payroll page). Labor burden % loads payroll taxes and workers' comp onto labor costs; monthly overhead $ appears as a line in the profitability summary for true net profit.

Related articles

Make Monday easier than last Monday.

30-day free trial. No credit card required. Cancel anytime.