GuideGetting started
- Create your workspace — sign up with your work email and confirm it. You become the Owner of a new company workspace; your labels are private to it.
- Design your first label — the designer opens with a sample. Set your label stock size (millimetres or dots), then add text, barcodes, lines, boxes and images. Every save keeps a version you can restore.
- Save a printer — in the designer's Print dialog (or the Printers page), enter a name, the printer's IP address, port (usually 9100) and its language: Honeywell for Fingerprint printers, Zebra for ZPL.
- Install the Print Bridge on the PC you print from (see below), then print a test label.
- Invite your team — Team page → Invite, choosing each person's role. Operators who only print get exactly that and nothing more.
GuideThe Print Bridge
Browsers can't open raw network connections to printers, so a small helper does it: the Print Bridge runs on the PC you print from, listens locally, and forwards each job over your own network to the printer. Nothing is sent anywhere else, and no inbound firewall rules are needed.
Install
- Download it from the Print Queue page ("Download Print Bridge") or the designer's Print dialog.
- Windows: run the installer and approve the admin prompt. The bridge installs as a background Windows service — it starts with the PC and there's no window to keep open — and a spooler icon appears in the taskbar showing its status (blue = running, grey = stopped, with a right-click menu to re-check or restart). Uninstall from Settings → Apps → spooler Print Bridge.
- macOS: extract with
tar xzf, thenchmod +x XileitPrintBridge && xattr -d com.apple.quarantine XileitPrintBridgeand run it in a terminal.
Things to know
- The bridge must run on the same PC as the browser you click Print in, and that PC must be able to reach the printer's IP.
- Install it on each workstation people print from — one bridge serves all printers that workstation can reach.
- If the app says "Print bridge not detected", check the bridge is running, then click re-check.
GuideUsing the Print Queue
The queue separates creating a label job from physically printing it — so nothing prints to an unattended, empty or wrongly-loaded printer.
- Pending lists jobs waiting for release — sent by your systems via the API, imported from CSV, or queued by hand with "+ Queue a job".
- Review & print opens a job: the approved data (read-only), a preview of the exact label, and the release controls. If the source system left the design, copies or printer open, you choose them here — and your choices stick for reprints.
- Cancel (with confirmation) moves a job to History without printing; Restore to queue brings a cancelled job back.
- History is searchable by transaction, PO, delivery, material or SSCC. Reprinting requires a reason and reuses the original data unchanged.
- Every action is audited: who, when, which printer, how many copies, and why.
Queueing by hand or from a spreadsheet
"+ Queue a job" lets Managers (and Operators an owner has ticked "Queue jobs" for) pick a design, fill in its {tags}, set copies and a printer — or switch to From spreadsheet: upload your product master (Excel .xlsx/.xls or CSV), filter, and tick the rows to print. Each ticked row becomes a job with its tags pre-filled from the column headers that match the design's tag names (case-insensitive). The Copies field sets the default per row; a qty/quantity/copies column in the file overrides it per row.
Sequence tags — numbered runs
To print a numbered run (pallet 1 of 10, 2 of 10…), write the tag in the design with a trailing plus: {palletNo+}. The data side stays plain — your spreadsheet column, API field or manual input is still just palletNo with the starting value. Each printed copy then steps the value's trailing digits by one, keeping the zero-padding: PFP000001 printed with 10 copies comes out as PFP000001 through PFP000010. Works the same on Honeywell and Zebra, from every print path. Tags without the plus print identically on every copy, so barcodes and batch numbers are never stepped by accident.
IntegrationThe Print API
Owners generate a Print API key on the Team page. Your systems then queue jobs with a single POST:
curl -X POST https://www.spooler.nz/api/print/jobs \
-H "X-Api-Key: lvk_your_key_here" \
-H "Content-Type: application/json" \
-d '{
"transactionId": "ORDER-10042",
"labelType": "Carton 4x2",
"copies": 3,
"product": "Frozen Snapper Fillets 5kg",
"batchNo": "B-2026-0825",
"bestBefore": "2026-09-25",
"barcode": "9421023610046"
}'
| Field | Meaning |
|---|---|
transactionId | Required. Your reference. Re-sending the same id updates the pending job; re-sending after it printed queues a replacement. |
labelType | Optional (alias format) — the exact name of a design in your library. Omit it and the person printing picks the design at release. |
copies | Optional (aliases qty, quantity), 1–99. Omitted = asked at print time. |
printer | Optional — a saved printer's name, pre-selected at release. |
site | Optional — a site name; the job appears only in that site's queue. Unknown names are rejected. Omitted = visible to all sites. |
| anything else | Becomes a {tag}: a design containing {batchNo} gets that value filled in. Names match case-insensitively; unmatched tags print as-is. |
| sequences | A design tag written as {palletNo+} steps its number once per copy: send palletNo = PFP000001 with 10 copies and the printer receives PFP000001 through PFP000010, zero-padding preserved. The trailing '+' lives in the design, not in your data. |
Also: GET /api/print/jobs/<transactionId> returns status and history; DELETE cancels an unprinted job. Errors come back as JSON with a clear error message.
IntegrationSupplier keys — one system, many companies
When a central system (your ERP) creates labels that other companies print — suppliers printing inbound labels, for example — use a Supplier key (Company menu → Supplier Keys):
- Create a key for the source system.
- Map the system's supplier codes (e.g.
SUPPLIER_07) to companies. Each job'ssupplierIdroutes it to that company's queue. - Map the system's label codes (e.g.
ASN_CARTON) to your approved designs — pinned to a version, so later edits never silently change what suppliers print.
Suppliers see only their own jobs and release them on their own printers; you get a dashboard across all suppliers. The payload is the same as the Print API, plus the required supplierId.
ReferenceTeam roles
| Role | Print queue | Printer setup | Label design | Team & keys |
|---|---|---|---|---|
| Operator | ✓ | — | — | — |
| Manager | ✓ | ✓ | — | — |
| Admin | ✓ | ✓ | ✓ | — |
| Owner | ✓ | ✓ | ✓ | ✓ |
Owners can additionally tick "Queue jobs" on any User so they can create jobs manually without gaining other rights. Roles take effect within a few minutes of changing (or immediately on next sign-in).
ReferenceSites — one company, many locations
Companies with several locations (stores, branches, plants) can define sites (Company menu → Sites, owners only). Head office designs the labels once; each site prints its own.
- People — assign each person to a site on the Team page. A site-pinned person sees only their site's print queue and printers; people with no site (head office) see everything.
- Printers — pinned to a site on the Printers page. A site-pinned manager's printers always belong to their own site; company-wide printers (no site) are visible everywhere.
- Jobs — a job queued by a site user lands in that site's queue automatically; API jobs route with the optional
sitefield; anything unrouted is company-wide. - Licensing — printer counts are licensed per site (or per company when no sites are used). The caps are shown on the Sites page and set by your provider.
- Deleting a site keeps its users, printers and jobs — they just become company-wide again.
FAQCommon questions
Which printers are supported?
Honeywell / Intermec printers speaking Fingerprint, and Zebra printers speaking ZPL — networked (TCP, usually port 9100). Set the language on each saved printer.
Does my label data leave my network?
Designs and job data are stored in the service so your team shares one library and queue; the printing itself goes straight from the Print Bridge on your PC to your printer over your own LAN.
Can I keep using my existing Fingerprint labels?
Yes — paste the code into the designer's import and keep editing visually. Export back to code any time.
Why does a reprint ask for a reason?
Reprints are the classic source of duplicate-label problems, so each one records who, why, and on which printer. Replacement labels reuse the original data; a genuinely new carton or pallet should come from your source system as a new job.
What happens if a printer is offline when I release?
The job is marked Failed with the error, stays visible, and can be released again once the printer is back.
I sent a job via the API but nothing printed.
That's by design — API jobs wait in the Print Queue until a person releases them. Check the queue's Pending tab.
How do I print a numbered run, like PFP000001 to PFP000010?
Mark the tag as a sequence in the design — {palletNo+} — supply the starting value as normal, and set copies to the run length. See Sequence tags above. If the number feeds a barcode with a check digit (like a full SSCC), the check digit must be recalculated per label, not just stepped — ask us about that before relying on it.