Description
Most WooCommerce inventory plugins help you manage stock numbers. Stocktake for
WooCommerce helps you verify them against reality — the physical count process
that stores actually run.
Workflow:
- Create a session. Pick a scope (all products or selected categories). A
snapshot of current stock is taken so later sales don’t distort the variance. - Count. Open the count screen on a phone or tablet, scan a barcode (or type
a SKU), enter the quantity. Optional blind count hides the expected number
so counters aren’t biased. - Review variances. See expected vs counted, unit differences, and the value
of the discrepancy. - Apply. Post the counted quantities back to WooCommerce stock in one click.
- Export. Download the count sheet as CSV for your records.
Free core
- Unlimited stocktake sessions
- Snapshot-based variance (count while the store stays open)
- Counting modes: partial (spot count) and full / zero-based
- Barcode / SKU / product-name scan screen (USB & Bluetooth scanners)
- Phone camera barcode scanning — Beta (no hardware needed; some barcode types may not scan on every device — a handheld scanner or typing the SKU always works)
- Blind count
- Automatic stock backup before every apply, with one-click undo of the last apply
- Resume an unfinished count later (scans are saved as you go)
- Background snapshot for large catalogues
- Variance value using WooCommerce Cost of Goods meta (with a filter to override)
- Reorder shortlist — everything at or below its low-stock level (or out of
stock) with CSV export, plus a negative-stock warning - Count-completeness warning before a full/zero-based apply
- CSV export
- One-click stock adjustment
Pro
- Quick stock check — scan any product, see its live stock with a full
per-variant breakdown, and fix a quantity on the spot (audit-logged, with
configurable access for count staff) - Add-on-top (tally) counting mode — count box by box across passes
- Goods-in (receiving) mode — scanned quantities are added to current stock
- Full restore-point history — browse and roll back to any point
- Inventory valuation report — on-hand value at retail and at cost, per category, with a purchase-price field
- Insights — ABC count-priority classification and an accuracy & shrinkage trend across your stocktakes
- Per-session variance-by-category breakdown — see which part of the shop leaks stock
- Multiple counters with attribution (who counted what)
- Recount / approval workflow
- Scheduled / recurring count reminders
- Printable count sheets and branded PDF reports
- Priority email support
Third-party libraries
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.
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/
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
-
Does it change my stock automatically?
-
No. Counting only records numbers. Stock is changed only when you press
Apply adjustments. -
Will counting block sales?
-
No. Each session snapshots stock at creation time, so the store can keep selling
while you count. The variance is measured against the snapshot. -
Does it work with variations?
-
Yes — each stock-managed variation is counted as its own line. Scanning a
variation’s barcode (SKU or the WooCommerce GTIN/UPC/EAN/ISBN field) counts
that exact variation, and applying updates that variation’s stock. -
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.
Reviews
There are no reviews for this plugin.
Contributors & Developers
“Eren Labs – Stocktake for WooCommerce” is open source software. The following people have contributed to this plugin.
ContributorsTranslate “Eren Labs – Stocktake for WooCommerce” into your language.
Interested in development?
Browse the code, check out the SVN repository, or subscribe to the development log by RSS.
Changelog
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”.
1.1.17
- Variable products: parent-level (pooled) stock is now counted correctly as one
line; scanning any of its variations lands on that line, and per-variation
SKUs can no longer count against the wrong sibling. - Fix: a recount saved after “Apply” is now always pushed on the next Apply,
while items whose count matched the records are never touched — sales made
during the stocktake are preserved exactly. - Reports: Pulse/Insights pages now stay fast and light on huge catalogues,
exclude trashed products, respect the shop timezone, and exports stream
any catalogue size without memory limits or skipped rows. - History gains paging past 300 entries; goods-in sessions export the received
quantity; presets are addressed by stable ids (stale tabs can no longer
delete the wrong preset); many smaller fixes from the second code audit.
1.1.16
- Security & reliability: reject counting/adjusting draft or trashed products;
validate quantities; guard against concurrent Apply double-counting stock;
the auto-backup now aborts Apply if it can’t be fully written. - Fix: Undo now rolls back each Apply wave correctly; a failed save no longer
freezes the counting screen; blind counts no longer leak expected quantities. - Fix: comma decimals (12,5) are accepted; upgrade/activation edge cases,
the count reminder after reactivation, and full data cleanup on uninstall. - Adds a Cancel button to a stocktake; clearer export column and safer CSVs.
1.1.15
- Fix: the admin menu icon rendered as a plain white square on some
colour schemes; the brand icon now displays in full colour.
1.1.14
- i18n: the checkout now opens in the plugin’s selected language where
supported (EN/ES/DE/FR/IT), with automatic detection elsewhere.
Older releases: see the changelog.txt file shipped with the plugin.
