| Time | Station | Worker | Order | Tracking | Result |
|---|
| Time | Worker | Order | Platform | Tracking | Result |
|---|
| Order | Platform | Tracking | Extra | Scanned |
|---|
Every PDF import batch, newest first, grouped by day — use it to check whether a folder or file was uploaded before scanning starts. Recorded from v34 on; “Start new day” does not erase it.
Everything the system has ever recorded, straight from the server: find any tracking number, order, file or product across all days, browse a whole day's scans, or export the complete tables.
Packing errors, by worker. Find the order in the History tab and click Flag error…; it lands here against the worker who scanned it. Error rate = flagged errors ÷ packages that worker matched in the period.
Scans that didn’t match any imported order — from every station, straight from the server, so a package scanned at one station can be re-matched from any other. Usually this means the day’s CSV wasn’t imported yet, or the barcode is a format the parser doesn’t know — send me the raw string and I’ll add it. You can re-run all unmatched scans against current orders after importing.
| Time | Station | Worker | Raw scan | Best guess tracking |
|---|
Add each worker, then print this page (the print view shows only the badges).
Laminate them or tape them at the station. Scanning a badge switches the active worker instantly —
the badge barcode is EMP-NAME in Code 39, which every scanner reads out of the box and
which a Code 128 minimum-length lock (the routing-barcode fix) never blocks.
Carriers pack routing data around the tracking number, or print more than one barcode. This station normalizes every scan before matching, so any of these work:
| What you scanned | What it contains | What the station does |
|---|---|---|
| UPS 1D barcode | 1Z999AA10123456784 | Used as-is — this is the tracking number. |
| UPS MaxiCode (square 2D) | A structured routing message with the 1Z inside | Finds the 1Z… inside the mess. Better: disable 2D on the scanner. |
| USPS / Ground Saver second barcode | 420 07044 92001… | Strips the 420+ZIP routing prefix, keeps the tracking. |
| FedEx Ground (34 digits) | 9612 0190 … 786 123 456 789 | Tracking is the last 12 digits — extracted automatically. |
| FedEx Express (32–34 digits) | Form data + tracking at the end | Same last-12 rule. |
| Amazon Logistics | TBA123456789012 | Recognized directly. |
| Small barcode above the address | 420 98936 9035 | Routing only — no tracking inside. The station says “scan the other barcode.” |
| Platform package barcode | PK-4464876405064450511-0 | Matched too, if you map that column as “Alt ID” when importing. |
Try it without a scanner: click the input box and type
420070449400111899223100000000 or 96121909999999990000000786123456789
after loading the demo data, then press Enter.
Use 2.4 GHz dongle scanners (one USB receiver each, on a powered hub — not Bluetooth) and configure each
scanner, via its manual’s setup barcode, to prepend a prefix: S1-, S2-, …
When a worker scans their badge with their scanner, that scanner is bound to them, and every label it
scans is credited to them — ten workers can share one PC. Practical note: heavy simultaneous scanning on one
PC can occasionally interleave two scans into one garbled string; the station rejects it as “no match,” both
workers just rescan. If that happens often, split across two or three cheap PCs.
Dual-carrier labels (FedEx Ground Economy, UPS Ground Saver) carry two unrelated numbers, and the
platform reports only one. Fix: Orders → Import label PDF — drop in the day’s printed label PDFs
(bulk multi-page files are fine, one label per page). The station decodes every barcode on every label
right in the browser, no internet needed, and ties each label’s numbers together — after that, whichever
barcode the worker scans, it matches. The label_prescan.py command-line tool does the same
job outside the browser and its CSV imports via “Import label links”.
Labels-only mode: you can skip the order CSV entirely. Pick the platform in the dropdown, import the label links, and each label becomes a scannable record on its own (tagged “from label”). If you import an order CSV later, matching rows fill in the real order IDs in place — scans and worker credit are kept. The CSV adds two things labels can’t: the platform’s order ID, and orders that were never labeled at all.
Also disable UPC-A / EAN-13 / EAN-8 symbologies in 123Scan — those are the retail barcodes printed on the products themselves. With them off, aiming at the product does nothing at all, same as the routing barcode. The station also recognizes product barcodes and website QR codes and says so, as a backstop.
Scanner setup that prevents 90% of weirdness: put the scanner in keyboard (HID) mode with an Enter suffix, and disable 2D symbologies (MaxiCode, PDF417, QR, Aztec, DataMatrix) so it only reads the 1D Code 128 barcodes — those always carry the number you want.