Help Center
PrintAgent sends your labels straight to the label printer. Below you can read how the communication works and what to check when setting up your printer.
Communication via ZPL
PrintAgent communicates with Zebra-compatible label printers using ZPL (Zebra Programming Language). Your design is converted to ZPL commands in the cloud and sent to the printer on your network through the PrintAgent Node or agent. No printer driver is needed, and your labels look identical at every location.
Setting up different printer types
Give your printer a fixed IP address and make sure port 9100 is reachable. Then add the printer under Printers and select the correct model and resolution (dpi). Use 'Network scan' to find printers in your network automatically. If the dpi differs from your design, you will see a warning when printing.
Supported printers
PrintAgent works with label printers that support ZPL or ZPL II. Examples: Zebra (ZD, ZT, GK and GX series), TSC (TE, DA and BX series), Godex, Argox, CAB, SATO and Toshiba. Printers from Honeywell and Citizen also work, provided they are set to ZPL mode. Is your model not listed? Just try it: if the printer supports ZPL, it works with PrintAgent.
Setting a printer to ZPL mode
Set the command language of your printer to ZPL or ZPL II. This is usually done in the printer menu (Settings → Command Language or Printer Language), via the Windows printer driver (Preferences → Advanced → Command Language) or with the configuration utility of the manufacturer. Then print a test label via PrintAgent: if the label comes out correctly, the printer is set up properly. Also make sure the printer has a fixed IP address and that port 9100 is reachable.
Actions and HTTP triggers
With Actions you let external systems start a print job on your PrintAgent Node. Every action with an HTTP trigger has its own address: POST http://<node>:7158/actions/<slug>, where the slug follows from the action name. Authenticate with the token from the action (header X-PrintAgent-Token, or ?token= in the URL). The JSON body may contain any fields: they are used as label placeholders. You can override the template (by name or id), the printer and the number of copies per call, and optionally look up a product by barcode: send a productcode field, choose the match field (number, ean13 or qrcode) and map product fields to placeholders. Without a mapping, all product fields are available as {{product.field}}. The Windows firewall rule for port 7158 is installed automatically with PrintAgent Node.
Concrete examples
Filedrop — a label for every row
Create an action with trigger File drop and point the folder to C:\ERP\drop (pattern *.csv). PrintAgent prints one label per row and then moves the file away, so nothing prints twice. Every column becomes a placeholder in the template.
order;ean;qty A-1024;8712345678901;2 A-1025;8710987654321;1
Scan — barcode straight to a label
Connect a barcode scanner to the computer running PrintAgent Node (for example COM5, 9600 baud) and choose the Scanner trigger. Every scan is passed to the template as {{barcode}}. Enable product lookup to match the code against your product list and add fields like {{product.name}} and {{product.salesprice}}.
HTTP request — print from any system
Create an action with trigger HTTP request and copy the token. Your ERP, webshop or script then triggers the print with a simple POST — any field in the body becomes a placeholder.
curl -X POST "http://NODE-IP:7158/actions/shipping-labels" \
-H "X-PrintAgent-Token: TOKEN" \
-H "Content-Type: application/json" \
-d '{ "template": "Shipping label", "printer": "Zebra-1", "copies": 2, "productcode": "8712345678901", "order": "A-1024" }'
→ 202 Accepted
Optional parameters
The JSON body can override the settings of the action per call:
template— label template by name or idprinter— printer by name (as in the printer list)copies— number of copies (positive integer)productcode— product code for the product lookup (when enabled)
Placeholders in your template
Use the field names between double braces in your label design. Empty or unknown placeholders are simply left out.
Order {{order}} ({{qty}}x)
{{product.name}}
EAN {{product.ean13}} · € {{product.salesprice}}
info@tegrasystems.nl