Zero-Revenue Jobs and Which Numbers They Touch

Why this matters

A completed job that carried no revenue is a real event with real cost: a technician, a truck, an hour or three, sometimes parts. It is also the one input in a shop's records that some headline numbers count, some count only on one side, and some cannot see at all. So a rising load of free visits produces a set of readings that appear to disagree with each other, and the figure most owners watch is the one that never moves. This card is the map of which number sees them and which does not.

What counts as one

Four kinds, and it is worth separating them from the start because they mean different things:

  • A warranty return. Work redone at no charge under your own warranty. This is rework.
  • A no-charge callback. A return trip you chose not to bill, whether or not the original work was at fault.
  • A goodwill visit. A no-charge call made to keep a relationship, unrelated to any earlier job.
  • An estimate that took a truck. A site visit to price work, converting or not. This is a sales cost.

All four land in your records as a completed job with no revenue. Only the first two are rework, and lumping them together is how a shop concludes it has a quality problem when it actually made a marketing decision, or the reverse.

The inclusion map

Figure Does it see a zero-revenue job? How
Completed job count Yes One more job. The board looks busy.
Trip yield Yes, denominator only Adds a job and no revenue, so it pulls the figure down.
Cost per job Yes, both sides Its real cost in the numerator, one more job in the denominator.
Gross margin percent No A job with no revenue has no margin percentage, so it is excluded entirely.
Job-type margin ranking No Same exclusion, applied inside each type.
Average ticket No There is no invoice, so nothing enters.
Revenue per technician Only once it is a rate Adds nothing to the raw column, since a sum absorbs a zero. It dilutes a per-job or per-day version, and it lands on whoever gets sent on the returns, which is a dispatch decision.
Weighted margin (total margin over total revenue) Depends on your own cost sum In, if the cost total covers every completed job. Out, if it covers only billed ones.

That last row is the only one you have to go and check rather than read off this table, and it is worth doing once. Two shops can compute "total margin over total revenue" from the same records and get different answers depending on whether the free visits' costs were in the cost total.

Four quarters

One shop, four quarters, prices unchanged throughout so nothing in the reading comes from pricing.

Quarter Completed jobs Zero-revenue Billed jobs Free-visit share Trip yield Cost per job
1 88 9 79 10.2 percent 2.33 units 1.62 units
2 91 14 77 15.4 percent 2.20 units 1.58 units
3 94 19 75 20.2 percent 2.07 units 1.54 units
4 90 24 66 26.7 percent 1.91 units 1.49 units

Revenue per billed job held at 2.60 units in every quarter, indexed so 1.0 unit is one standard service call. A billed job cost 1.70 units of direct cost, a free visit 0.90.

Start with what did NOT move. The completed job count went 88, 91, 94, 90 - the board looked the same all year. Average ticket did not move, because free visits raise no invoice. The gross margin percentage did not move, because free visits are excluded from it outright, and neither did any row of the job-type margin ranking.

What did move: trip yield fell from 2.33 to 1.91 units, down 18 percent, purely because the denominator filled with jobs that earned nothing. Revenue per billed job never moved, so the gap between the two is not an indicator of the free-visit load. Divided by revenue per billed job it is the free-visit share exactly, with no lag and no interpretation (the trip-yield card carries the derivation), which makes that gap the earliest warning any of these figures gives. And billed jobs fell from 79 to 66 while completed jobs went from 88 to 90, so the shop made slightly more visits across the year and billed 16.5 percent fewer of them.

The figure that moves the wrong way

Cost per job is the one to be careful with.

  • Quarter 1: (79 times 1.70) plus (9 times 0.90) is 134.30 plus 8.10, or 142.40 units, over 88 jobs: 1.62 units.
  • Quarter 4: (66 times 1.70) plus (24 times 0.90) is 112.20 plus 21.60, or 133.80 units, over 90 jobs: 1.49 units.

Cost per job improved by 8 percent across the year. Read on its own, that is a shop getting a grip on its costs.

What actually happened is that free visits are cheap visits - no parts, less time on site - so adding them to the denominator drags the mean down faster than their cost lifts the numerator. Meanwhile the absorbed cost of the free work went from 8.10 units to 21.60, a factor of 2.7, and its share of the shop's total cost went from 5.7 percent to 16.1 percent. Against billed revenue, free work went from 8.10 over 205.40 units, or 3.9 percent, to 21.60 over 171.60, or 12.6 percent.

That is the number worth carrying: in quarter 4, one unit in every eight the shop billed was consumed by work it did not bill.

The job that is almost free, and why it is worse

