Skip to main content

GS1 and Custom Barcode Parsing

Overview

Barcode parsing lets Logiwa IO decode structured barcodes — like GS1-128 labels — directly into fields such as Product, Lot, Expiration Date, Production Date, and Serial Number. Once a warehouse has a barcode template configured, scanning one of these barcodes anywhere a product is scanned on mobile — Receiving, Picking, Sorting, Replenishment, Count, Transfer, Putaway, or Look Up — can automatically fill in tracking attributes that would otherwise require manual entry.

When to Use It

Use barcode parsing when:

  • Your suppliers or internal labels use GS1-128 or structured barcodes containing multiple data fields in one scan

  • You want mobile workflows to auto-populate tracking attributes instead of requiring manual entry at every scan

  • Your barcodes use a custom (non-GS1) format with a consistent structure — fixed-position fields, custom delimiters, or even a regex-matchable pattern

Prerequisites

  • A Barcode Template is configured and Active for the warehouse (Settings → Configuration → Barcode Templates)

  • Product Tracking is set up for the relevant products — this determines which parsed values actually get used

How It Works, Everywhere It's Used

Every module that supports barcode parsing follows the same underlying pattern:

  1. Active template check. When a mobile task/screen loads, the app checks if the warehouse has an active barcode template. If there isn't one, the parser is never called and everything behaves exactly as it does without this feature.

  2. Template evaluation. If templates exist, they're evaluated in Priority order (lowest number first). The first template whose Product identifier matches is selected — the parser doesn't keep searching for the other templates once one matches the product.

  3. Field extraction. Within the selected template, each configured rule (Identifier, Start Position, or Regex) extracts its field. A field that can't be extracted doesn't fail the whole scan — it's just treated as missing.

  4. Product tracking check. Once a product is identified, Logiwa IO checks that product's tracking configuration:

    • A parsed field matching a tracking attribute the product has enabled → used automatically.

    • A parsed field the product doesn't track → silently ignored. No warning, no blocked transaction.

    • A tracking attribute the product requires but the barcode didn't contain → you're prompted to enter it manually, exactly like today.

  5. No match, no problem. If the barcode doesn't match any active template, or no product is found, the scan falls back to the existing (pre-parsing) logic unchanged.


Configuring a Barcode Template

Templates live at Settings → Configuration → Barcode Templates.

💡 Access to this screen (view/create/edit/delete) is controlled per role under Settings → Roles.

  1. Click Create Barcode Template.

  2. On the Information tab, fill in: Barcode Template Name, Description (optional), Warehouse, Priority (lower numbers are evaluated first), Start Method (Identifier or Start Position — applies to every rule in this template), and Status (Active/Passive).

  3. Click Next to open the Parsing Rules tab, then click Add Rule for each field you want to extract:

Field

Description

Notes

Target Field

Product Barcode, Lot/Batch, Expiry Date, Production Date, or Serial Number

Each field can only be used once per template

Identifier / Start Position

Identifier or fixed character position where the field starts

Whichever matches the template's Start Method

Length Method

Fixed or Variable

Length

Exact character count

Required if Fixed

Stop Character

Exact character to stop parsing the field

Required if Variable
Configure #end# to read to end of barcode

Date Format

e.g. yyyyMMdd, yyMMdd (18 formats total, including 2-digit-year formats)

Required for date fields only

Use Regex

Toggle to match a pattern instead of Identifier/Position

For formats that don't fit the standard model

Status

Active/Passive

