Advanced Label Configuration and Debugging (Label Watcher)

Advanced Label Configuration and Debugging (Label Watcher)

WMS+ allows administrators to create and assign label templates, map them to warehouse events and debug output using Label Watcher. Labels can be dynamically generated using Simplates and ZPL to support accurate, process-specific output across warehouse operations.

All label configuration, assignment and testing are managed in the Admin Panel.


Label Fragment Configuration

Label fragments define the layout and logic of each label printed in WMS+. These fragments use a combination of ZPL (Zebra Programming Language) and Simplates (a templating syntax that auto-fills label or batch fields using live warehouse data and logic). Fragments are modular and can be reused across layouts.

Navigate to: Admin Panel → Common Configuration → Labels Configuration → Label Fragment Configuration.

Steps to configure:

  • Click Add New or select an existing fragment.

  • Define the Code, Name and Is Active status.

  • Paste or edit the Content, which contains Simplates and ZPL.

Admin Users can also use Import from Library to bring in Softengine-provided templates. These are grouped by function (e.g., Receiving, Production, Transfers).

Label Fragment Details.png

Importing Fragments from the Cloud Library

Administrators can import prebuilt label templates from the Softengine Cloud Library directly into WMS+.

Steps:

  • Click Import from Library at the top of the Label Fragments Configuration screen.

  • Use the search bar or browse categories such as Receiving, Production or Transfer.

  • Hover over a fragment to preview its layout.

  • Select a fragment and click Import.

  • If a duplicate code is found, WMS+ prompts to Replace, Duplicate or Cancel the import.

Imported fragments appear in the list and can be edited like any other custom fragment.

Label Fragment Cloud Library.png

What Are Simplates?

Simplates are a code-like template format in WMS+ used to populate label fields or batch attributes with real-time data from warehouse activity. They allow administrators to insert values such as scanned barcodes, expiration dates, item codes or user-defined fields automatically, without manual input.

Each Simplate can apply conditions or formatting rules to control what appears, based on the data available at the point of printing. The result is a label or batch detail that is accurate, context-aware (i.e., tailored to the specific transaction and available data), and aligned with operational or compliance requirements.

Example syntax:

  • {{$:@item.ItemCode}} inserts the item code.

  • {{if:{{equal:'{{$:@batch.BatchNumber}}'=''}}:then:N/A:else:{{$:@batch.BatchNumber}}}} displays "N/A" if no batch number exists.

Example Fragment (ZPL + Simplates)

zpl CopyEdit ^XA ^FO50,50^A0N,30,30^FDItem: {{$:@item.ItemCode}}^FS ^FO50,100^A0N,30,30^FDDescription: {{$:@item.ItemName}}^FS ^FO50,150^A0N,30,30^FDBatch: {{if:{{equal:'{{$:@batch.BatchNumber}}'=''}}:then:N/A:else:{{$:@batch.BatchNumber}}}}^FS ^FO50,200^A0N,30,30^FDExpiry: {{if:{{equal:'{{$:@batch.ExpiryDate}}'=''}}:then:N/A:else:{{$:@batch.ExpiryDate}}}}^FS ^FO50,250^BY2 ^BCN,100,Y,N,N ^FD{{$:@batch.BatchNumber}}^FS ^XZ

Explanation

  • ^XA and ^XZ: Start and end of the label.

  • ^FO: Field origin (x,y position on label).

  • ^A0N,30,30: Font type and size.

  • ^FD...^FS: Field data and field separator.

  • {{$:@item.ItemCode}}: Inserts the item’s internal code from the system.

  • {{$:@item.ItemName}}: Displays the item name.

  • The Batch and Expiry lines use conditional logic:

  • If no batch or expiry exists, show "N/A".

    • If data exists, display the value.

  • The barcode section uses ^BCN to generate a Code 128 barcode of the batch number.


Label Layouts

Label layouts map a fragment to a specific warehouse event and printer.

Navigate to: Admin Panel → Common Configuration → Labels Configuration → Label Layouts Configuration.

Steps to configure:

  • Select Add New or edit an existing layout.

  • Enter Code and Name.

  • Set the Event ID to match the WMS+ process trigger, such as “Inv GR: Added” (goods receipt) or “Pick: Picked” (picking confirmation).

  • Assign a Printer and select the Printer Type (ZPL or Crystal Reports).

  • Link the required Label Fragment.

  • Save and test using Label Watcher.

Admin Tip: Use descriptive layout names for easier troubleshooting.

Label Layout Edit Panel.png

Printer Assignment

Printers must be mapped to processes or users to ensure labels are routed correctly.

Navigate to: Admin Panel → Common Configuration → Printing Configuration → Printers Determination.

Configuration steps:

  • Add or edit a printer entry.

  • Define the Printer Code and Printer Type (ZPL or Crystal Reports).

  • Assign printers to specific processes or label types.


Event Mapping

Event mapping determines when labels print by linking layouts to operational events.

Steps:

  • Within Label Layouts, set the Event ID to match the process trigger.

  • Activate the layout and verify the assignment using Label Watcher.


Testing and Debugging with Label Watcher

Label Watcher allows admins to preview and debug label templates without using physical printers.

Navigate to: Admin Panel → Common Configuration → Printing Configuration → Label Watcher.

Label Watcher Main Screen.png

Capabilities:

  • Preview live label output based on recent print events.

  • Inspect the Input JSON, Simplate/ZPL code and processed ZPL.

  • Edit and test template logic in real time.

  • Enable logging to capture label events (retained for 21 days).

Admin Tip: Always validate new templates in Label Watcher before enabling them in production.

Label Watcher Detailed View.png

Best Practices

  • Use Softengine Cloud Library templates as starting points.

  • Align label dimensions with the printer's DPI and the label stock.

  • Keep templates modular to simplify updates.

  • Enable label logging for traceability and audit needs.

  • Test event mappings in a controlled environment before rollout.