Most HVAC shops don't lose parts to theft. They lose them to fog. A tech grabs a contactor off the shelf at 6:40am, tosses two more in the door pocket "just in case," uses one, and the other two never make it back onto the books. Multiply that across six vans and 250 working days and you've got a hole in your margin that nobody can point to because it never showed up as a single event.
That's the frustrating part about shrinkage. It's not one big loss you can investigate. It's a thousand small ones you can't.
So this post is narrow on purpose: how to run a parts bin audit for HVAC vans and warehouse hubs, what to log for custody, how to work a discrepancy when the count is off, and which KPIs actually tell you whether any of it is working. No inventory philosophy. Just the audit mechanics.
Start by admitting where the leaks actually are
Before building any cadence, it helps to know what you're actually chasing. Across service fleets, shrinkage clusters in a few predictable spots — and they're almost never the dramatic ones.
-
Truck stock that never got consumed off a job. Tech uses the part, forgets to mark it, van count says 4 when there are 2.
-
"Grab-and-go" from the warehouse hub where nobody scans anything because it's faster to just take it.
-
Warranty and defective parts that get pulled off a job, thrown in a bin, and never reconciled — so they read as both "used" and "returned."
-
Cross-van borrowing. Tech A is short a TXV, texts Tech B, meets in a parking lot, and two van counts are now wrong at once.
-
High-theft, high-resale items — copper line sets, refrigerant, whole condensing units staged for install. Smallest category by frequency, biggest by dollar value.
The pattern worth noticing: the volume of shrinkage is administrative (bad logging), but the dollars concentrate in a handful of SKUs. That split should drive your entire audit design. Count cheap stuff rarely, expensive stuff constantly.
Audit cadence: match frequency to dollar risk, not to the calendar
The mistake most shops make is picking one audit rhythm for everything — usually a painful annual count where they shut down a Saturday and hate their lives. It catches nothing useful because a year of drift is impossible to trace back to a cause.
Eliminate scheduling chaos and missed jobs.
Coolyly helps HVAC companies book, coordinate, and track every service efficiently.
- Unified appointment & dispatch management
- Automated client notifications
- Technician scheduling & job tracking
No credit card required
| Part tier | Examples | Audit frequency | Who counts |
|---|---|---|---|
| A – High value / high theft | Refrigerant, compressors, copper line sets, condensing units | Weekly (and at every van handoff) | Manager or lead, second signature required |
| B – Mid value / high movement | Motors, control boards, TXVs, contactors in bulk | Every 2 weeks per van, rotating | Tech self-count, spot-verified |
| C – Low value / high volume | Capacitors, fuses, wire nuts, fittings | Quarterly | Tech self-count |
The point of tiering is that you're never doing a full fleet count at once, so nobody dreads it. On any given week you might be auditing A-tier across all six vans — takes maybe 15 minutes each — plus B-tier on two rotating vans. It spreads the load and keeps the look-back window short. When an A-tier count is off, you're only reconstructing seven days of jobs, not a year.
One rule that pays for itself: audit A-tier at every van reassignment. The moment a truck changes hands between techs, count the expensive stuff before the new guy takes the keys. It removes the "it was already gone when I got it" argument permanently, and it's probably the cleanest way to assign accountability without turning the whole thing into an interrogation.
If you haven't nailed down what should be on each van in the first place, you're auditing against a moving target. Getting your par levels and kitting logic straight — the work covered in optimizing HVAC service-van inventory with kitting rules and reorder math — is the prerequisite. You can't audit against a baseline you never set.
Custody logging: every part has a name attached at every moment
Shrinkage control is really custody control. At any given moment, every part in your system should be attributable to a location and a person — warehouse, van, or job, and whose hands. When that chain breaks, that's where parts disappear.
-
Warehouse-to-van transfers get scanned, both directions. No exceptions for "I was in a hurry." If a tech restocks off the hub shelf, it comes off the hub count and onto the van count in the same action. The parking-lot version of this — grabbing parts without logging — is the number one source of drift.
-
Van-to-job consumption gets logged on the work order, not from memory at end of day. Memory at 7pm after eight calls is where two capacitors become "eh, I used some." The part comes off van stock the moment it's attached to a job.
-
Van-to-van transfers require both techs to confirm. One releases, one receives. If your logging can't handle a two-party transfer, that's a hole every borrowed part falls through.
-
Removed defective/warranty parts get their own custody state — not "used," not "in stock." They're "pulled, pending return." Otherwise your books think you have a part you're actually shipping back to the supplier.
The reason this matters more than people expect: shrinkage investigations fail almost entirely because of timing gaps, not missing scans. A part scanned onto a van Monday and counted missing Friday, with five undated jobs in between, is basically unsolvable. The same part with timestamps on every state change is a 30-second lookup. Custody logging isn't really about catching thieves — it's about making the timeline reconstructable after the fact.
This is also where fragmented systems quietly sabotage you. If your dispatch board, work orders, and inventory counts live in three tools that don't talk to each other, the custody chain snaps at every seam. Keeping those data flows connected — the theme of avoiding integration chaos across sensors, CRM, inventory and dispatch — is what lets a "part used" event on a work order automatically decrement the right van's count. Without that link, you're re-keying data, and every re-key is a chance to lose a part on paper.
The diagram below shows how a part moves through custody states from the moment it leaves the warehouse to when it's either consumed on a job or returned as a warranty pull:
Require a second signature for A-tier transfers during van handoffs to lock down custody at reassignment.
Walking through that sequence makes it easier to spot exactly where your current process has gaps, because most shops can point to one or two transitions where nobody is logging anything consistently.
The discrepancy workflow: what to do when the count is off
A count being off is normal. What separates shops that fix shrinkage from shops that just complain about it is having a default response that fires the same way every time — so a discrepancy becomes a workflow, not a mood.
-
Flag the variance with a dollar value, not a unit count. "Van 3 is short 2 contactors and 1 board" means nothing to a busy owner. "$210 variance on Van 3, A/B tier" tells you whether to act now or note it.
-
Auto-check the obvious first. Was it consumed on a job that didn't get logged? Pull the last week of that van's completed work orders and look for jobs where a part should have appeared but didn't. Roughly two-thirds of variances resolve right here — it was used, just not recorded.
-
Check transfers. Did another van receive it? Cross-van and warehouse restocks explain most of the rest.
-
Only what survives steps 2–3 becomes a real investigation. This is the number that matters. Unexplained-after-reconciliation shrinkage is your true loss rate. Everything else was a logging failure you can train out.
-
Log the cause code. "Unlogged consumption," "transfer gap," "warranty pull," "genuinely unaccounted." Over a quarter, these codes tell you exactly what to fix — and it's almost never "hire a security guard." It's usually "fix how we log job consumption."
A quick checklist for running a clean discrepancy review:
-
Variance stated in dollars and tier
-
Last 7 days of van work orders pulled
-
Transfer log checked both directions
-
Warranty/defective bin physically inspected
-
Cause code assigned
-
Repeat-offender SKU flagged (same part short three counts in a row = process problem, not people)
That last bullet is the one people skip. When the same SKU goes short repeatedly, the problem is structural — a par level that's wrong, a kit missing a component so techs grab loose, or a part that's easy to over-pull. Chasing the tech is a waste of time. Fix the SKU.
The cause code log is also what gives you something concrete to show techs during a team meeting without making it feel like an accusation. You're talking about patterns in the data, not pointing fingers at individuals. That distinction matters more than most owners realize — the moment techs think audits are about blame, honest variance reporting dries up fast.
KPIs: connect shrinkage to cost-per-job and fill rate, or nobody will care
Shrinkage stays invisible because it's tracked as an inventory metric, and inventory metrics don't reach the P&L conversation. The fix is translating it into the two numbers owners actually watch: cost-per-job and fill rate.
The dashboard that works has four tiles:
-
Shrinkage rate (%) — unexplained-after-reconciliation loss ÷ total parts consumed. This is your true rate. Track it per van, not just fleet-wide, so accountability has a home.
-
Shrinkage dollars per completed job — total unaccounted loss ÷ jobs completed. This is the tile that gets attention, because it lands right on top of cost-per-job. A shop bleeding even $6–$9 of unaccounted parts per job across 900 jobs a month feels it.
-
Fill rate impact — how often a tech arrived at a job without a part the van should have had. Shrinkage doesn't just cost part dollars; it causes second trips. A missing $18 capacitor that turns into a return visit costs you a whole truck roll.
-
Days-since-last-clean-count per van — a simple aging indicator so no van drifts unaudited.
The fill-rate tile is the one owners consistently underrate. When van stock is quietly wrong, techs discover it mid-job, and every "I need to run to the supply house" is lost billable time plus a slower response for the next customer. Tie shrinkage to second-trip rate and suddenly the audit program isn't an accounting chore — it's a customer-experience problem worth fixing fast.
A real scenario
A five-van residential shop in a mid-size metro was running annual counts and "felt" like parts were tight but couldn't put a number to it. They were completing somewhere around 700–800 jobs a month. When they finally broke consumption down by cause code over one quarter, the picture was almost boring: roughly 70% of variances were unlogged job consumption, another 20% were transfer and warranty gaps, and only about 10% was genuinely unaccounted.
That 10% still added up to somewhere in the $2,400–$3,000 range per quarter in flat-out lost parts — but the bigger surprise was fill rate. Techs were hitting a "part I thought I had is gone" moment on around 4–5% of jobs, and a chunk of those became return visits.
They didn't add security cameras or lockboxes. They moved A-tier to weekly counts with a mandatory second signature at van handoffs, forced part-consumption logging onto the work order at the moment of use instead of end-of-day, and built the four-tile dashboard. Within about two months the unaccounted portion dropped by more than half, and dispatch noticed fewer scramble calls before they ever saw it in a report. Nothing dramatic in any single week — just the fog clearing.
When this level of rigor makes sense — and when it doesn't
Do this if you're running three or more vans, carrying A-tier value (refrigerant, compressors, copper) on trucks, and you can't currently answer "what's my real shrinkage rate?" with a number. At that scale the fog is definitely costing you and the audit cadence pays for itself quickly.
Skip the full tiered program if you're a one- or two-truck operation where the owner personally stocks and counts. The overhead of formal custody logging outweighs the loss when one person already has eyes on everything. A simple weekly A-tier count is plenty.
Don't do this as a surveillance project aimed at catching a specific tech. If you build the whole program to trap one person, you'll get a compliant-looking system and a demoralized crew — and the real driver, sloppy logging, never gets fixed. The moment techs believe audits are about blame instead of accuracy, they stop reporting honest variances, and your data goes dark exactly where you need it most.
The one thing to get right first
If you take only one action, make it this: log part consumption at the moment of use, on the work order, not from memory at end of day.
Every downstream metric — shrinkage rate, cost-per-job impact, fill rate — is only as trustworthy as that single event. Most shops that think they have a theft problem actually have a timing problem, and closing the gap between "part used" and "part logged" resolves the majority of variance before you ever run a formal audit.
Get the consumption logging tight, set your tiered cadence so nobody dreads the count, keep the custody chain unbroken between dispatch and inventory, and put shrinkage on the same dashboard as cost-per-job. Do that and the parts stop walking off — not because you locked anything up, but because there's finally nowhere for them to hide.
Ready to optimize your HVAC operations?
Join hundreds of HVAC businesses using Coolyly to save time, improve technician utilization, and enhance customer satisfaction.