Disable a rule without deleting it

  1. Click Save. At least one rule is required before saving.

  2. ⚠️ Use Test Barcode (row's ⋮ menu) to run a sample barcode against the template's active rules and confirm each field extracts correctly before relying on it live.

Example GS1 Barcode Template Setup

Template Info:

  • Name: GS1 Standard

  • Start Method: Identifier

  • Priority: 1

Parsing Rules:

Target Field

Identifier

Length Type

Length / Stop Character

Date Format

Product Barcode

01

Fixed

14

—

Lot/Batch

10

Variable

FNC1 (<GS>)

—

Production Date

11

Fixed

6

yyMMdd

Expiry Date

17

Fixed

6

yyMMdd

Serial Number

21

Variable

FNC1 (<GS>)

—

Sample barcode:

0100312345678905101234A<GS>112601311726032021123456<GS>

Parsed result:

Field

Extracted Value

Product Barcode

00312345678905

Lot/Batch

1234A

Production Date

260131

Expiry Date

260320

Serial Number

123456

⚠️ Note on Stop Characters: How a scanner outputs the FNC1/GS separator can vary by scanner model and configuration — some send it as the actual ASCII 29 (<GS>) control character, others may send it as a visible character or handle it differently entirely. Before relying on a Variable-length field with a Stop Character, scan a real sample barcode with your actual scanner and check what the raw output looks like (e.g., via Test Barcode). Configure the Stop Character to match what your scanner actually produces — don't assume it'll always be the standard FNC1/GS separator. If the configured stop character doesn't match what the scanner sends, the field will fail to parse correctly.

How It Behaves in Each Mobile Workflow

Receiving
​
On the Product screen, scanning a barcode resolves Product, Lot, Expiration Date, Production Date, and Serial Number in one step. Resolved fields are auto-filled; anything the barcode doesn't resolve is requested manually, same as today.
​

Replenishment

  • Direct Put (single task): scanning the product resolves Product, Lot, Expiration Date, and Production Date on the combined pick/put screen.

  • Pick & Put: parsing happens on the Pick task's product scan. When you re-scan the product during the Put task, Logiwa IO checks it matches what was picked — if it doesn't, you'll see an error telling you to scan the correct item.

  • Scanning an LP (instead of a SKU) never triggers parsing — Lot/Expiry/Production Date are inherited from the LP's existing tracking data instead.

Count (Location, SKU, Instant, One-by-One, Recount)

  • Parsing applies to product barcode scans only — scanning an LP never triggers it.

  • In One-by-One Count, once attributes are locked for a product, repeat scans of the same product reuse the locked values and skip re-parsing. Tapping Ask for Attributes Again releases the lock and re-triggers parsing on the next scan.

  • Recount tasks inherit the same behavior as the originating count.

Transfer & Directed Putaway
​
Applies to Transfer Product and Directed Putaway: Putaway Product only (Bulk and One-by-One) — never to LP or Location scans, since those don't carry product barcodes. In One-by-One mode, because scanning a valid target auto-submits the transfer immediately, parsing (or the fallback manual attribute sheet) must fully resolve before you're allowed to advance to the target scan — the app won't let you move forward with an incomplete attribute set.
​

Look Up Product
​
This is the one exception to full field resolution: scanning a GS1-128 barcode here extracts only the product barcode to look up the product. Any Lot, Expiry, or Serial data encoded in the same barcode is parsed off and discarded — it's not displayed, stored, or used as a filter. Results look exactly like a plain-barcode lookup.


Common Questions & Edge Cases

📌 Availability: This feature currently works on mobile screens only. Packing support is planned and coming soon — scanning on the Packing screen doesn't trigger barcode parsing yet.
​

What happens if a scanned barcode doesn't match any configured template?
The scan falls back to standard (pre-parsing) logic. Nothing is blocked.
​

What if the barcode parses but no matching product is found?
Same fallback — the scan isn't blocked, and if no product is found at all you'll see the existing "barcode not found" message.
​

Will I be warned if a barcode contains tracking data not enabled for that product?
No. That value is silently ignored. The product's own tracking configuration is always the final authority, since the same barcode format can be shared across products with different tracking needs.
​

During a Count, if the parsed value doesn't match what's already in inventory, which one wins?
The parsed (scanned) value. It's used as the count line's value with no error — this is intentional, since the barcode is treated as ground truth during counting.
​

Can a single barcode template cover fields that don't fit the Identifier/Start Position model (e.g., a value embedded in a non-standard pattern)?
Yes — rules can be configured to use a Regex pattern instead, mixed freely with Identifier/Start Position rules in the same template.

What if Expiry Date comes both from the barcode and from a production-date + shelf-life calculation — which one wins?

If the product's setup has Use Production Date = Yes with a Shelf Life in Days value set, the calculated date always wins. Logiwa IO takes the Production Date parsed from the barcode, adds the configured Shelf Life in Days to it, and uses that as the Expiry Date — even if the barcode also contains its own Expiry Date value. The barcode's Expiry Date is ignored in this case.

Example:

  • Production Date from barcode: 2026-01-01

  • Shelf Life in Days: 10

  • Expiry Date in barcode: present, but ignored

  • Expiry Date actually used: 2026-01-11

This applies the same way in Transfer as elsewhere — if the scanned product's setup has this configuration, the calculated date takes priority there too.

If Use Production Date is off, this calculation doesn't happen, and the barcode's own Expiry Date (if present) is used normally.

What date format is used when a date value is auto-filled from a barcode scan?

A: The barcode parser reads the date using whatever Date Format is configured on the Barcode Template (e.g., yyMMdd, yyyy-MM-dd). Logiwa IO then converts that parsed value into the date format configured on the product itself before using or displaying it. So the barcode's format and the product's format don't need to match — the conversion happens automatically.

Example:

  • Barcode Template Date Format: yyMMdd

  • Scanned value: 260812

  • Product's configured date format: MM/dd/yyyy

  • Value used/displayed: 08/12/2026
    ​

Does scanning on the Look Up Product screen show Lot or Expiry info from a GS1 barcode?
No — Look Up Product only uses the GTIN for matching; everything else encoded in the barcode is discarded for that screen specifically.

Did this answer your question?