Here's the answer up front: count A items monthly, B items quarterly, C items semi-annually. That's the industry-standard ABC cycle counting frequency table, and if all you wanted was the schedule, you can stop reading here.
But I've led more than 30 WMS implementations, and I can tell you the schedule was never the problem. The problem is always one of three things: the ABC classification is wrong, nobody fixes the root cause behind the variances, or the schedule sits in the WMS gathering dust. Get the frequency right and the rest wrong, and you're just counting for exercise.
Why frequency follows ABC: you're buying certainty
Cycle counting is spending labor to buy certainty, so spend it where the risk is. The textbook ABC split: roughly 20% of SKUs hold 80% of inventory value (A), 30% hold 15% (B), and the remaining 50% hold just 5% (C). Counting the 5%-value tail with the same intensity as the 80%-value head is like posting the same guard at the bank vault and the bike rack. Crude, but it's line one on every go-live checklist I write — because operations teams keep getting it backwards.
Dallas, 2023: the cost of one frequency for everything
Fall 2023, an auto parts distributor outside Dallas. Nine thousand SKUs. Their method: shut down for half a day on the last Friday of every month, everybody counts. Sounds responsible. Then I pulled three months of variance data before go-live: A items like brake rotors and turbochargers never matched the books, and on a monthly cadence every miss was discovered weeks late — wrong picks, stockouts, all firefighting after the fact. Meanwhile C items — screws, clamps, half the SKU base — got counted every month and the variance was always zero, because nobody touches them. Labor spent, accuracy flat. I've seen this exact movie three times, same script every time.
Ontario, California, 2024: right frequency, dead classification
Early 2024, a 3PL in Ontario, California — 40,000 square feet, 12,000 SKUs. They adopted the ABC schedule on my recommendation. Three months later, accuracy still wouldn't move. I went on site and found it: their ABC classification had been run once, at go-live, against the prior year's sales — and never touched again. A new key account's bestseller, top-20 in shipments within three months of launch, was still sitting in C getting counted twice a year. Two discontinued SKUs were still in A getting counted monthly. Right table, dead data. We switched to re-running ABC quarterly; accuracy climbed from 94% back to 98.5% in two months. The schedule didn't change. The classification did.
The ABC cycle counting frequency table (copy-paste version)
| Class | Share of SKUs | Share of value | Frequency | Counts/year | Tolerance |
|---|---|---|---|---|---|
| A | ~20% | ~80% | Monthly (biweekly for fast movers) | 12 | ±0.5% |
| B | ~30% | ~15% | Quarterly | 4 | ±1% |
| C | ~50% | ~5% | Semi-annual (or annual) | 2 | ±2% |
Sources for every number: the 80/15/5 value split and 20/30/50 SKU split are the classic ABC textbook ratios; 12/4/2 counts per year is the most commonly recommended cadence across industry cycle counting guides; the ±0.5%/±1%/±2% tolerances are standard thresholds in WMS implementation playbooks. The biweekly upgrade for fast-moving A items is my own project-level call — and the math below shows why it's affordable.
The five-step setup checklist
Step 1: Run ABC on 12 months of data, ranked by annual consumption value.
Pull per-SKU shipped quantity × unit cost for the last 12 months from your WMS or ERP. Twelve months smooths seasonality; if you're younger than a year, use what you have but re-run quarterly. Sort descending, compute the cumulative share: the top ~80% is A, 80–95% is B, the rest is C. Then hand-check the edges: a new launch selling well after six weeks belongs in A no matter what the trailing-twelve-month math says; discontinued SKUs get manually demoted to C. Never let the math overrule common sense — I've seen this exact failure three times, dead SKUs sitting in A getting counted every month for nobody's benefit.
Step 2: Load the frequencies into the WMS count scheduler.
Every SKU master record needs two fields: ABC class and next count date. Both. No exceptions. The WMS auto-generates the daily count task list, A tasks first, slotted in the morning when staffing is fullest. Non-negotiable: keep count tasks out of receiving peaks and wave-pick peaks. Counters and pickers fighting over the same aisle ruins both jobs.

Step 3: Blind counts, rotated counters.
The handheld shows the counter which location and which SKU — never the book quantity. Show people the book number and they'll subconsciously "find" it; reported accuracy inflates. Rotate counters across zones on a schedule so nobody develops blind spots for "their" area's discrepancies.
Step 4: Set tolerance and escalation rules.
A variance beyond ±0.5% (A), ±1% (B), or ±2% (C) triggers a same-day review, with the root cause classified within 24 hours: transaction error, misplaced stock, damage, or loss. Any SKU missing two cycles in a row gets temporarily promoted to A and recounted, regardless of its original class. The escalation rule matters more than the tolerance number — it's what turns counting into control.
Step 5: Close the loop monthly, re-run ABC quarterly.
The point of cycle counting isn't a clean count — it's needing fewer counts later. Every variance must land as a process fix: missed scans at receiving mean a receiving SOP change; labels falling off bins mean different label stock. Hold a monthly variance review and re-run ABC quarterly; when the class changes, the frequency follows. Classification is alive; the table is dead. Remember that line.
Do the math: what the frequency table really costs
Take a mid-size warehouse with 12,000 SKUs: 2,400 A items counted monthly = 28,800 count events a year; 3,600 B items quarterly = 14,400; 6,000 C items semi-annually = 12,000. Total: 55,200 count events a year. At 3 minutes per count — find the location, scan, confirm — that's 2,760 hours, roughly 1.3 full-time heads.
Here's the counterintuitive read: C items generate 22% of all count events but represent 5% of inventory value. Relax C from semi-annual to annual and you free about 6,000 events, roughly 300 hours — enough to move fast-moving A items from monthly to biweekly without adding headcount. The counting budget is fixed; ABC is budget reallocation, not extra spending. Most warehouses I walk into are over-counting C and under-counting A, which is exactly backwards.
Go-live checklist: the five ways this fails
- Classification never updated. See the Ontario story. Re-run quarterly, put it in the SOP, set the calendar reminder. Dead classification makes the best frequency table worthless.
- Non-blind counts. Counters "verifying" against visible book quantities will always report tiny variances. Across three of my projects, reported accuracy ran 3–5 points higher than blind-count reality. Inflated accuracy is more dangerous than low accuracy, because you don't know what you don't know.
- Variances adjusted, root causes ignored. Adjust the books and move on, and the same SKU shows the same variance next month. If three months of cycle counting hasn't changed a single SOP, the program failed — you're photographing the problem, not fixing it.
- One frequency for the whole warehouse. See the Dallas story. Either you shut down to count everything (expensive, disrupts operations) or everyone does a symbolic walk-through (counts nothing). The ABC table exists to replace both extremes.
- Confusing cycle counting with the annual audit. The wall-to-wall physical is a compliance exercise; cycle counting is an operations exercise aimed at everyday accuracy. Don't let one substitute for the other.
Last line: the frequency table is one search away — A12/B4/C2 is easy to memorize. The hard parts are three: quarterly classification refreshes, disciplined blind counts, and variances closed into process fixes. Do those three and the table means something. Skip them and you're counting for exercise.
By Lin Xiao, WMS Implementation Consultant