There is a fifth case that does not belong on the map above, because it flips every row: the visit billed a token amount rather than nothing. A courtesy callback where the office charges a nominal figure "so it shows on the account" is not a zero-revenue job. It has revenue, so every figure sees it, and the one that sees it hardest is the margin average.

Work it. A callback consumes 0.90 units of cost and is billed at 0.10 units. Its margin is (0.10 minus 0.90) over 0.10, which is negative 800 percent - not a typo, and not unusual, because the margin percentage divides by the revenue and the revenue is almost nothing.

Drop that one job into a quarter of 79 billed jobs averaging 45 percent margin. The new average is (79 times 45, less 800) over 80 jobs, which is 3,555 minus 800, or 2,755, over 80: 34.4 percent. One token-billed courtesy call took 10.6 points off the shop's reported margin for the quarter.

The weighted figure barely notices. Set its starting point equal to the plain average at 45 percent, which is an assumption and not an identity - the averages card is explicit that the two figures are not generally the same number - and made here on purpose, so that the only thing differing between the two readings is the token job. On that baseline, margin earned is 92.43 units on the 79 jobs' revenue of 205.40, and the token job takes it to 91.63 on 205.50, which is 44.6 percent against 45.0 - a movement of 0.4 of a point. The plain average moved about twenty-five times as far as the money did, and it did so because a tiny denominator makes a percentage explode.

So the practical rule: bill the visit properly or bill it at nothing and record it as a free visit with a reason code. A token charge is the worst of the three, because it recovers no cost, it hides the visit from the free-visit count, and it detonates inside the margin average. If your reported margin drops sharply in a quarter with no other explanation, sort the period's jobs by revenue ascending and read the bottom five before you look anywhere else.

What sees it late, and what never sees it at all

Revenue per technician is the one that needs watching, and only in its rate form: a sum of job revenue per name absorbs a zero without moving, so the raw column is blind, while a per-job or per-day version of it dilutes - and it dilutes only for whoever is being sent on the returns, so a routing decision the office made arrives looking like a person problem. The three figures that cannot see the free visits do not see them late either, which is the part people wait out. There is no lag and no eventual appearance at any load: a shop where half its visits earned nothing reads exactly the same margin percentage as a shop where every one of them earned, this quarter and every quarter after it.

Counting them on purpose

The instruction that follows from all of the above is short: this is its own operating number and nothing else reports it.

Free-visit rate = zero-revenue completed jobs, over all completed jobs, per quarter. Use a quarter, not a month; most shops do not complete enough jobs in a month for the rate to be readable against its own noise.

There is no defensible cross-trade benchmark for it, and anyone offering one is guessing. Warranty terms, whether the shop runs maintenance agreements, and whether estimates are done on site or over the phone each move it by more than the differences worth investigating, so a shared number would be comparing four different policies. Benchmark it against your own trailing four quarters instead, which is a real answer: open the list when the rate rises more than about 3 points against the prior quarter, or on any two consecutive rises however small. Two consecutive rises matters because a slow climb never trips a single-period threshold, and a slow climb is the normal shape of this problem.

Then split the count by reason, because the four kinds route to different people. The same shop's first and last quarters:

Reason Quarter 1 Quarter 4 Growth
Warranty return 3 11 8
No-charge callback 2 7 5
Goodwill visit 1 2 1
Estimate that took a truck 3 4 1
Total 9 24 15

Warranty returns and no-charge callbacks account for 13 of the 15 additional visits, or 86.7 percent of the growth. That is a first-time-fix problem and it belongs to whoever owns diagnosis, training and truck stock. Had the growth been in the estimate row, the same headline rate would have been a sales-cost question and possibly a decision the shop made deliberately, since a site visit that wins work is worth paying for. One rate, two completely different owners, and the split is the only thing that tells them apart.

Checking your own records

  1. Count completed jobs and jobs with revenue for the last four quarters. If the two are equal in any quarter, free visits are not being recorded as completed jobs, and every figure on the map above is blind to them rather than merely excluding them.
  2. Confirm the free visits carry their cost. A warranty return with no time logged and no parts recorded costs nothing in your records and everything in reality. Check a handful for logged hours.
  3. Find out whether your cost total includes them, which settles the last row of the map for your own shop.
  4. Add a reason code to the free visits if there is not one already. Without it the rate is a number you can watch and cannot act on, which is the worst kind to have.

References

  • See related: Trip Yield: The Number That Prices a Truck Roll - the pair whose gap equals this load
  • See related: Cost per Job, and What Is Actually Inside It - why this input moves that figure the wrong way
  • See related: Gross Margin Percent Is an Average of Averages - why the margin figure excludes these jobs entirely
  • See related: Deciding Whether a Callback Is Warranty or Billable