Barcode Scanning for Magento: A Practical Guide for Small Warehouses

Magento barcode scanning means reading a barcode at the packing bench to confirm the right item is going into the right order, instead of matching SKUs by eye. Magento 2 has no built-in scanning, so you either add a module or wire up a custom flow. For a small warehouse the practical setup is cheap: a handheld scanner that types into a focused field, a barcode your staff can actually scan, and a screen that turns red when the pick is wrong.
What barcode scanning actually does for a small warehouse
Barcode scanning replaces the moment a picker looks at a SKU, looks at a shelf, and decides "close enough". That decision is where mispicks come from, and mispicks are expensive twice: once for the return, once for the reship. Scanning turns a judgement call into a match - the barcode either equals the expected value or it doesn't.
You don't need a warehouse management system for this. A WMS earns its cost at hundreds of orders a day across multiple zones. Under that, most of the value is in one narrow check: did the item in your hand match the item on the order? A scanner and a validation screen deliver that check for the price of the hardware.
Which scanner hardware should a small Magento store buy?
Almost any scanner works with a browser-based Magento flow, because the common ones all behave the same way: they act as a keyboard. Scan a barcode and the decoded text is "typed" into whatever field has focus, followed by an Enter keystroke. This is the keyboard-wedge pattern, and it means the scanner needs no driver, no SDK, and no Magento integration - it just needs a text box to type into.

