Skip to content
Store Operations

How to Do a Stocktake in WooCommerce Without Closing the Shop

Run a physical stock count in WooCommerce without closing the shop: snapshot expected stock, scan to count, review the variance, reconcile in one click.

About Stocktake
Stocktake for WooCommerce — count, verify and adjust physical stock in one click

Every WooCommerce store reaches the same moment eventually: the product page says 12, the shelf says 9, and nobody can say when the other three left. A stocktake — a physical inventory count measured against what the system believes — is the only way to settle it.

This guide walks through running a stock count in WooCommerce from start to finish: how to snapshot expected quantities so ongoing sales don’t corrupt the result, how to count with a barcode scanner or by hand, how to read the variance, and how to write corrected quantities back to WooCommerce without editing products one at a time. You can do all of it while the shop stays open.

Why WooCommerce stock drifts from reality

WooCommerce is a system of record, not a witness. It faithfully stores what it was told, and plenty of things tell it the wrong number:

  • Shrinkage and breakage. Theft, damage and write-offs happen off-system by definition.
  • Receiving errors. A supplier ships 48 instead of 50 and the delivery note is signed anyway.
  • Returns handled outside the order. A refund issued manually without restocking, or a restock on an item that came back broken.
  • CSV imports. One column mapped to the wrong field rewrites hundreds of quantities in a second.
  • Variation quirks. Stock managed at the parent level on some products and the variation level on others, so the numbers you look at aren’t the numbers being decremented.
  • Failed, cancelled and abandoned orders. Stock reduction and restoration don’t always complete symmetrically.
  • Manual edits. Someone fixed a number by hand nine months ago and nobody wrote down why.

None of these are bugs you can patch. They’re the normal friction of selling physical things, and the only cure is periodically going out and looking.

A stocktake is not stock management

These two get conflated constantly, and it matters because the tools are not interchangeable.

Inventory management helps you steer the numbers going forward: purchase orders, suppliers, inbound stock, low-stock alerts, reorder points. It assumes the current quantity is roughly right.

A stocktake asks a different and more uncomfortable question: is the current quantity true? It’s a measurement, not a management process. You count reality, compare it against the record, and reconcile the difference.

You need both. But if your numbers have already drifted, no amount of purchase-order discipline will pull them back — you have to count.

The old way, and why it breaks down

Most WooCommerce stores start with one of two approaches.

The CSV round-trip: export products to a spreadsheet, print it, count on paper, type the counts back in, re-import. This works up to a point, but the export is stale the moment it prints, the re-import happily overwrites every sale that happened during the count, and you’re left with no record of what the discrepancy was — only a new number that appeared from somewhere.

Editing products one at a time: open a product, type a new quantity, update, repeat. Perfectly fine for thirty SKUs. Genuinely painful at three hundred, and there’s no undo if you realise halfway through that you were counting the wrong shelf.

Both approaches share the same structural flaw: they change your stock before you’ve had a chance to look at what changed and decide whether you believe it.

How to do a stocktake in WooCommerce, step by step

The workflow below uses Stocktake for WooCommerce, a free plugin that runs the whole count inside wp-admin. The sequence — snapshot, count, review, apply — is what matters, and it’s the same sequence a retail chain uses with far more expensive software.

1. Create a session and snapshot the expected stock

Stocktake for WooCommerce session list showing open and applied stock counts with progress and variance, beside the new stocktake form with counting mode and blind count options
A stocktake starts as a session: name it, choose full or partial, set the scope, and snapshot current stock as the baseline.

A stocktake starts as a session: a named count with a defined scope. Three decisions matter here.

Counting mode. A partial (spot) count only updates the items you actually scan — everything you don’t touch keeps its current stock. A full / zero-based count sets everything you didn’t count to zero, which is what you want for a genuine end-of-year audit and absolutely not what you want for a quick check of one aisle.

Scope. All stock-managed products, or a subset of categories. Narrow scope is your friend: a count you actually finish beats a count you abandon at 40%.

The snapshot. When the session is created, current quantities are recorded as a baseline. This is the detail that lets you keep trading while you count — the variance is measured against that frozen baseline rather than against a number that’s moving underneath you.

2. Count — scan, type, or both

Stocktake counting screen with a barcode scan box, an already-counted notice showing 7 plus 1 equals 8, and an editable list of recent scans
Scanning counts the item on the spot. Scan the same product again and it adds on top rather than overwriting what you recorded.

The count screen is designed for the actual physical motion of counting, which is: hold the scanner, look at the shelf, don’t touch the keyboard.

  • Scan to count. A recognised barcode is counted on the spot and the cursor stays in the scan box, so you can go item after item without stopping. USB and Bluetooth scanners both work.
  • Scan the same item again and it adds on top — 7 + 1 = 8, shown explicitly, so counting a mixed shelf doesn’t quietly overwrite what you already recorded.
  • No barcode? Type. The same box accepts a SKU or a product name.
  • Fix mistakes inline. Everything you just scanned stays on an editable list — correct a quantity without leaving the screen.
  • Phone camera scanning is available as a Beta feature and is genuinely useful for small counts. For hundreds of items a dedicated scanner is faster and more reliable, and honestly that’s what you should use.

One thing worth knowing about barcode matching: a scanned code is checked against the SKU first, then against WooCommerce’s own GTIN / UPC / EAN / ISBN field (WooCommerce 9.2 and later). Both work for products and variations — each stock-managed variation counts as its own line, so scanning the barcode on a Medium Blue counts the Medium Blue, not the parent.

3. Review the variance before anything changes

Stock variance report comparing expected and counted quantities per product with unit differences, variance value in money, and an Apply adjustments button
Expected vs counted, product by product, with the discrepancy in money. Nothing is written to WooCommerce until you press Apply.

