Description
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.
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.
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.
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.
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:
Full feature comparison and pricing · Read the full documentation — scanning, blind counts, counting modes, variance review, restore points and the Pro reports.
External services
This plugin can connect to Freemius (freemius.com) to power the optional Pro upgrade: licence activation, automatic updates for the paid version, and the checkout/upgrade screens. Nothing is sent unless you opt in. If you click “Allow & Continue” during the optional opt-in, non-sensitive environment data (site URL, WordPress and PHP versions, active theme/plugins and your admin email) is sent to Freemius to enable licensing and updates; if you skip it, no data is transmitted. Freemius is only contacted for these upgrade/licensing actions.
- Freemius Terms of Use: https://freemius.com/terms/
- Freemius Privacy Policy: https://freemius.com/privacy/
Screenshots






Installation
- Upload the
stocktake-for-woocommercefolder 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.
FAQ
-
What is a cycle count, and how do I run one in WooCommerce?
-
A cycle count checks part of your stock on a regular cycle instead of counting everything at once. Scope a session to selected categories or your highest-value lines, count them, review the variance and apply — then repeat next cycle. Because each session takes a snapshot, you can cycle count while the shop keeps trading.
-
How do I run an inventory audit in WooCommerce?
-
Start a session to snapshot expected quantities, count the shelf, and Stocktake shows the difference product by product in units and in money. Every apply writes a restore point first, so an inventory audit leaves a reversible trail rather than a set of manual stock edits. Export the count sheet to CSV for your records.
-
Is there stocktake software for WooCommerce that works without a separate system?
-
Yes — this plugin is the stocktake software, and it runs inside WooCommerce. There is no external inventory platform to sync, no CSV round-trip and no separate app to install on each counter’s device: the count screen opens in a phone or tablet browser.
-
How do I do a physical stock count in WooCommerce?
-
Start a stocktake session, then enter counted quantities by scanning barcodes and SKUs or by typing them in. Stocktake compares your count against a snapshot of expected stock and shows the variance for each product. When you are finished, one click adjusts WooCommerce stock to match, and your previous levels are backed up automatically in case you need to undo. This replaces editing each product’s stock quantity one by one.
-
Can I count while the store is open, or do I have to close it?
-
You can count while the store stays open. Stocktake records a snapshot of expected quantities when the session starts, so ongoing sales during the count are handled against that baseline. Partial spot counts and cycle counts also let you check sections of the catalogue without pausing trading.
-
Why is my WooCommerce stock wrong or showing incorrect stock levels?
-
System stock drifts from reality for many reasons, including caching, variable-product stock quirks, bad CSV imports, and concurrent sales. A physical stock count is the most reliable way to bring your records back in line with what is actually on the shelf. That is what a stocktake does: count, review the variance, and reconcile in one click — stock reconciliation you can hand to your accountant.
-
What is a blind stock count and why would I use one?
-
A blind count hides the system’s expected quantity from the counter, so they record what they actually find rather than confirming the number on screen. This removes confirmation bias and produces a more honest count. Blind count is included free and can be toggled per session.
-
How do I count inventory with a barcode scanner in WooCommerce?
-
Connect a USB or Bluetooth barcode scanner and scan items to count them by barcode, SKU, or product name. Each scan counts the item on the spot. For smaller counts you can also use phone-camera barcode scanning, which is currently in Beta.
This is barcode inventory counting in the ordinary sense: the scanner types for you, and each scan counts the item on the spot.
-
Can I use my phone camera as a barcode scanner to count stock?
-
Yes, phone-camera barcode scanning is available as a Beta feature and works well for small counts. For counting hundreds of items, a dedicated USB or Bluetooth scanner is faster and more reliable, and both are fully supported.
-
Is there a stocktake app I need to install on my phone?
-
No. There is no separate app to download, and nothing to set up on each counter’s device. The count screen is built to work in a phone or tablet browser: sign in to your store’s admin on the device, open the running session, and start scanning. Because the counting happens in your own store rather than in a third-party app, the counted quantities never leave your site.
-
How do I bulk update WooCommerce stock after a physical count?
-
You do not need CSV round-trips or a bulk editor. After counting, one-click stock adjustment writes your counted quantities to WooCommerce. Before it applies, Stocktake backs up your current stock automatically, so a single undo restores the previous levels if something looks off.
-
How do I see stock variance, and can it show inventory shrinkage in money?
-
Stocktake shows the variance between counted and expected quantities for every product, and can express that variance in money when WooCommerce Cost of Goods data is set. Pro adds an accuracy and shrinkage trend so you can track how your count accuracy develops over time.
-
Is this a stocktake tool or a stock management system?
-
It is a stocktaking tool, not a stock control system. It will not raise purchase orders, hold supplier records, or run your stock day to day. It does one job properly: count what is physically on the shelf, show the variance against WooCommerce, and post the correction. If your stock already lives in WooCommerce, this is the stock take that keeps it honest.
-
How often should I do a stocktake versus a full inventory count?
-
A common approach is to cycle count high-value items frequently, count mid-value items periodically, and run a full physical count at your financial year end — 30 June in Australia, your accounting year end in the UK. Stocktake supports both full or zero-based counts and partial spot cycle counts, and Pro adds scheduled reminders to keep the rhythm.
-
Can I pause and resume a stock count?
-
Yes. You can resume an unfinished count at any time, so a large stocktake can span breaks, shifts, or multiple days without losing progress.
-
What is the difference between a quick stock check and a full stocktake?
-
A full stocktake is a session-based count of many products with variance review and a one-click apply. The Pro quick stock check is for one-off fixes: scan any single product, correct its live stock on the spot, and have the change recorded in an audit log. Use stocktakes for periodic counts and quick checks for spot corrections.
-
Can multiple people count at the same time?
-
Yes, in Pro. Multiple counters can work with their contributions attributed to them, and a recount and approval workflow lets a supervisor review before stock is applied.
-
Can I value my inventory with this plugin?
-
Yes. Pro inventory valuation reports the value of your stock at both retail and cost, with a per-category breakdown. In the free version you can also see variance value when WooCommerce Cost of Goods data is set.
-
What can I export?
-
The free version exports count results, variance, and the reorder or low-stock shortlist to CSV. Pro adds branded PDF count sheets and Excel (XLSX) export.
-
Does it work with product variations?
-
Yes — each stock-managed variation is counted as its own line. Scanning a variation’s barcode (its SKU or the WooCommerce GTIN/UPC/EAN/ISBN field) counts that exact variation, and applying updates that variation’s stock.
-
Where can I find the documentation?
-
Full documentation lives at erenlabs.net/stocktake-for-woocommerce/docs — getting started, scanning and barcodes, blind counts, counting modes, variance review, applying stock safely, restore points, the Pro reports, and a troubleshooting section for the questions that come up most.
-
Which barcodes are recognised?
-
A scanned code is matched against the SKU first, then against WooCommerce’s own GTIN / UPC / EAN / ISBN product field (WooCommerce 9.2+). Both work for products and variations.
-
Which third-party libraries are bundled?
-
This plugin bundles the ZXing barcode library (@zxing/library, MIT license,
https://github.com/zxing-js/library) at assets/js/vendor/zxing.min.js, used as a
fallback decoder for the phone-camera scanner when the browser has no native
BarcodeDetector. It is served locally and never loaded from a remote CDN. -
Does this plugin use any external services?
-
This plugin uses the Freemius SDK (https://freemius.com) for optional usage
tracking and for licensing/updates of the separate Pro version. On first
activation you are shown an explicit opt-in screen; NOTHING is sent anywhere
unless you click “Allow & Continue” — choosing “Skip” keeps the plugin fully
functional with no data leaving your site. If you opt in, Freemius receives
basic site data (site URL, WordPress/PHP versions, plugin version, admin email)
to provide update notifications and support.
Freemius terms: https://freemius.com/terms/
Freemius privacy policy: https://freemius.com/privacy/
Reviews
There are no reviews for this plugin.
Contributors & Developers
“Stocktake – Physical Inventory Count, Cycle Count & Inventory Audit for WooCommerce” is open source software. The following people have contributed to this plugin.
Contributors“Stocktake – Physical Inventory Count, Cycle Count & Inventory Audit for WooCommerce” has been translated into 1 locale. Thank you to the translators for their contributions.
Interested in development?
Browse the code, check out the SVN repository, or subscribe to the development log by RSS.
Changelog
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.
