Skip to content

Printing

View as Markdown

Horizon can send labels and shipping documents straight to the printers in your warehouse, instead of through the browser’s print dialog. It works through PrintNode, a print service with a small app that runs on the computer your printers are plugged into.

It all lives in “Labels & printing”, under “Shipping” in “Settings”, in the order you set it up: the label format and size, the PrintNode connection with the printer choice and its test page, automatic printing, the recent jobs, and the label formats table last. Until October 2026 the connection, the printers and the recent jobs were a section of their own, “Printers”, under “Connections” (and until September 2026 all of it but the label format was one section called Printing); old links to either open “Labels & printing” at the printer, and the search finds it by PrintNode or printer.

Without it, nothing changes: the Orders page prints through the browser as before.

Connecting PrintNode

Create an API key in your PrintNode account, paste it into “PrintNode API key” and press “Connect”. Horizon asks PrintNode who the key belongs to before it keeps it.

The key is stored encrypted and never shown again: the page only ever shows its last four characters. “Check connection” asks PrintNode again, for example after you revoked a key in the PrintNode dashboard. “Replace key” swaps it for another, and “Disconnect”, once you confirm it, forgets it, the printers and the automatic printing with it.

If PrintNode cannot be reached when you connect, the key is kept but marked as not yet checked. Check the connection again a moment later.

Choosing the printers

Once connected, the page lists the printers of your PrintNode account, live. Choose two:

  • “Label printer”, usually a thermal printer such as a Zebra, for shipping labels;
  • “Document printer (A4)”, an ordinary printer for packing slips, pick lists and customs invoices.

Each choice is saved as you make it. A printer marked offline, or one on a computer that is not connected, still takes jobs: PrintNode keeps them until that computer is back. Whenever something is sent to a printer that is offline at that moment, Horizon says so: the result on the Orders page, the test page’s message and “Recent print jobs” all say it will print when that printer is back online. If PrintNode cannot say whether the printer is online, the print is sent all the same, without the warning. “Print a test page” beside a printer sends it a page with its own name on, the right size for that printer, so you can check the paper is the way round you expect. “Refresh list” reads the printers again after you added one to PrintNode.

Printing labels automatically

In “Labels & printing”, “Print labels automatically when they are created” sends every label to the label printer as soon as it is bought, however it was bought: from an order, in bulk with create and print, from the create order form, or by an automation rule. “Also print the packing slip” sends the order’s packing slip to the document printer with it.

A label is printed once, with a page for every parcel when an order ships in several. If the print service is down, Horizon tries again for a while, and never prints the same label twice by retrying. A print that fails never affects the label itself: the label is bought, recorded and charged exactly as it would be without printing, and you can print it from the Orders page.

If PrintNode stops accepting your key, for example after you revoked it in the PrintNode dashboard, nothing more reaches your printers until you connect a key again. Every label bought meanwhile is listed as failed under “Recent print jobs”, and the Orders page says the printer is disconnected when it prints through the browser instead.

The Orders page with a printer

When a label printer is chosen, the create-and-print action and printing existing labels send the labels to it, and the result says which printer they went to. “Download PDF” in that result still gives you the file, for a printer that ran out of paper. The “Documents” menu sends to the document printer the same way.

With automatic printing on, a create-and-print run does not print the labels it has just bought a second time: they were sent the moment they were bought. A label whose automatic print is still waiting for PrintNode to come back is printed by the run instead, and only once. One that PrintNode received without confirming it is left to its own retry, which cannot print it twice.

With “Also print the packing slip” on, printing packing slips from the “Documents” menu leaves out the slips that already printed with their labels, and the result says how many. It also leaves out, and says so, a slip sent while its printer was offline, which prints when that printer is back, and one PrintNode never confirmed, which may already be printing. “Print again anyway” prints those slips once more, when you do want a second copy. A slip whose automatic print is still waiting, for example for PrintNode to come back, is printed from the “Documents” menu instead and its automatic print is stopped, so it prints once. Pick lists and customs invoices never print automatically, so the “Documents” menu always prints them.

It works the other way round too. If you print an order’s packing slip from the “Documents” menu before you buy its label, for example to pick and pack first, the label prints on its own but its slip does not print a second time. “Recent print jobs” says why, and the “Documents” menu prints it again if you need it.

If an automatic print of the same orders is being sent at that very moment and takes too long, nothing is printed and the result asks you to try again in a moment.

When a print gets no answer in time, or PrintNode does not answer, the result says to check the printer, because the labels may already be on their way. Printing the same selection again does not print them twice: it is sent under the same print key, which PrintNode ignores when it already has the job. When only some labels could be sent, the result names those orders and offers their file: the PDF, or the ZPL file for thermal labels.

Label formats

“Label formats”, the last card of “Labels & printing”, shows the saved label format and size and what each carrier prints for them; it reads them again once you save a change. “Change the label format” takes you back up to the card. Not every carrier can print every format: when a carrier cannot, it keeps its own format and the table says so. See Shipping defaults for the card itself.

  • UPS prints image labels or thermal ZPL and EPL labels, always on 4x6 inch stock. It has no PDF label; its image labels print as PDF pages.
  • Chronopost prints each product on the template it is certified with, whatever the label format: a ZPL label for Chrono 13 and Chrono 18, or a PDF when “Chronopost PDF labels for Chrono 13 and Chrono 18” is on in the “Label” card, and a PDF for relay, Europe, international and return labels. For Chrono 13 and Chrono 18, the table’s note says which way that switch is set.
  • Mondial Relay prints PDF only, on 10x15 cm or A4 paper.
  • GOFO and HIVED choose their own label.

ZPL is a thermal printer language, not a page: a browser cannot print it, so it is left out of the PDF the browser prints. With a label printer connected, ZPL labels are sent to it as they are. Without one, the Orders page says so and offers the ZPL labels as a file with “Download .zpl”, which a thermal printer’s own utility can print.

Recent print jobs

“Recent print jobs”, in “Labels & printing”, lists the last jobs sent to your printers, automatic and manual, with the orders each one held and anything that went wrong in words: PrintNode unreachable, a key it no longer accepts, a printer that no longer exists. A job sent while its printer was offline says so, an automatic job that a print from the Orders page replaced says it was printed from there instead, and an automatic packing slip left out because it was printed by hand before the label says that.

Who can change it

Account owners and administrators can connect PrintNode, choose printers and print. A read-only team member sees the settings but cannot change them or send prints.