Most small warehouses do one full stock-take a year, it takes a weekend, everyone hates it, and the numbers are stale within a fortnight. Cycle counting replaces that with small, frequent counts of part of the warehouse, so the register stays roughly true all year and nobody loses a Saturday.
The reason teams do not adopt it is friction. If a count means a clipboard and then an evening of typing, it will not survive contact with a busy week. Removing the transcription step is what makes the habit stick.
Why the annual stock-take is the expensive option
- Manual entry produces errors at a rate you will not notice until you are chasing a discrepancy months later.
- A single annual count means eleven months of drift before anyone finds a problem.
- Shrinkage discovered in December cannot be traced to a cause in March.
- Counting everything at once requires stopping operations; counting one aisle does not.
The free way to do it
A Google Form linked to a Sheet, with fields for location, item code, and quantity. It costs nothing and it works for a small stockroom. Start here if that is you.
Two things go wrong at warehouse scale. There is no camera scanner, so someone reads a barcode and types thirteen digits, per item, which is where the errors come from. And dead zones exist in every warehouse — a submission with no signal is lost rather than queued, and you find out when the numbers do not add up.
Scanning into a Sheet instead
The alternative is a scanner that writes rows directly. QR to Sheets does this, so treat this section as interested but specific: you connect a Sheet, create a scanner link, and whoever is counting opens the URL on their phone. Every scan appends a row, and scans are held on the device and synced when signal returns — which is the part that matters in a metal-racked building.
| Free / do it yourself | Hosted scanner link | |
|---|---|---|
| Cost | Free | Free to 300 scans, then $7 per device per month |
| Barcode capture | Read and type by hand | Camera scan |
| Dead zones | Submission lost | Buffered on device, syncs later |
| Two counters at once | Possible, no attribution | One device licence each, attributed |
| Duplicate suppression | None | Code must leave frame before re-accepting |
| Where the data lives | Your Google Sheet | Your Google Sheet |
Reading the variance
The count log is raw data; the value is in the comparison. Keep the scan log append-only and build the analysis on top of it.
- Counted versus expected per location, so you know where to look rather than what to panic about.
- Repeat offenders: the same SKU short every count usually means a process problem, not theft.
- Direction matters. Consistent overs often mean receiving errors; consistent unders mean picking errors or shrinkage.
- Track count coverage too — which zones have not been counted this quarter is as useful as the variances themselves.
Store barcodes as text, not numbers. Long numeric codes lose leading zeros and can hit float precision problems, which produces phantom variances that waste a morning.
Making the habit survive
- Put the rotation on a shared calendar with a named owner per zone.
- Keep each count under 30 minutes. Long counts get skipped.
- Count at the same point in the day, ideally before receiving or after dispatch, so you are not counting stock that is mid-move.
- Review variances the same day, out loud, with the people who were on shift.
- Do not punish variances. The moment a count becomes a blame exercise, the numbers start being tidied before they are entered.
Step by step
- 1
Split the warehouse into count zones
Divide by aisle, rack, or bin group so one zone is a 15 to 30 minute job. The entire point of cycle counting is that no single count is daunting enough to be postponed.
- 2
Label the locations, not just the items
Print a code for every shelf, bin, and rack face. Counting is then scan-location, scan-items, move on — and a variance can be traced to a place rather than a vague area.
- 3
Set the rotation
High-value or fast-moving zones weekly; everything else monthly or quarterly. Write the schedule down. A rotation that lives in someone's head stops happening the first busy week.
- 4
Count by scanning into a Sheet
One row per scan: timestamp, location, item, who counted. Do not type quantities into a form — scan each unit, or scan the item once and enter a count beside it.
- 5
Review variance the same day
Compare counted against expected while the picker who moved the stock is still on shift and can remember. A variance reviewed a month later is unexplainable.
Frequently asked questions
What is cycle counting?+
Counting a small part of your inventory on a rotating schedule rather than counting everything once a year. High-value or fast-moving stock is counted more often. The register stays approximately accurate all year, and no single count is disruptive.
Can I do cycle counting in Google Sheets?+
Yes, and for small operations a Sheet is genuinely enough. Keep an append-only log of one row per scan, then compare counted against expected with a pivot table. The hard part is not the spreadsheet, it is capturing barcodes without typing them.
How do I scan barcodes into Google Sheets in a warehouse with no signal?+
You need something that buffers locally. A Google Form submission with no connection fails and is lost. A scanner that saves each scan to the device first will keep working through dead zones and sync when signal returns.
How often should I cycle count?+
Weekly for high-value or fast-moving zones, monthly or quarterly for the rest. The right answer is whatever rotation you will actually sustain — a monthly count that happens beats a weekly one that does not.
Do I need a dedicated barcode scanner gun?+
Not for counting at this scale. A phone camera reads Code 128, EAN-13, UPC-A and the other common formats perfectly well. A gun is faster for sustained high-volume receiving, but it is not the barrier to starting.