There are three ways to print Zebra labels from Odoo 20. A Zebra printer on your network can be added in Inventory → Configuration → Manage Printers as a ZPL printer with its IP address, and Odoo then sends labels to it directly from the browser. A printer on USB, or a site with several printers and devices, connects through Odoo’s IoT system. Any printer can also print Odoo’s PDF labels, but those are laid out for A4 label sheets, not for Zebra rolls.
Three routes compared
| Route | What you need | Best for | Keep in mind |
|---|---|---|---|
| Network ZPL, new in Odoo 20 | A Zebra printer on your network with a fixed IP address and its web server on | Shops and warehouses printing product, lot and shipping labels | The PC or handheld that prints must be on the printer’s network |
| IoT box or Windows virtual IoT | An IoT box, or a Windows 10 or 11 PC running Odoo’s virtual IoT, on the printer’s network | USB printers, sites with many devices, labels printed at manufacturing quality checks | One more device to keep running and updated |
| PDF from the browser | Any printer and its driver | Occasional labels on A4 label sheets | Odoo’s PDF labels are sheet layouts, not single labels on a roll |
Route 1: a Zebra printer on your network
This is the simplest setup for most sites on Odoo 20. Odoo sends each label from the browser to the web server built into the printer, so there is nothing to install on the PC.
Step 1. Give the printer a fixed IP address
Reserve an address for the printer in your router, so the address stored in Odoo does not change after a power cut or a router restart.
Step 2. Turn on the printer’s web server
Recent Zebra printers ship with their web server switched off, and Odoo needs it. From a Mac or Linux computer on the same network, send this command to the printer, using its own IP address, then restart the printer. Odoo’s documentation gives the Windows PowerShell version of the same command.
echo '! U1 setvar "ip.http.enable" "on"' | nc 192.168.1.50 9100Step 3. Add the printer in Odoo
Open Inventory → Configuration → Manage Printers and create a printer. Give it a name staff will recognize, such as Receiving ZD421, choose the type ZPL and enter its IP address.
Step 4. Link the reports it prints
In the printer’s Linked Reports field, add the ZPL reports this printer should print: product labels, lot and serial number labels, and shipping labels if you use a carrier connector. The first time a linked report prints, Odoo asks which printer to use and remembers the choice in that browser.
Step 5. Allow local network access in the browser
Recent versions of Chrome and other Chromium browsers ask before a website reaches a device on your local network. Allow it for your Odoo address when asked. If the prompt does not appear, add the address under Settings → Privacy and security → Site settings → Additional permissions → Local network, then reload Odoo.
Step 6. Print a test label
Open a product, click Print Labels and choose a ZPL format. Check the label at the printer: the size, the barcode and the text.
Print labels automatically when an operation is validated
Each operation type can print its labels by itself. Open Inventory → Configuration → Operations Types, choose the operation, for example Receipts, and in the Hardware tab tick what to print on validation:
- Product Labels, printed as ZPL Labels (name and barcode) or ZPL Labels with price.
- Lot/SN Labels, printed as ZPL Labels - One per lot/SN or ZPL Labels - One per unit.
- Carrier Labels from a shipping connector: set the shipping method’s label format to ZPL2, so the carrier returns a label the Zebra printer reads.
A common setup for a distributor in Kuwait: receipts print one lot label per unit received, so every carton carries its lot barcode before it is put away, and pickers scan it later with a Zebra handheld.
Route 2: an IoT box or Windows virtual IoT
Odoo’s IoT system is a small box, or a Windows service, on your network that connects printers, scales and other devices to Odoo. Use it when the Zebra printer is on USB, when one site has many devices, or when labels print from manufacturing quality checks.
- Connect the IoT box to the same network as the printers, then connect it to your database from the IoT app.
- Supported printers appear in IoT → Devices, which can take up to two minutes. Zebra printers need no driver: if one was selected on the IoT system, remove it.
- Link reports to the printer in its Printer Reports tab. For carrier labels on a Zebra printer, set the report type to Text.
- Never expose the IoT box or the Windows virtual IoT to the internet. They are meant to reach devices on your local network only.
On Odoo 19, printing from Odoo straight to a Zebra printer goes through the IoT system. Network ZPL printers under Manage Printers are new in Odoo 20, one more reason to plan the upgrade with your warehouse in mind.
Route 3: PDF labels
Without either setup, Odoo prints labels as PDF: 2 x 7, 4 x 7 or 4 x 12 per page, with or without the price. These layouts are made for sheets of labels on an office printer. On a Zebra roll they come out at the wrong size, so for Zebra printers choose the ZPL formats.
Label size and the ZPL template
Odoo’s standard ZPL labels are laid out for a 4 x 6 inch label. Shops often use smaller stock, such as 50 x 25 mm shelf labels, and then the template needs adjusting. Odoo ships ZPL labels for products, product packaging, lots and serial numbers, packages, operation types and, with Manufacturing, finished products.
- Where the code is. With developer mode on, open Settings → Technical → Reporting → Reports, search for ZPL, open the label and its QWeb view; the ZPL is in the Architecture tab.
- Text cut off. Lines over 55 characters run off the standard label. Move the start position in the
^FTcommand (^FOon lot and serial labels), or print a shorter name. - Barcode too wide or too narrow. The
^BYcommand sets the bar width; Odoo uses^BY3by default. - Changes that survive upgrades. Odoo warns that an upgrade can overwrite or break custom ZPL. We put label changes in a small custom module instead of editing the view in the database, so they sit in version control and are checked at each upgrade.
Arabic on Zebra labels
Shelf labels in Kuwait often carry the Arabic product name. Odoo sends its ZPL labels as UTF-8 (the ^CI28 command at the top of the template), but the printer also needs a font that holds Arabic letters and joins them correctly. Print an Arabic product name on your own printer and label stock before you order labels in volume. We test Arabic labels on each printer model before delivery.
When nothing prints
| What happens | Likely cause | What to do |
|---|---|---|
| Nothing prints on a network printer | The web server is off, the IP address changed, or the PC is on another network | Turn the web server on, reserve the IP address and print from a device on the printer’s network |
| The browser blocks the print | Local network access is not allowed for the Odoo address | Allow it in the browser’s site settings, then reload Odoo |
| Blank labels, or nothing from an IoT printer | A driver is selected for the Zebra printer, or the printer rejects the ZPL | Remove the driver on the IoT system and check the ZPL template |
| Text runs off the label | The standard template is made for 4 x 6 inch labels | Adjust the template to your label size |
| Labels drift down the roll | The printer has not measured the new label stock | Run the printer’s media calibration after loading new stock |
| The wrong printer prints | Each browser remembers its own printer choice | Open /odoo/reset-printers in that browser to clear the choice, then print again |
How we set up Zebra printing for Odoo
We supply Zebra label printers in Kuwait with labels and ribbons cut to the sizes your templates use. Before delivery we fix the printer’s IP address, turn on its web server, add it to Odoo with the reports it prints, adjust the ZPL templates for your label sizes and your Arabic and English text, and test with your products on a copy of your database. The setup sits inside Odoo Inventory, so labels print from the same receipts and deliveries your team already uses.
What to do next
- List the labels you print today, their sizes, and where they are printed: receiving, packing, the shop or the production line.
- Check which Odoo version you run. On Odoo 20, start with a network printer; on Odoo 19, plan an IoT box.
- Ask us for a Zebra printer quotation with the labels set up in Odoo, or book a consultation to plan labeling across your sites.
