How to Count Stock with Your Phone Camera (No Barcode Scanner Needed)
Scan barcodes to count WooCommerce stock: how code matching works, using a phone camera, when to buy a real scanner, and stock with no barcode.

You don’t need to buy hardware to start counting stock properly. A phone camera can read barcodes, and for a small count that’s genuinely enough.
It’s also not enough for everything, and articles that pretend otherwise waste your afternoon. This covers how barcode scanning in WooCommerce actually works, what a scanned code is matched against, where a phone is the right tool, and the point at which you should stop and buy a €30 scanner.
What “scanning to count” actually does
A barcode is just a number printed in a machine-readable shape. Scanning does three things in sequence: read the number, find the product that number belongs to, add one to its counted quantity.
All the useful design is in what happens between those steps. In a count screen worth using:
- The cursor stays in the scan box after every scan, so you never touch the keyboard between items.
- Scanning the same product twice adds rather than replaces — 7 + 1 = 8, shown explicitly, because a shelf gets counted in handfuls.
- An unrecognised code says so immediately rather than silently doing nothing.
- Everything you just scanned stays visible and editable, so a mistake is fixed on the spot rather than discovered next week.

That “adds on top” behaviour is worth checking in any tool you evaluate. If scanning overwrites, counting a bin in two passes silently destroys the first pass.
What a scanned code is matched against
This is the part that determines whether scanning works at all in your store, and it’s usually skipped.
A scanned string is matched in order against:
- The product SKU. If your SKUs are the barcode numbers, everything just works.
- WooCommerce’s GTIN / UPC / EAN / ISBN field. WooCommerce 9.2 added a dedicated field for this, separate from the SKU, on both products and variations. If you sell manufactured goods with printed retail barcodes, this is where those numbers belong.
The distinction matters because SKU and barcode are different things doing different jobs. A SKU is your internal identifier — you choose it, and it can encode whatever you like. A GTIN/EAN/UPC is a globally allocated number belonging to the manufacturer, and the same product carries the same one in every shop in the world.
Putting a manufacturer’s EAN into the SKU field works for scanning but makes a mess of everything else. Use the GTIN field for the printed barcode and keep your SKU as your own code.
Using a phone camera
Phone-camera scanning in Stocktake for WooCommerce is a Beta feature. Under the hood it uses the browser’s native barcode detection where the device offers it, and falls back to a bundled decoder library where it doesn’t — served from your own site, never a CDN.

