Stocktake for WooCommerce is stocktake software that lives inside the store you already run. It takes a physical inventory count, a routine cycle count or a full inventory audit, measures it against the stock numbers WooCommerce already holds, shows you exactly where the two disagree — in units and in money — and writes the correction back in one click.
It is not a stock management system and does not try to replace one. WooCommerce already has a stock field and everyone uses it. The gap is what happens when the shelf and that field stop agreeing, which they always do. This plugin closes that gap and leaves a record of how it was closed.
https://www.youtube.com/watch?v=NeEbjDATRIc
Count without closing the shop
The core is snapshot-based variance. The moment a session starts, Stocktake records the expected quantity of every product in scope. From then on the count is measured against that snapshot rather than against a moving number — so a stock count can run during trading hours while orders keep arriving, and the sales that happen mid-count do not corrupt the result.
Scope a session to the whole catalogue or to selected categories. Stop halfway through the afternoon and pick it up the next morning; an unfinished count stays exactly where you left it.
https://www.youtube.com/watch?v=5NfASOkMaBA
Scan with a barcode gun, or with the phone in your pocket
Barcode inventory counting works with any plain USB or Bluetooth scanner — the kind that simply types. Scan and the item is counted on the spot; the cursor never leaves the scan box, so you move from one item to the next without touching the keyboard. Scan the same product twice and it adds on top (5 + 1 = 6, shown as it happens). Anything that needs correcting is corrected on the editable list of what you just scanned.
No scanner? The count screen opens in a phone or tablet browser with phone-camera barcode scanning (Beta). There is no stocktake app to install on each counter's device — you send them a link. Products can also be found by SKU or by name when a barcode will not read.
A full physical count, cycle counts and spot checks
Count the way the job actually needs:
- Full or zero-based count — the year-end, count-everything exercise your accountant asks for.
- Cycle count — a rolling count of part of the catalogue, so high-value lines get checked often and the rest get checked eventually. Nobody counts everything every month; this is how counting programmes survive contact with a real week.
- Partial spot count — one aisle, one supplier, one category, because something looks wrong.
- Blind count — the expected quantity is hidden, so the person counting records what is on the shelf instead of confirming what the screen already told them.
https://www.youtube.com/watch?v=hFeisudDxy4
Variance you can read, and inventory reconciliation in one click
As counted quantities arrive, the difference against expected stock appears product by product: what the system believed, what was found, the unit gap, and — when WooCommerce Cost of Goods data is set — what that gap is worth in real money. A count that ends "we are forty units short" is an observation. A count that ends "forty units short, and here is what they cost" is a decision.
When the numbers are right, one click applies them. Every apply takes an automatic backup first, so a single undo restores the previous levels if something was posted in error. Export the count sheet to CSV at any point for your own records.
https://www.youtube.com/watch?v=AiEC_o9mL5A
A stock audit that leaves a trail
Editing stock quantities by hand leaves nothing behind. A count run here does: every apply writes a restore point before it changes anything, so the inventory adjustment stays reversible rather than final. Pro keeps the full stock audit trail of applied counts, so you can look back at what changed, when, and by how much.
Who this is for
Shop floor and stockroom teams who count physical stock. Warehouse staff who need a count that survives a busy day. Bookkeepers and accountants who need a year-end number they can defend. And store owners who have been fixing stock quantities one product at a time and would like that afternoon back.
Free
- Unlimited stocktake sessions, for counts of any size
- Snapshot-based variance — count while the store stays open
- Full, zero-based, partial spot and cycle counts
- Scan to count by barcode, SKU or product name; phone-camera scanning (Beta)
- Blind count mode; pause and resume an unfinished count
- One-click inventory reconciliation, with an automatic backup and undo
- Variance in units and in money when Cost of Goods data is set
- CSV export; reorder and low-stock shortlist; negative-stock warning
- Works with product variations
Pro
Stocktake Pro adds quick stock check, tally and goods-in counting modes, a full stock audit trail of restore points, inventory valuation at retail and at cost with a per-category breakdown, ABC insights with a shrinkage trend, multiple counters with attribution, recount and approval, scheduled count reminders, printable count sheets, PDF reports, Excel export and priority support.
A store-wide count tells you the shop is short. It does not tell you where — and "where" is the only part you can act on. The Pro inventory audit breaks the variance down by category, so the department losing stock stops hiding inside the store total:
https://www.youtube.com/watch?v=_9UXOEX3lNE
Full feature comparison and pricing ·
Read the full documentation — scanning, blind counts, counting modes, variance review, restore points and the Pro reports.
- Upload the
stocktake-for-woocommerce folder to /wp-content/plugins/.
- Activate the plugin through the Plugins menu in WordPress.
- Go to Stocktake in the admin menu and create your first session.
WooCommerce must be installed and active.
1.1.32
- Fixed: counting while the shop stays open. Each count now remembers the stock it was taken against. A sale made before a shelf was counted no longer shows up as missing stock, and Apply no longer puts back units sold after their shelf was counted - it adds the difference the count found to the current stock.
- Improved: the free admin stylesheet no longer carries styling for screens only Pro has.
1.1.31
- Security: the bundled Freemius SDK is updated to 2.13.5, a security release that closes a stored cross-site scripting issue in its admin notices and two lower-severity issues. Update recommended.
- Fixed: in a full count, a product the counter scanned by mistake and then removed was listed in the CSV export as "counted 0" with its whole stock as a loss, and the session table showed it as "0 · uncounted". Both now leave it alone, exactly as Apply already did.
- Fixed: the full-count warning "N products will be set to 0" no longer counts those removed lines, so the number matches what Apply actually zeroes.
- Pro: saving a variable product with the Variations tab open could store an invalid purchase cost on the parent (or stop the save on PHP 8). Each variation's cost box now posts under its own name.
- Tested with WooCommerce 11.2.
1.1.30
- Improved: the Eren Labs Store Suite section on the upgrade screen now makes the case for each of the six plugins - a sample screen, what it does, who it suits, its own price and a link to its page - beside the bundle arithmetic and a purchase box.
- New: the upgrade screen answers four questions about counting a live shop, and shows the three steps from buying a licence to seeing the Pro screens.
- Translations: the new upgrade-screen text is translated in all seven bundled languages, along with older strings that had stayed English - the review request and the "stock is held on the parent product" notice.
- Hardened: request values read on the plugin's admin screens are now sanitised where they are read. No change in behaviour.
1.1.29
- New: Eren Labs Store Suite — the upgrade screen now shows the six-plugin suite and its single-licence bundle.
- New: the plugin accepts a Store Suite bundle licence; one key activates every Eren Labs plugin installed on the site.
1.1.28
- Compatibility: tested up to WooCommerce 11.1.
- Readme: the Freemius opt-in disclosure now has its own External services section (it was only in the FAQ).
1.1.27
- Updated: bundled Freemius SDK 2.13.4.
1.1.26
- Listing: the description now describes the stock take and inventory count workflow directly; the bundled-library and external-service notes moved to the FAQ.
- Fixed: Apply could time out on a large count; it now runs in batches.
- Fixed: a barcode the till could scan was not found during a count, and a variation's own SKU is now searchable in the count box.
- Fixed: the count screen could show a shortfall Apply would then refuse; the counted-quantity ceiling is enforced on the server as well.
- Fixed: a count the database refused was reported as saved; the scanner is now told, so the item can be scanned again.
- Fixed: Apply and Undo take the same lock, and Undo says when there was nothing to restore.
- Fixed: the per-category variance table now ignores forgotten extra rows, matching the summary.
- Improved: the phone-camera scanner keeps the screen awake, survives a tab switch, closes on Escape and no longer closes on a stray tap.
- Improved: a variation is valued at the cost its parent carries, and a cost typed here is shared with sibling Eren Labs plugins.
- Fixed: uninstall removes every option and finishes on multisite and with an object cache; other plugins' notices are hidden on Stocktake screens rather than removed.
- Updated: bundled ZXing decoder 0.23.0. The Free vs Pro comparison and the upgrade page meet WCAG AA contrast.
- Tested with WooCommerce 11 and WordPress 7.1.
1.1.25
- Fixed: an undo that could not restore every product still reported plain
success. If a product was deleted between applying a stocktake and undoing it,
the screen showed a green "Reverted N products" and said nothing about the ones
it could not reach. The restore point was always kept so the undo could be
retried — but nobody was told to retry it. The session screen now names the
products that could not be restored and says the restore point is still there.
- Fixed: a full (zero-based) count could set a product to 0 that nobody counted.
Scanning an item that was outside the count's scope adds it to the session; if
the counter then removed that count with the ✕, the line stayed behind as
"not counted", and a full count treats not-counted as zero. Lines added during
a count are now exempt from that rule — removing their count means "forget this
line", never "this line is empty".
1.1.24
- Fixed: stock variances were valued at the retail price instead of the cost
price on stores that record cost in WooCommerce's own Cost of Goods field.
WooCommerce treats that field as internal meta and hands back nothing while
the Cost of Goods feature is switched off, so the plugin fell through to the
shelf price without saying so — while the Valuation report, which reads the
database directly, showed the true cost. Same product, two different costs
depending on the screen. Cost is now read the same way in both places, and a
variation with no cost of its own inherits the parent's.
- Fixed: creating a stocktake logged two "called incorrectly" notices per
product on sites with debugging enabled. That was the same root cause and is
now silent.
1.1.23
- Compatibility: verified against WooCommerce 10.9 and WordPress 7.0. The
"WC tested up to" header now reads 10.9, so the incompatibility notice no
longer appears on up-to-date stores.
- Listing: added a walkthrough video and a link to the full online
documentation, so the answers to the common setup questions are one click
away instead of a support ticket.
- No functional changes to the plugin itself.
1.1.22
- The plugin is now listed as "Stocktake – Physical Inventory Count for
WooCommerce" — the same plugin and the same install; only the display name
is clearer about what it does. Listing and documentation refreshed.
- No functional changes.
1.1.21
A ground-up rework of the counting screen for real, non-stop scanning.
- One-scan counting: a recognised barcode — or a name-search pick, or a camera
read — is counted the instant it resolves. No quantity prompt, no dialog, the
cursor never leaves the scan box, so you scan one item after another at the
pace of the scanner. First scan counts 1.
- Scan the same product again and it adds on top, in every mode, with a clear
"5 + 1 = 6" note so an accidental double-scan can never pass unnoticed.
- Corrections moved to a big, editable panel for the item you just counted plus
an editable list of recent scans: adjust a quantity with the +/− stepper
(saved automatically) or remove a line entirely. No need to touch the screen
at all if the default of 1 is right.
- A product that isn't in this count's list is simply added and counted when you
scan it (you're holding it, after all) — with a quiet note, never a pop-up.
A code that matches no product shows an inline message with the scanned code.
- Hardware scanners are recognised even when the cursor sits in a quantity
field, and a barcode-sized quantity is refused — a stray scan is treated as
the next item, not saved as a count.
- New REST endpoint and audit-log event for removing a count (Pro's session
history shows these as "Count removed").
- Reliability: live-count reads are never served from a cache, and rapid or
overlapping scans are processed in order so no count is lost or double-counted.
1.1.20
- Fix: the bundled ZXing barcode library is back in the package — a packaging
step had been leaving assets/js/vendor/ out of the zip, which broke the
phone-camera scanner's fallback decoder on iOS.
- Directory housekeeping for WordPress.org: escapes all admin output through
wp_kses(), prepares every database query with placeholders, uses a more
distinct internal PHP namespace, and drops directory image files and build
metadata from the plugin package.
- Every Pro-only engine — the approval workflow, presets, scheduled
reminders, stock-check access layer and the Pro report helpers — now ships
exclusively in the separately distributed Pro build.
1.1.19
- Fix: Excel exports now declare a default cell style, so strict readers
(e.g. openpyxl) no longer warn about a missing default style. The files
always opened correctly in Excel; this makes them fully standard.
- Fix: a cancelled stocktake now shows "View" instead of "Count" in the list.
- Fix: the phone-camera scanner shows a clear message when the camera can't
start (unsupported browser or insecure context) instead of doing nothing.
1.1.18
- WordPress.org review compliance: the free plugin now contains no Pro code
at all — Pro-only counting modes and cost valuation live exclusively in
the separately distributed Pro build (nothing is locked or gated).
- All admin JavaScript is enqueued via wp_enqueue_script (no inline tags).
- Documents the optional Freemius opt-in under "External services".
Older releases: see the changelog.txt file shipped with the plugin.