This is the step the CSV workflow doesn’t have, and it’s the most valuable one. Nothing has been written to WooCommerce yet.

You get the count percentage, how many items came back with a variance, the net unit difference, and — if you’ve set WooCommerce Cost of Goods data — what the discrepancy is worth in money. That last number is what turns “some stock is missing” into a figure you can act on.

Read the outliers before you apply anything. A single item that’s off by 90 units is almost never shrinkage; it’s a units-of-measure mistake, a mis-scan, or someone counting a case as a unit. Recount those. The small, scattered discrepancies are the real ones.

4. Apply the adjustment — with a restore point

Restore points list showing automatic stock backups saved before each applied stocktake, each with a Restore button
Every apply is preceded by an automatic stock backup — an entire count can be rolled back from the restore points list.

One click posts the counted quantities to WooCommerce stock. Before it does, current levels are backed up automatically, and that backup stays in a restore-points list you can roll back from at any time.

This matters more than it sounds. The reason people put off stocktakes is not the counting — it’s the fear of a bulk write going wrong across the whole catalogue with no way back. An automatic restore point removes that reason.

5. Export the count sheet

Export the results and variance to CSV. Your bookkeeper will want it, and next year’s count is much easier to interpret when you can compare it with the last one.

Counting while the shop stays open

You don’t have to close. The snapshot taken at session start is the baseline for the whole count, so sales that land while you’re counting are measured against that frozen number rather than silently corrupting it.

That said, physics still applies. A few practical habits:

  • Count fast-moving sections during quiet hours. Not because the software can’t cope, but because it’s hard to count a shelf someone is buying from.
  • Use partial counts for anything you’re doing mid-trade, and save full / zero-based counts for a closed shop.
  • Pause and resume rather than rushing. A large count can span shifts or days without losing progress.

Blind counts: hide the expected quantity on purpose

Blind count session in Stocktake with expected quantities hidden and the phone-camera barcode scanner open over a barcode
Blind count hides the expected quantity so the counter records what they find, not what the screen suggests.

If the screen says 100 and the counter finds something in the high nineties, a surprising number of people will write 100. Not dishonestly — the brain treats a displayed number as the answer and the count as a confirmation. This is confirmation bias, and it quietly destroys the value of the exercise.

A blind count hides the expected quantity so the counter records what they actually find. It costs nothing, it’s a per-session toggle, and it’s the single easiest change that improves the quality of your data.

Use it whenever someone other than you is counting, and whenever the count has any consequence attached to it.

Full, partial and cycle counts: which one, when

TypeWhat it doesWhen to use it
Full / zero-basedEverything not counted is set to 0Fiscal year-end, shop closed, complete audit
Partial / spotOnly the items you scan are updatedOne aisle, one supplier, one problem category — while trading
Cycle countA recurring partial count on a rotationHigh-value or fast-moving lines, weekly or monthly

A rhythm that works for most small stores: cycle count your top-value items often enough that an error can’t hide for long, spot count anything that looks suspicious, and run one full count a year for the accounts. Chasing a perfect full count every quarter usually means you stop doing counts at all.

What to do with the variance you find

Applying the adjustment closes the loop, but it doesn’t answer anything. The count is only worth what you learn from it.

  • Investigate before you apply, not after. Once you’ve written the numbers, the evidence of what was wrong is gone.
  • Sort by value, not by units. Three missing units of a €400 item matter more than forty missing units of a €2 item.
  • Look for patterns, not incidents. If the same category is short every count, you don’t have a counting problem — you have a receiving, pricing or security problem.
  • Track the variance value over time. One count is a snapshot. A trend is a diagnosis, and it’s the number that tells you whether whatever you changed actually worked.

That trend is exactly why the count needs to be honest rather than flattering, and why blind counting is worth the small extra friction.

Getting started

If you want to try the workflow above, Stocktake is free on WordPress.org — unlimited sessions, barcode scanning, blind counts, variance review, one-click apply and automatic restore points are all in the free version. There’s a fuller breakdown of what’s included on the Stocktake feature page.

Start small. Pick one shelf, run a partial count with blind mode on, and look at the variance before you apply anything. That first number is usually the most informative one you’ll get all year.

Stocktake FAQ


Can I count stock while my WooCommerce store is open?

Yes. The session takes a snapshot of expected quantities when it starts, so the variance is measured against that frozen baseline instead of a number that moves while you count. Use partial counts while trading and save full / zero-based counts for a closed shop.


What is a blind stock count and should I use one?

A blind count hides the system’s expected quantity from whoever is counting, so they record what they actually find rather than confirming the number on screen. It removes confirmation bias and costs nothing. Use it whenever someone other than you is counting.


Do I need a barcode scanner, or can I use my phone?

USB and Bluetooth scanners are the fastest and most reliable option, and both are supported. Phone-camera scanning is available as a Beta feature and works well for small counts — for hundreds of items, use a dedicated scanner or type the SKU.


How do I bulk update WooCommerce stock after a physical count?

You do not need a CSV round-trip or a bulk editor. After counting, one click writes the counted quantities to WooCommerce stock. Current levels are backed up automatically first, so a single undo restores them if something looks wrong.


Does a stocktake work with product variations?

Yes. Each stock-managed variation is counted as its own line. A scanned code is matched against the SKU first, then against WooCommerce’s GTIN / UPC / EAN / ISBN field (WooCommerce 9.2+), so scanning a variation’s barcode counts that exact variation.


How often should I run a stocktake?

A common rhythm is to cycle count high-value or fast-moving lines weekly or monthly, spot count anything that looks suspicious, and run one full physical count a year for the accounts. Frequent small counts beat an annual count you keep postponing.


Keep reading

Related articles