What that means in practice:
- It needs HTTPS. Browsers won’t give a page camera access otherwise. Any live store already qualifies.
- Results vary by phone and by symbology. Recent Android and iOS devices with native detection are quick; older hardware leans on the fallback decoder and is noticeably slower. Some barcode types read more reliably than others.
- Light and focus decide everything. A well-lit, flat, undamaged barcode at 10–20cm reads instantly. The same code crumpled in a dim stockroom will fight you.
- There’s a photo-scan fallback for codes the live view won’t lock onto, plus zoom and torch controls.
Being direct about the trade-off: for twenty or fifty items this is a completely reasonable way to work, and it costs nothing. For four hundred items you’ll feel every extra half-second, and your arm will get tired holding a phone at focus distance.
Using a USB or Bluetooth scanner
Here’s the thing most people don’t realise about barcode scanners, and it’s the reason they’re so painless: a scanner is a keyboard.
Almost every handheld scanner presents itself as a standard HID keyboard device. It reads the barcode, “types” the digits at a speed no human can match, then presses Enter. There are no drivers, no app, no pairing beyond the usual Bluetooth dance, and no integration work. Plug it in, click into the scan box, and it works — with any web page that accepts typed input.
Practical notes:
- Wired USB scanners are the cheapest and most reliable option, and fine for a fixed counting station.
- Bluetooth scanners pair with a phone or tablet, which is what you want for walking the shop floor — the scanner does the reading, the phone just shows the screen.
- Test the Enter behaviour first. Most scanners send a carriage return after the code by default; if yours doesn’t, its manual will have a configuration barcode you scan once to enable it.
When the phone is enough — and when it isn’t
| Situation | Use |
|---|---|
| Spot check, 10–50 items | Phone camera |
| Weekly cycle count of one aisle | Phone camera, or Bluetooth scanner if the aisle is dense |
| Full count, hundreds of lines | Bluetooth or USB scanner |
| Cold store, gloves, poor light | Dedicated scanner, no contest |
| Damaged, small or curved barcodes | Dedicated scanner |
| Two people counting together | Two devices; at least one dedicated scanner |
A reasonable rule: start with the phone, and buy a scanner the first time a count takes longer than you budgeted for. That’s cheap information, and you’ll know exactly what you’re buying it for.
Products without barcodes
Plenty of stock has no printed code — handmade goods, loose items, own-brand products, anything repackaged.
Three options, in order of effort:
- Type the SKU or the product name. The same scan box accepts both, and for a short list of unbarcoded items this is faster than any labelling project.
- Print your own labels with internal codes. Perfectly valid for stock you only handle in-house. Keep them structurally distinct from retail barcodes so nobody confuses the two.
- Buy allocated GTINs. Only necessary if your products are resold through other retailers or listed on marketplaces that require them.
Don’t let a handful of unbarcoded products stop you scanning the rest. A count that’s 80% scanned and 20% typed is still enormously faster than one that’s 100% typed.
Variations: scanning the right thing
If you sell variable products, each stock-managed variation is counted as its own line — as it should be, because a Medium Blue and a Large Red are different things on different shelves.
That means the code you scan has to identify the variation, not the parent. Both the SKU and the GTIN/UPC/EAN/ISBN field exist at variation level in WooCommerce, so put the variation’s own barcode there. Retail barcodes are already per-variant in the real world — a manufacturer allocates a different EAN to each size — so this usually just means recording what’s printed on the item.
If your variations share one code, scanning can’t tell them apart and neither can your stock records. Fix that before counting, not during.
A practical setup for a count
- Test five codes before you start. Pick items from different suppliers and scan them. Finding out mid-count that a whole supplier’s codes aren’t in WooCommerce is a bad afternoon.
- Charge everything. Obvious, routinely forgotten, and a dead phone halfway through a count is how counts get abandoned.
- Scope the session to one physical area. Count what’s in front of you rather than what’s in a category.
- Decide the fallback in advance. When a code won’t read, do you type the SKU or set it aside? Pick one so nobody stalls.
- Keep the screen where you can see it. The recent-scans list is how you catch a double-scan while you still remember it.
Scanning is only the input method — the count still needs a snapshot before it and a variance review after it. The full stocktake guide covers that loop end to end, and it’s worth reading before your first real session.
Barcode scanning FAQ
Can I use my phone camera as a barcode scanner for WooCommerce?
Yes. Phone-camera scanning in Stocktake is a Beta feature that uses the browser’s native barcode detection where available and a bundled decoder where not. It needs an HTTPS site, which any live store already has, and it works well for counts of a few dozen items.
Do I need a special app or driver for a barcode scanner?
No. Almost every handheld barcode scanner presents itself as a standard keyboard: it types the digits and presses Enter. Plug it in or pair it, click into the scan box, and it works with no integration at all.
Should the barcode go in the SKU field or the GTIN field?
Put the printed retail barcode in WooCommerce’s GTIN / UPC / EAN / ISBN field, available since WooCommerce 9.2, and keep the SKU as your own internal code. Scanning matches the SKU first and then that field, so both work — but mixing them makes a mess of everything else.
Does barcode scanning work with product variations?
Yes. Each stock-managed variation is counted as its own line, and both the SKU and the GTIN field exist at variation level. Store each variation’s own barcode on the variation — manufacturers already allocate a different code per size or colour.
What about products with no barcode at all?
Type the SKU or the product name into the same scan box, or print your own labels with internal codes for stock you only handle in-house. Allocated GTINs are only necessary if you resell through other retailers or marketplaces that require them.
USB or Bluetooth scanner — which should I buy?
Wired USB is cheapest and most reliable for a fixed counting station. Bluetooth pairs with a phone or tablet and is what you want for walking the shop floor. Either way, check that the scanner sends an Enter after the code; most do by default.