What your no-shows actually cost, counted on margin not revenue
Two numbers to start: the shifts you assign in a week, and how many of those workers never turn up. Everything else runs on defaults you can open up and change.
The arithmetic is printed under the tool. A number you cannot check is a number your finance director will not sign.
The arithmetic
Five lines. Nothing hidden, and all of it recomputable from your own ledger.
# the shift
gross profit / hour GP = bill rate × gross margin %
pay rate P = (bill rate − GP) ÷ (1 + burden %)
# the incidents
no-shows / week = shifts assigned × no-show rate %
covered = no-shows × backfill rate %
uncovered = no-shows − covered
# the cost
margin never earned = uncovered × hours × GP
cover-premium compression = covered × hours × P × premium % × (1 + burden %)
recovery labour = no-shows × (minutes ÷ 60) × coordinator cost / hour
client credits = uncovered × hours × bill rate × credit %
─────────────────────────────────
weekly cost = the four lines above, summed
annual cost = weekly × 52
# shown separately, never summed in
revenue at risk = annual gross profit on the book × churn probabilityCost it on the spread, not the bill rate
Most tools multiply shifts by the bill rate. In light industrial that overstates the loss about four times over, because you never paid the worker who did not turn up. Their pay and its employment burden are costs you avoided. What you actually lost is the spread.
Report the $192 and you are not being careful. You are wrong by four times, in the direction that ends the meeting. Healthcare economics settled this decades ago: an empty appointment slot costs the contribution margin of the slot, not its billed value, because the variable costs of serving it were never incurred.
Markup is not margin. Markup is (bill − pay) ÷ pay. Gross margin is (bill − pay − burden) ÷ bill. A 50% markup works out near a 24–27% burdened gross margin, not 33% and nowhere near 50%. Type a markup into the margin field and every number above comes out too high.
The input that moves the answer most
Cover a no-show before the shift starts and it does not cost you the shift margin at all. It costs coordinator time, and usually a little margin compression from a premium replacement. Only the ones you never cover cost the full spread.
- Treat every no-show as a lost shift and you overstate the direct loss two to three times.
- Stack that on the bill-rate error and the answer lands an order of magnitude high.
- Drop the backfill rate from 65% to 30% on the default inputs and the annual figure moves from about $64,000 to $80,600.
Healthcare is stricter here. It counts a no-show as a patient who did not appear, or who cancelled too late to refill the slot, so non-recoverability sits inside the definition itself. Staffing has no such convention, which is why this tool asks you for the number. Most agencies have never measured it. Finding yours is worth more than anything on this page.
How far to trust each number
Everything driving this tool sits in one of three tiers. They are not interchangeable, and most staffing content publishes them as if they were.
Gross margin 25.9% in light industrial, from a public 10-K. Employment burden 10–14% of payroll. Markup 40–55%. Fill-rate service levels commonly set at 85% or higher.
A 98% platform show rate against a “50–60% industry average”. That comparator is footnoted by the platform itself as partner feedback. Quotable as a claim, never as a benchmark.
The under 4–6% no-show target, the 20% backup-pool cover, the $240–430 monthly run cost at 8,000 shifts. Design targets from our model, labelled as such wherever they appear.
Why there is no default no-show rate. The 23% you see quoted as the service-industry average comes from a review of 105 studies of missed medical appointments (Dantas et al., Health Policy, 2018), spanning 1980 to 2016 and ranging from 13.2% in Oceania to 43% in Africa. Good number, wrong population. No staffing equivalent has ever been published, so the tool leaves that box for you.
What this calculator will not do
- Apply an importance factor. Cost-of-vacancy formulas multiply a daily salary by a judgement factor of one to three, because a permanent vacancy has no observable unit price. A shift does. Importing that multiplier swaps a measured spread for an assumption.
- Fold churn into the headline. The at-risk figure is usually larger than the direct loss, which is exactly why it stays separate and runs on a probability you set.
- Count late cancellations as no-shows. A worker who tells you at 8pm has handed you a scheduling event, not an attendance failure. If your data lumps them together, your input rate is too high.
- Claim precision it has not earned. Round numbers, editable inputs, visible arithmetic. This is a case for looking harder, not an audited figure.
Reading your own result
Two patterns show up almost every time an operator runs this honestly.
The direct loss is smaller than expected. The recovery cost is bigger.
Usually correct, and it argues for automation rather than against it. Margin on uncovered shifts is capped by how many shifts you actually drop. Coordinator recovery time is paid on every incident, covered or not, and it is paid at 6am. Our cost per filled shift model puts confirmations, no-show recovery and backfill at roughly 18% of internal cost, about $1.62 of a $9.00 shift.
The at-risk line dwarfs everything else.
Also usually correct. A 200-shift-a-week account at $2.50 gross profit an hour across eight-hour shifts carries around $208,000 of annual gross profit. Move the probability of losing it by ten points and that is $20,800, more than the direct margin cost of the shifts that caused the problem. Fill-rate failure is the most cited driver of client attrition in temporary staffing. That is the real argument, and it is why it sits outside the headline where you control it.
Questions operators ask
Why calculate on gross profit instead of the bill rate?
You never paid the worker who did not work, so their pay and its burden are avoided costs and the loss is the spread. At a light-industrial margin near 26%, bill-rate costing overstates by roughly four times. It is the first thing a finance director spots.
What is the average no-show rate in staffing?
Nobody has published one. The 23% in circulation measures missed medical appointments. Platform comparisons of 50–60% are footnoted by the platforms as partner feedback. Use your own baseline, split by client and site, because the average hides the two accounts causing most of the pain.
Why does it ask for a backfill rate?
A covered no-show costs recovery time and cover premium, not the shift margin. Only uncovered ones cost the full spread. Assuming every no-show is a lost shift overstates the direct loss two to three times.
Why is client churn shown separately?
It is a probability you set, not a cost you incurred. It is usually the largest number on the page, which is precisely why folding it into a headline would make the tool easy to dismiss.
Are the defaults reliable?
The US light-industrial defaults come from public filings and published 2026 benchmarks. The GBP and EUR defaults are our estimates rather than sourced benchmarks, and the tool says so when you switch. Everything is editable and the arithmetic is on the page.
What should I do with the number?
Nothing, until you split it by client and site. One aggregate no-show rate is not actionable. Two accounts usually carry most of it, and those two are where a confirmation and backup-pool workflow pays for itself first.
We will measure your real numbers in two weeks.
This page runs on defaults. The Ops Audit runs on your call logs, ATS events and timesheet trails: your actual no-show rate by client and site, your actual backfill rate, and what recovery is costing you. $7,500 fixed, and free if it does not find ten times its fee in annual savings.
Request a free 30-minute teardown →