Gross Margin Percent Is an Average of Averages

Why this matters

The gross margin percentage most shops read off their completed jobs is the plain average of each job's own margin percentage. That is not the shop's margin. It is the margin of the typical job, and a shop whose money is concentrated in a handful of large jobs can report a healthy figure while keeping a much thinner share of what it actually billed. The two numbers can sit twenty points apart with nothing wrong in the records. This card owns that distinction for the whole set of money numbers, because the same weighting question decides how to read job-type rankings, parts margin and size-band curves.

What the figure is actually computing

Take one completed job. Its margin is its revenue less its direct costs - labour, parts, travel, and any permit or subcontractor cost the shop absorbed rather than passed through - divided by its own revenue. That gives a percentage for that one job. (For how a job's cost is built up in the first place, see the job-costing card in the references; this card takes the per-job number as given.)

Now the headline figure: add up those percentages across every completed job in the period and divide by the number of jobs. Two properties follow immediately, and both matter more than they sound:

  • Every job counts exactly once, regardless of size. A half-hour diagnostic weighs the same as a week-long install.
  • Jobs with no revenue drop out entirely. There is no percentage to take when the denominator is zero, so a warranty return or a no-charge callback contributes nothing, not even a low number.

It is not total margin over total revenue. That is a different figure, it is usually the more important one, and almost nobody computes both.

The worked case

A shop completes 10 jobs carrying revenue in a month. Index revenue in units where 1.0 unit is one standard service call.

Job type Count Revenue each Margin each
Service call 8 1.0 unit 60 percent
Install 2 10.0 units 22 percent

The reported figure. Add the percentages and divide by the job count: (8 times 60) plus (2 times 22) is 480 plus 44, or 524, and 524 divided by 10 jobs is 52.4 percent.

What the money did. Total revenue is (8 times 1.0) plus (2 times 10.0), which is 8.0 plus 20.0, or 28.0 units. Margin earned is (8 times 1.0 times 0.60) plus (2 times 10.0 times 0.22), which is 4.8 plus 4.4, or 9.2 units. Divide: 9.2 over 28.0 is 32.9 percent.

The same month, the same records, no error anywhere: 52.4 percent and 32.9 percent. The reported figure is 1.59 times the one the period's money actually produced, and the gap is 19.5 points.

The reason is visible in the table. The two installs are 2 of 10 jobs, so 20 percent of the count, and 20.0 of 28.0 units, so 71.4 percent of the revenue. In the reported figure they get 20 percent of the vote. In reality they governed almost three quarters of the money.

The weighted figure, and how to compute it

The weighted figure is total margin over total revenue. Computing it needs one thing the unweighted version does not: each job's margin expressed as an amount rather than as a percentage.

  1. For every completed job in the period, take revenue and take direct cost. Subtract to get margin as an amount.
  2. Sum the margin amounts. Sum the revenue amounts. Do not average anything yet.
  3. Divide the margin total by the revenue total. That is the shop's margin on the period's work.

That is three columns and two sums, and it is worth carrying permanently beside the headline figure rather than computing once in a panic.

Reading the gap

The gap is information, not an error, and its direction tells you where your margin lives.

Unweighted above weighted (the worked case, and the common one): your small jobs carry the higher margins and your revenue is concentrated in thinner work. Any pricing action that matters has to happen on the big jobs. Raising service-call pricing moves a number that already looks good and touches 28.6 percent of the revenue.

Unweighted below weighted: the large work is the profitable work, and a tail of thin small jobs is dragging the typical-job figure down. Work a second shop to see it. Thirty completed jobs: 24 small calls at 0.5 units of revenue and 26 percent margin, 6 projects at 9.0 units and 41 percent. Unweighted is (24 times 26) plus (6 times 41), or 624 plus 246, which is 870 over 30 jobs, or 29.0 percent. Weighted: revenue is 12.0 plus 54.0, or 66.0 units; margin earned is 3.12 plus 22.14, or 25.26 units; 25.26 over 66.0 is 38.3 percent. The typical job is thin and the money is fine. Those 24 small calls are 80 percent of the job count and 12.0 of 66.0 units, or 18.2 percent of the revenue, which is the signature of a visit-cost problem rather than a pricing one: check whether the minimum charge covers the roll before touching the catalogue.

The size of the gap measures dispersion, not pricing quality. Prove it on the same jobs. Keep all 10 jobs and every per-job margin exactly as they are, but make every job the same size, 2.8 units of revenue. The unweighted mean is untouched at 52.4 percent. The weighted figure is (8 times 2.8 times 0.60) plus (2 times 2.8 times 0.22), which is 13.44 plus 1.232, or 14.672 units of margin, over 10 times 2.8, or 28.0 units of revenue: 14.672 over 28.0 is 52.4 percent. Identical. When every job is the same size the two figures are the same number.

The mirror case closes the rule. Hold the job sizes wildly apart but give every job the same margin percentage, which is what a shop marking everything up at one fixed rate actually produces. Total margin over total revenue is then that rate, and the average of a column of identical percentages is also that rate. Same number again.

So a gap needs both spreads at once: a spread in job SIZE and a spread in job MARGIN, lining up with each other. That is why the sign is readable. Where the big jobs are the thin ones, the unweighted figure sits above the weighted one; where the big jobs are the fat ones, it sits below. And a shop with a tight size range, or one flat markup across the catalogue, can read the unweighted figure with reasonable confidence, while a shop running service calls and installs out of the same records cannot.

The decision the gap actually changes

Knowing the gap is only worth something if it reorders what you work on. It does, and the reordering is arithmetic rather than judgement: a margin point is worth exactly in proportion to the revenue it applies to, not to the number of jobs it applies to.

Run it on the worked case. Find 5 margin points on the installs and you add 5 percent of their 20.0 units, or 1.0 unit, taking the month's margin earned from 9.2 to 10.2 units, a rise of 10.9 percent. Find the same 5 points on the service calls and you add 5 percent of their 8.0 units, or 0.4 units, taking margin earned to 9.6 units, a rise of 4.3 percent. The install action is worth two and a half times the service-call action, which is the ratio of their revenues, 20.0 to 8.0.

Notice what the unweighted figure would have told you instead. In that figure, 5 points on the eight service calls moves the headline by (8 times 5) over 10 jobs, or 4.0 points, and 5 points on the two installs moves it by (2 times 5) over 10 jobs, or 1.0 point. Working to improve the reported number pushes you toward the smaller money by a factor of four, in the same month that the money says to do the opposite. That inversion is the practical cost of not knowing which average you are reading.

Which question each number answers

Both are legitimate. They answer different questions and they are not interchangeable.

  • "Did we keep enough of what we billed?" Weighted. This is the one that reconciles with a profit and loss statement, and it is the one to compare against any published benchmark, because published margin figures are almost always weighted figures pulled from financial statements. Comparing your unweighted job average against a weighted industry figure is a category error, and it usually flatters you.
  • "Is the typical job priced correctly?" Unweighted. It is the right tool for spotting that a whole class of routine work has drifted below where you priced it, because it refuses to let one large job drown out fifty small ones.

What you cannot do is average the two, or quote whichever is higher, or let a target set against one be judged against the other.

Two jobs that distort it

The job with no revenue. It is excluded outright, so a rising load of warranty returns and no-charge callbacks is completely invisible in this figure. It costs real labour and travel and it never appears. That cost does land in the weighted figure if your cost total includes every completed job, so know which population your cost sum is taken over before you trust the comparison.

The job with no logged cost. A job where revenue was recorded and the technician's time never was reads at or near 100 percent margin. Add one such job at 0.5 units of revenue to the worked case and the unweighted figure goes from 52.4 percent to (524 plus 100) over 11 jobs, or 56.7 percent, up 4.3 points. The weighted figure goes from 9.2 over 28.0 to 9.7 over 28.5, which is 34.0 percent, up 1.1 points. An hour nobody logged moves the unweighted figure close to four times as far as it moves the weighted one, because the unweighted figure gives a tiny job the same vote as a large one. If your reported margin is climbing while the work feels the same, look for missing time before you take credit for it.

Checking your own pair of figures

Run this once on a closed period, then keep both numbers side by side afterwards:

  1. Compute both figures for the same period, on the same job population, and write them down together. If you cannot produce the weighted one, you do not yet have per-job margin as an amount, only as a percentage, and that is the gap to close first.
  2. Sort the period's jobs by revenue and look at the top few. Note what share of total revenue they hold and what share of the job count. If the top tenth of jobs by size holds more than about a third of the revenue, expect a visible gap and do not act on the unweighted figure alone.
  3. Check the job count in the margin figure against the completed-job count for the same period. The difference is your zero-revenue work, which this figure never saw.
  4. Look for any job reading above about 90 percent margin and confirm its labour was logged. One of those in a small period is usually a records failure rather than a win.

References

  • See related: Gross Margin per Job + Job Costing - how a single job's margin is built, which this card takes as its input
  • See related: Markup vs Margin: The Mistake That Kills Profit
  • See related: Zero-Revenue Jobs and Which Numbers They Touch
  • See related: Gross Margin vs Net Margin: What the Difference Means