| Hardware | Rough cost | Best for | Watch out for |
|---|---|---|---|
| USB corded scanner | £20 to £60 | A fixed packing bench | Tethered - the operator stays at the desk |
| Bluetooth scanner | £40 to £120 | Picking while walking shelves | Pairing drops, batteries to charge |
| Phone or tablet camera | Device you own | Trying it before you spend | Slower per scan, needs a scanning keyboard app that outputs to a text field |
| Rugged handheld | £150 to £600+ | Cold, dusty, or drop-heavy warehouses | Overkill for a quiet packing room |
| Android tablet on the bench | £100 to £250 | A shared scan-and-pack station | Camera scanning is the weak link; pair a cheap USB scanner to it |
Start with a £30 USB scanner and a browser tab. It reads the barcode, drops the value into the focused input, and you learn whether scanning fits your bench before spending on anything rugged. A phone camera works for testing but is the slowest option per scan - fine to prove the idea, tiring across a hundred orders.
What should the barcode actually contain?
Two different barcodes do two different jobs, and small warehouses often confuse them.
The order barcode identifies the whole order - it encodes the Magento increment ID (the "100001" style number). You scan it once to pull the order up on screen. The product barcode identifies each item you pack, and it's the one people get wrong. Out of the box, a Magento scanning setup will match the scanned value against the product SKU itself. That's fine if your SKUs are printed as barcodes on the product. It falls apart the moment you're scanning a manufacturer's existing barcode, because the number on the packaging (a UPC or EAN) is almost never your SKU.
The fix is a dedicated barcode attribute. You create a product attribute such as upc, ean, or gtin (Adobe's product attribute docs cover adding one), populate it with the barcode that's physically on the product, and point your scanning tool at that attribute instead of SKU. Now the picker scans the box the supplier already labelled, and Magento matches it to the right line. Retail barcodes follow GS1 standards (UPC-A in North America, EAN-13 in Europe), so a scanned bottle of aquarium filter media resolves to your product without you printing a single label.
How this applies to Magento 2
Magento 2 ships nothing for warehouse scanning. There's no scan screen, no barcode field on the product, no pick confirmation - as of Magento 2.4.9, that's all module or custom-build territory. What Magento does give you is the raw material: the order increment ID, the SKU, and the ability to add a custom product attribute to hold a real barcode. Everything else - the scan screen, the match logic, the "you packed the wrong thing" warning - has to come from somewhere.
So the small-warehouse plan is: decide what you'll scan (order ID to load, a barcode attribute to match items), add that attribute if you're using supplier barcodes, print an order barcode on your packing document, and put a validation screen between the picker and the pack bench.
Where Moogento helps
PickPack handles the printed side. It generates picking and packing PDFs that can carry a barcode column, and it renders those barcodes in Code 128, Code 39, or EAN-13 (plus QR where you want it) directly on the document - the order-ID barcode it prints for scanning is Code 128. That barcode defaults to encoding the line's SKU, but a template can encode a chosen product attribute instead, so the barcode you print matches the attribute you scan against. One code-level requirement worth knowing: barcode image rendering needs the PHP GD or Imagick extension on your server, and PickPack's config screen will tell you if neither is installed.
A quick clarification, because it trips people up: PickPack's "Zebra" templates are label-sized PDF layouts, not native ZPL. They print to a Zebra label printer through the normal PDF pipeline, which is fine for most small setups but isn't the raw-ZPL streaming an enterprise label line would use.
For the scanning screen itself, Moogento's Pick-n-Scan module reads the order barcode to load an order, then has the picker scan each item. The behaviour that actually prevents errors sits in a few deliberate rules:
- Over-scanning is blocked. If an order needs two of an item and you scan a third, the server rejects it rather than silently accepting the extra. You cannot pack more units than were ordered.
- Matching is exact. A scan either equals the barcode attribute value or it doesn't - there's no partial or fuzzy match, and no check-digit validation, so the barcode you encode has to be the barcode you scan.
- Barcode-less products degrade gracefully. If a product has no value in your barcode attribute, a manual confirm button appears for it automatically, so a keyring or a freebie with no barcode doesn't jam the whole order.
- Shelf location shows on screen. Point it at a location attribute (a
shelfor bin attribute you populate) and the picker sees where the item lives, not just what it is.
The main limitation: there's no native phone-camera scanning SDK. Scanning works through any keyboard-wedge scanner (USB or Bluetooth) or a phone app that types into the field - which covers the cheap hardware above, but means "point your phone camera at it" needs a scanning keyboard app in the middle, not a built-in reader. If you're also tightening up how those barcodes are structured, the way you build SKUs feeds straight into this, and StockEasy can scan barcodes for stock counts once the same attribute is in place. The Moogento docs cover the setup for both.
Barcode scanning readiness checklist
- Pick one thing to scan for item matching: your printed SKU, or a supplier barcode held in a dedicated attribute. Don't mix the two mid-catalogue.
- If you're using supplier barcodes, create the attribute (
upc/ean/gtin) and populate it before you buy hardware. - Print an order barcode on your packing document so pickers load orders by scan, not by typing.
- Buy one cheap USB scanner and test the flow on real orders before scaling the hardware.
- Check that every scannable product has a barcode value; list the exceptions (no-barcode freebies) so they're handled, not blocking.
- Confirm your server has GD or Imagick if you want barcodes printed on PDFs.
- Decide your bundle rule: scan the component items or the bundle as one? Set it before go-live.
- Put a validation screen in front of the pack bench. A scanner that doesn't reject the wrong item is just a slow keyboard.
FAQ
Does Magento 2 have built-in barcode scanning?
No. Magento 2.4.9 has no native warehouse scanning, no barcode field on products, and no scan-to-pack screen. You add a module such as Pick-n-Scan or build a custom controller. What Magento provides is the order increment ID, the SKU, and custom product attributes to hold a barcode.
What barcode scanner works with Magento?
Almost any keyboard-wedge scanner - most USB and Bluetooth handhelds. They present to the browser as a keyboard, typing the decoded barcode into the focused field with no driver or SDK. Start with a cheap USB scanner; it needs nothing but a text box to type into.
Can I scan a manufacturer's barcode instead of my SKU?
Yes, but only if you store that barcode in a product attribute and match against it. By default a Magento scan matches the SKU, and a supplier's UPC or EAN is almost never your SKU. Create a upc or ean attribute, populate it from the packaging, and point the scanner at it.
How does scanning stop the wrong item shipping?
A proper scan-to-pack flow matches each scanned barcode to the order line and rejects anything that doesn't fit - including scanning too many of an item. In Pick-n-Scan, over-scanning past the ordered quantity is blocked server-side, so an extra or wrong item fails the scan rather than getting packed.
Start with one scanner and one bench. Get the item-match check working on real orders, then decide whether roaming Bluetooth pickers or printed shelf locations are worth adding. The cheap version catches most of the errors the expensive version does.



