## Barcode format

An ION barcode encodes a JSON payload with the record’s `uid` (Universal Identification), for example `{"uid":"24daeec708d84908af9beba707a5241b"}`. When you scan it, ION recognizes characters typed quickly that match the ION ID specification and resolves the `uid` to its record. Because the payload is compact, an ION QR code stays scannable at small label sizes: with the ZPL magnification factor, a `uid` QR code prints reliably at 0.25 x 0.25 inches on a 300 DPI printer. Preview a template’s size and density with [Labelary](http://labelary.com/viewer.html).If your material already carries barcodes from another system, you can map those formats to ION records with a regular expression or a JSON field mapping. See [Scan barcodes from other systems](https://docs.firstresonance.io/build-hardware/labels-and-scanning/scanning/scan-barcodes-from-other-systems).

## Print paths

ION prints over one of two paths, set once for the org by the **Use print server** toggle in **Settings → Organization → Barcode Labels**, not per print:

- **Browser** (Zebra Browser Print) drives a Zebra printer attached to the operator’s workstation. ION talks to the local service over `https://localhost:9101`. See [Configure Zebra Browser Print](https://docs.firstresonance.io/build-hardware/labels-and-scanning/printing/configuring-printing-in-ion).
- **Print server** (for example, PrintNode) sends jobs to a central service that manages shared printers across the floor. See [Configure PrintNode server printing](https://docs.firstresonance.io/build-hardware/labels-and-scanning/printing/server-based-barcode-printing-printnode).

The **Barcode Label** dialog shows the printer picker for whichever path is configured. For printing a label, see [Print a label](https://docs.firstresonance.io/build-hardware/labels-and-scanning/printing).

## Templates

Each label is rendered from a ZPL template scoped to an entity type: inventory, kits, or locations. A template defines the field layout and what the barcode encodes, and you can define many templates per entity type for different purposes, such as a shipping label separate from an internal movement label. Templates inject record data through variables like `${part.partNumber}` and `${serialNumber}`. For authoring, see [Create label templates](https://docs.firstresonance.io/build-hardware/labels-and-scanning/templating), and for starting points, see [Sample templates](https://docs.firstresonance.io/build-hardware/labels-and-scanning/templating/sample-templates).

Templates are defined at the org level in **Settings → Organization → Barcode Labels**. An admin adds or changes them. See [Create label templates](https://docs.firstresonance.io/build-hardware/labels-and-scanning/templating).

## Scan-to-action workflows

Scanning is enabled on every page in ION. You scan three object types: inventory, locations, and kits. After a scan, ION confirms it occurred and offers actions that fit the scanned object, and an action can chain to another scan or a click. Scanning an inventory then a location moves that inventory; scanning an inventory then a kit kits it. One workflow is page-bound: scanning a part inventory on the run execution page installs it if the part is on the aBOM. For the full set of workflows and scanner setup, see [Scanning](https://docs.firstresonance.io/build-hardware/labels-and-scanning/scanning).
