spooler spooler

User manual

Everything in spooler, chapter by chapter: from the first label to running a multi-site print operation fed by your ERP. Skim the chapter list, or search the page with Ctrl+F.

Chapter 1How it fits together

spooler has four moving parts. Once you can name them, every screen makes sense.

PartWhat it isWhere you find it
WorkspaceYour company. Labels, printers, people, jobs and data all belong to it and are invisible to other companies. Larger companies split a workspace into sites.Created when you sign up; managed on the Team page
LabelsDesigns, kept in folders in My Labels. A label mixes fixed content with tags such as {product} that are filled in when it prints. Every save keeps a version.The designer (/app)
Printers & the Print BridgeSaved printers are shared with the team. Browsers can't talk to printers directly, so a small helper on each printing PC, the Print Bridge, carries the job the last metre: over the network to an IP address, or to a USB printer plugged into that PC.Printers page; bridge download on the queue
Print QueueWhere jobs wait to be released to a printer. Jobs come from your own systems through the API, from spreadsheets, or are queued by hand. Nothing prints until a person releases it, and every release is audited.Print Queue page

Two printer families are supported: Honeywell / Intermec printers speaking Fingerprint, and Zebra printers speaking ZPL. One design prints on either; you set the language per saved printer, and the print engine generates the right code.

Chapter 2Getting started

  1. Create your workspace. Sign up with your name, work email, company name and a password, then confirm the email. You become the Owner of a new workspace.
  2. Set the label size. Open the designer. In Label settings, enter your stock's width and height in millimetres, the printer's resolution (203, 300 or 600 dpi) and whether it prints direct thermal or thermal transfer.
  3. Design. Add text, barcodes, lines, boxes and images from the toolbar; drag them into place. Wherever a value changes per label, type a tag such as {batch} instead of a value.
  4. Save. Click Save, name the label, and pick a folder. It now appears in My Labels for your whole team.
  5. Save a printer. On the Printers page add a printer: a name, its IP address and port (usually 9100) or, for USB, its Windows name, and the language: Honeywell or Zebra.
  6. Install the Print Bridge on the PC you print from: Windows installer or macOS app from the Print Queue page. It runs in the background from then on.
  7. Print a test. In the designer click Print, choose the saved printer and Preview data, and send one label.
  8. Invite the team. Team page → Invite a teammate, choosing each person's role. Operators who only print get exactly that.
Tip. The demo labels in your new workspace are ordinary labels. Open one, look at how its tags are written, and delete them when you no longer need them.

Chapter 3Accounts and signing in

Getting an account

Accounts are set up for you rather than self-served. Request an account on the site asks for your name, work email, company and a line about what you print; the team replies with an invitation email, usually within a working day. The link in it lets you choose a password and lands you in your new workspace as its Owner. If a colleague already has a workspace, ask them for an invite from the Team page instead. Sign-in and account requests are not available over the Tor network.

Joining by invitation

An Owner invites you from the Team page. The email contains a link that lets you set your name and password; the role and, if used, the site were chosen by the person who invited you. Invitations expire, and an Owner can revoke a pending invite at any time.

Forgotten password

Use Forgot your password? on the sign-in page. The reset link is emailed to you. If the confirmation email never arrived, Resend confirmation sends a fresh one.

Your account: name and password

Open the menu under your email address in the top bar and choose My account. Change your display name, which is what teammates see in the queue history and audit trail, or your password by entering the current one and the new one twice. Changing the password signs out every other device you were using; the one you are on stays signed in. If you have forgotten the current password, sign out and use Forgot password instead.

Role changes

When an Owner changes your role, site or Floor-only setting, the change reaches you the next time a page fully loads, or immediately the next time you sign in.

Chapter 4The designer

The designer is where labels are made. The canvas in the middle shows the label at true proportions; the toolbar above holds tools and file actions; the panel on the right shows the settings of whatever is selected, or the label's own settings when nothing is.

4.1 The toolbar

GroupButtons
AddText, Barcode, Line, Box, Image. Each drops a new element onto the canvas, selected and ready to edit.
EditUndo / Redo, Copy / Paste, Delete (shows how many elements are selected).
ViewAt the right: the zoom control (−, the percentage, which resets to 100% when clicked, +, and fit-to-window), a grid toggle, and the ? button listing keyboard shortcuts. The open label's name and size sit beside them.
FileNew blank label, Save, Save As (a copy under a new name), My Labels (the library), Close (clears the canvas).
OutputPrint opens the print dialog.
ArrangeAlign left / centre / right / top / middle / bottom (two or more selected) and distribute horizontally or vertically (three or more). Greyed out until enough is selected. See Positioning.
FilesExport saves the design as a portable .xld file; Import loads one. Printer code and capture from other software are imported through the code panel's Import button below the canvas.

Fields whose values have a syntax, such as Tag, Anchor Point and Ratio, carry a small i button. Click it for a quick explanation with examples, and a link to the relevant chapter here.

Below the canvas, the generated printer code updates live as you edit. You can copy it or save it as a text file, which is handy for pasting into another system or for support.

4.2Label settings

Shown in the right-hand panel when nothing is selected. Set these first, because element positions are measured from the label's edges.

SettingMeaning
Width / Height (mm)The physical label. Measure the stock; don't trust the box. Sizes are stored in printer dots internally, so millimetre values round to the nearest dot.
DPIThe printer's resolution: 203, 300 or 600. Font sizes are in points and positions in millimetres, so a design moves between resolutions, but check barcode module widths after changing it.
Label DirectionHow the design sits on the media as it feeds: DIR 1 (0°), DIR 2 (90° clockwise), DIR 3 (180°), DIR 4 (270° clockwise). The canvas always shows the label the way you read it; the direction tells the printer how to turn it. Use it when the roll is loaded sideways relative to how the label is read.
Print MethodDirect Thermal for heat-sensitive stock with no ribbon; Thermal Transfer when a ribbon is loaded. Honeywell printers are told which one to use; on Zebra the setting is left to the printer.
Margin (mm)The safe-area guide, drawn as a dashed line inside the label edge. Printers drift a millimetre or so between labels, so keep content inside it. It is guidance only and never printed or enforced.

4.3Elements

Select an element by clicking it; drag a rectangle to select several; Shift-click adds to a selection. The right-hand panel shows the selected element's properties. Every element has a position, an anchor point and a direction; the rest depends on its type.

Text

  • Text is what prints. It may contain tags: Batch {batch}, Packed @date(dd MMM yyyy).
  • Preview Text is optional example content shown on the canvas in place of tags, so a design full of tags still looks like a real label while you work. It never prints.
  • Font is chosen from the printer-resident faces: Swiss 721 (regular, bold, condensed), CG Triumvirate Condensed Bold, CG Times (regular, bold), Century Schoolbook, Letter Gothic, Andale Mono (regular, bold), and the machine-readable OCR-A and OCR-B. On a Zebra printer every face maps to the resident scalable font except the two OCR faces, which use Zebra's OCR fonts.
  • Size (pt) is in points, the same on every printer resolution.
  • Mag Width / Mag Height stretch the glyphs by whole multiples (1×–4×) for big, blocky text without a huge point size.
  • Invert prints white text on a black pad, for headings like "KEEP FROZEN".
Fonts on paper. Printer-resident fonts differ slightly between makes, so the canvas is a close preview, not a pixel-exact one. Print one label on each printer family you use before signing off a design.

Barcode

  • Type: Code 128 (automatic subset, or forced A, B or C), Code 39, Code 93, Codabar, Interleaved 2 of 5, EAN-13, EAN-8, UPC-A, UPC-E, QR Code, Data Matrix, PDF417, MaxiCode and POSTNET. The two-dimensional codes (QR, Data Matrix, PDF417, MaxiCode) need a printer that supports them; all current Zebra and Honeywell models do.
  • Data is the encoded content and may contain tags: {sscc}, 01{gtin}10{batch}. Preview Data is example content for the canvas, like Preview Text.
  • Height is the bar height; Ratio is the narrow-module width in dots (2 is typical at 203 dpi, 3 at 300). Wider modules scan better from further away and make the symbol wider.
  • Human readable prints the digits under a 1D barcode.
  • Check digits: for EAN-13, EAN-8 and UPC-A, enter the number with or without its check digit. If you give the full 13, 8 or 12 digits, the check digit is dropped and the printer recalculates it, so a typo never produces an unscannable code.

The canvas draws real barcode patterns from your data, so a value that a symbology cannot encode (letters in an EAN, for instance) shows as a warning outline instead of bars.

Line and Box

A Line has a length and a thickness in millimetres. A Box has a width, a height and a border thickness; make the thickness half the smaller side or more and it prints as a solid block. Both are drawn in the printer's own graphics commands, so they are always crisp.

To resize on the canvas, select the box and drag the blue handle at its bottom-right corner; a line has the handle at its right end and the drag changes its length. Width, height and thickness can still be typed in the panel, and a resize is one undo step. Images resize the same way, keeping their proportions.

Image

  • Click Upload in the Image panel and choose any common image file (PNG, JPEG, GIF, BMP…), up to 10 MB. It is converted to pure black and white at the label's resolution, because thermal printers have no grey. Logos with clean edges convert best; photographs come out as hard black shapes.
  • Placeholder W / H is the size the image is fitted into: an image larger than the placeholder is shrunk to fit; a smaller one keeps its natural size. Change the placeholder and the stored image is re-sampled from the original upload, so repeated resizing never degrades it.
  • Until an image is uploaded the element prints nothing and shows a named placeholder on the canvas, so a design can be laid out before the artwork arrives.
  • Images are embedded in the print job itself. Nothing has to be loaded onto the printer beforehand, and the same design prints on Zebra and Honeywell alike.

4.4Positioning, anchors and arranging

Position and anchor

Every element has an X / Y position in millimetres from the label's top-left corner, and an Anchor Point numbered like a telephone keypad turned upside down: 7, 8, 9 across the top; 4, 5, 6 through the middle; 1, 2, 3 along the bottom. The anchor is the point of the element that sits at X, Y. Anchor 7 pins the top-left corner; anchor 8 pins the top-centre, so text stays centred on that point however long it gets; anchor 3 pins the bottom-right, so a right-aligned price grows leftwards.

Choose anchors by what must stay put when content changes. Centred titles want 8 or 2; right-aligned numbers want 9, 6 or 3; most everything else is fine at 7.

Direction

Each element has its own Direction (0°, 90°, 180°, 270°) in addition to the label's direction, for text running up the side of a label or a barcode printed as a ladder.

Moving things

  • Drag elements with the mouse; they snap to the grid when it is on. Drag on empty canvas to marquee-select several.
  • Type exact X / Y values in the panel for precision.
  • Align buttons (two or more selected) line up left, centre, right, top, middle or bottom edges. Aligning re-anchors unrotated elements at the shared edge or centre, so a centred group stays centred when its text changes and lines up identically on paper.
  • Distribute (three or more selected) makes the gaps between elements equal, keeping the outermost two where they are. A selection spanning several columns is distributed column by column (rows, for horizontal distribution), so selecting a whole two-column form and distributing vertically tidies both columns without mixing them.
  • Bring forward / Send backward change drawing order, which matters when an inverted text pad or a box overlaps something else.

Keyboard shortcuts

Ctrl+Z / Ctrl+YUndo / Redo
Ctrl+C / Ctrl+VCopy / Paste (pastes offset so the copy is visible)
Ctrl+DDuplicate the selection
Ctrl+ASelect all
DeleteDelete the selection
Ctrl++ / Ctrl+−Zoom in / out
Arrow keysNudge the selection by one grid step

On a Mac, use ⌘ where Ctrl is shown.

4.5My Labels, folders and versions

The library

My Labels is your company's shared library: folders on the left with a count per folder, labels in the chosen folder on the right, and a search box that looks across every folder and shows each hit with its folder path. Each row has Open and a ⋯ menu with Rename, Duplicate, Version history, Move to folder, and Delete (system administrators also see Move to company). + New folder creates a folder inside the selected one; the folder header offers Rename and Delete folder. Deleting a folder deletes what is in it, after confirmation.

Saving

Save writes a new version of the open label. Save As creates a separate label with a new name, leaving the original untouched: the right tool for a variant. Label names must be unique within a folder. The canvas title shows an asterisk while there are unsaved changes, and closing the browser tab warns you.

Version history

Every save keeps a version, and History lists the last 20 with who saved them and when. Opening one shows it on the canvas; Restore makes it the current version by saving it again, so nothing is ever lost from the history by restoring. Supplier-key mappings pin a specific version, so restoring never changes what suppliers print unless the mapping is updated.

Two people, one label

If someone else saved the label after you opened it, your Save is refused with their name and time. You can overwrite their version with yours, or cancel and use Save As to keep both. Their version stays in the history either way.

Who can do what

Admins and Owners design and save. Managers and Operators can open labels to look and print but cannot change the library. See Team & roles.

4.6Import and export

Label files (.xld)

Export downloads the open design as a .xld file: a self-describing text format that holds the whole label. Import loads one onto the canvas as a new, unsaved design. Use it to move a design between workspaces, keep an offline backup, or send a label to support.

Printer code

The Paste printer code tab of the Import dialog accepts Honeywell Fingerprint or Zebra ZPL, pasted or loaded from a file, and turns it into an editable design. The language is detected automatically. Text, barcodes, lines, boxes and embedded graphics come through; anything with no equivalent in the designer is listed in the import notes. This is how existing hand-written labels get into spooler without redrawing them.

Capture from other software

The Capture tab turns the Print Bridge into a fake printer so labels from BarTender, NiceLabel, Loftware and similar programs can be printed straight into the designer. It is covered step by step in Migrating from BarTender.

4.7Printing from the designer

Click Print. The dialog has three parts.

Printer

Pick a saved printer, or type an IP address and port for a one-off and, optionally, save it with a name and language for next time. The bridge status box below tells you whether the Print Bridge is running on this PC; without it nothing can print.

Data to send

ModeWhat prints
TagsProduction output: the design exactly as saved, with {tags} left in place. Useful for checking the code another system will receive, or for printers that fill tags themselves.
Preview dataA test print using each element's Preview Text / Preview Data in place of its tags, with @date-style tags stamped with the current time. This is the mode for proofing a design.
CSV batchOne label per row of a spreadsheet you choose (Excel or CSV, up to 1,000 rows). Column headers fill the matching tags; a qty column sets copies per row. For anything more than a one-off, use the Print Queue instead, which keeps a history of what was printed.

Copies

1 to 99 copies of the label. When the design contains a sequence tag, each copy steps the number.

After sending, the dialog reports how many bytes reached the printer and anything the printer replied. Honeywell printers answer every command, so an error there usually names the problem exactly.

Chapter 5Tags: data, sequences and dates

Tags are the variable parts of a label. They are written straight into text or barcode data, and the print engine fills them in when the label prints, wherever the print comes from: the designer, the queue, a spreadsheet or the API.

Data tags: {name}

  • Write a name in braces: {product}, {bestBefore}, {sscc}. Names match case-insensitively; {BatchNo} and batchno are the same tag.
  • Values come from whatever creates the job: a JSON field of the same name on the API, a spreadsheet column with that header, or the box an operator fills in when queueing by hand.
  • A tag with no value prints as written, braces and all, so a missing field is visible on the label rather than silently blank.
  • Tags can sit inside longer content: Batch {batch} · Line {line}, or 01{gtin}17{expiry}10{batch} in a GS1-128 barcode.

Sequence tags: {name+}

Add a trailing plus in the design and the tag becomes a counter: {palletNo+}. The data side stays plain, 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. Tags without the plus print identically on every copy, so batch numbers and barcodes are never stepped by accident. A single job unrolls to at most 500 distinct labels.

Check digits. If a sequence feeds a barcode with a check digit computed over the whole number, such as a full SSCC, stepping the last digit is not enough: the check digit must be recalculated for each label. Talk to us before relying on a sequence inside an SSCC.

Date and time tags: @date, @time, @datetime

These are filled in at the moment of printing, in the printing PC's time zone. Design the label today, print it next Tuesday, and it says next Tuesday. Add a format and/or an offset in brackets, in either order, separated by a comma (a trailing offset without the comma, @date(dd MMM yyyy +24m), is understood too).

TagPrints as
@date05/09/2026
@date(dd MMM yyyy)05 Sep 2026
@date(yy.mm.dd)26.09.05. Inside @date, mm means month.
@date(+7d)a week from today, in the default format
@date(dd/mm/yyyy, +14d)a fortnight from today: a best-before date
@time   @time(h:mm tt)14:05   2:05 PM. Inside @time, mm means minutes.
@datetime(yyyy-MM-dd HH:mm)2026-09-05 14:05. Mixes both, so month is upper-case MM and minutes lower-case mm.

Tokens: yyyy yy year; mmmm mmm mm m month (September, Sep, 09, 9); dddd ddd dd d day (Saturday, Sat, 05, 5); hh h hour; ss seconds; tt AM/PM, which switches hours to a 12-hour clock. Anything else prints literally, so @date(dd-mm-yyyy) and @date(dd.mm.yyyy) both work.

Offsets: +7d / -1d days, +2w weeks, +3m months, +1y years, +12h hours. Month and year offsets keep the day where the calendar allows.

The canvas previews today's values. A data tag whose value itself contains a date tag is expanded too, so a spreadsheet column can hold @date(+10d) for products with a ten-day life.

Counters the app keeps for you: @seq(Name)

A {palletNo+} sequence steps a number your data supplied, which means someone has to remember where the series got to. A sequence moves that memory into the app. Under Company → Sequences a Manager creates a counter with a name, a prefix, a digit count, the next number and a step: Pallet, prefix PAL, 6 digits, next 412. On the design write @seq(Pallet) and each printed label takes the next number: PAL000412, PAL000413, and so on. It is an @-tag because the value comes from the app at print time, like @date, not from your data.

  • Numbers are taken when a job is sent to the printer, not when it is queued, so a cancelled job never burns a number and twenty queued jobs do not lock in an order. The queue shows next in the sequence until then.
  • A reprint reuses the same numbers. The range a job printed with is stamped on the job, so reprinting a pallet label gives you the same pallet number. The queue and Floor show the range the job holds.
  • Sites: give a counter a site and jobs at that site use it; jobs elsewhere fall back to the company-wide counter of the same name. Two plants can run their own pallet series under one design.
  • Spreadsheets and copies: counters run on across rows and copies, so a batch of 30 labels takes 30 consecutive numbers. Printing straight from the designer takes numbers too.
  • Print API: when a job auto-releases, the numbers it used come back in the response under release.sequences.

Editing a counter's next number is how you resynchronise after a paper jam or a run on another system; every edit is written to the audit trail with the old and new value. The designer canvas shows the tag itself; the queue's preview shows the real next number. A design that names a counter your company does not have will not print until the counter is added.

Dates from your data: {name+14d} and {name:format}

When the date comes from the data rather than the clock, a data tag can shift and reformat it. Write the offset and/or a format after the name; the value is read as a date, adjusted, and printed in the format you asked for.

TagWith packed = 2026-09-01
{packed}2026-09-01, exactly as supplied
{packed+14d}15/09/2026: packed plus 14 days, a best-before from the packing date
{packed+6m:dd MMM yyyy}01 Mar 2027
{packed:dd/mm/yyyy}01/09/2026: no shift, just reformatted from the ISO date your system sent
{packed+1y-1d}31/08/2027: offsets can be chained

Offsets use the same units as @date: d, w, m, y, h, with a bare number meaning days. Formats use the @date tokens, so mm is the month unless the format also has a time part. Incoming values are read as ISO dates (2026-09-01, with or without a time), day-first dates (01/09/2026, 1.9.26, 01-09-2026), 20260901, or written months (01 Sep 2026). Month-first American dates are not assumed. A value that isn't a date prints as supplied, so a bad feed is visible on the label rather than silently wrong.

A bare plus is still a sequence: {palletNo+} steps per copy, {palletNo+1d} adds a day. The two never collide because an offset always has a number.

Chapter 6Printers

The Printers page holds the printers your team prints to. Managers, Admins and Owners can change it; everyone can print to what is there.

FieldMeaning
NameHow the printer appears in every printer list. Unique within the company.
ConnectionNetwork (IP address): the Print Bridge opens a connection to the printer's address, port 9100 unless yours differs. USB (via Print Bridge): the printer is plugged into the printing PC; see below.
LanguageHoneywell for Fingerprint printers (Intermec PM, PC, PD and PX series and their Honeywell successors). Zebra (ZPL) for Zebra and ZPL-compatible printers.
SiteWhich site's operators see this printer. Company-wide is visible to everyone. A manager pinned to a site can only add printers to their own site.
DefaultPre-selected in print dialogs. One per company.

Print stations: printing from tablets, phones and PCs without a bridge

Normally the browser that clicks Print talks to the Print Bridge on the same PC. A print station turns that around: the bridge on a PC in the plant enrols with spooler and keeps a connection open, and any signed-in device can release jobs to that PC's printers. Nothing is opened inbound to your network, because the connection starts from inside.

  1. On the PC that runs the Print Bridge (1.7 or newer), open the Printers page and click Connect this PC as a station. If you use sites, pick which site it serves first. The PC appears in the stations list within a second, named after the machine; rename it to something operators recognise ("Dock PC", "Packing line 2").
  2. For a USB printer, edit the printer and set Plugged into to that station. The printer-name list then comes from the station's own report of what is installed, so you can do this from any device.
  3. Network printers need nothing more: any online station in the printer's site can reach them.

The list shows each station's online state live, its bridge version and how many printers it has installed. Remove revokes the station's connection; Disconnect this PC on the station itself forgets the enrolment locally. A station that is switched off shows as offline and jobs simply wait.

USB printers

  1. Install the printer in Windows the normal way, with its Zebra or Honeywell driver or the Generic / Text Only driver. Any of them works, because the bridge hands the label code to the driver raw and the driver passes it straight through. Confirm a test page prints.
  2. Make sure the Print Bridge (1.5 or newer) is running on that PC.
  3. Add a printer with Connection USB (via Print Bridge). Click List this PC's printers and pick the printer from what the bridge reports, or type its exact Windows name if you are setting it up from another PC.

A USB printer definition is shared with the team but only prints from PCs where a printer of that name is installed and the bridge is running. Give the same printer the same Windows name on each workstation, or save one entry per workstation. Other Windows programs can keep using the printer. Because the job goes one way through the Windows spooler, the printer's reply is not captured for USB printers. On a Mac, the entry is the CUPS queue name.

Licences

Printer counts are licensed: per site when sites are used, otherwise per company. The Printers and Sites pages show the cap, and adding a printer beyond it is refused with a message. Your provider sets the caps.

Chapter 9Data: saved spreadsheets

Uploading the same product master before every print run gets old. The Data page (under Company in the top bar) keeps spreadsheets for you, so operators pick rows rather than files.

  • Add a data source: give it a name and upload an Excel (.xlsx, .xls) or CSV file, up to 20,000 rows. Or, right after a one-off upload in the queue, click Save this spreadsheet for next time.
  • Use it: in the queue's spreadsheet mode, pick the data source from the saved list, filter, tick rows, print. Column headers still match the design's tags by name, so nothing about your labels changes.
  • Edit it: open a data source to fix a value inline, add a row, or delete rows. Replace from file swaps in a fresh export while keeping the name; Download CSV gives you the current table back for bulk editing in Excel.
  • Sites: a user pinned to a site saves data for that site; head office saves company-wide data every site can print from. Site data is edited by its own site, company-wide data at company level.
  • Audit: every upload, replacement, row edit and deletion is logged with who and when, like prints.

Chapter 10The Print API

Your own systems (ERP, WMS, EDI translators, a script) can queue jobs directly. An Owner generates a Print API key on the Team page; the key starts with lvk_ and is shown once. Keep it on the server side, never in a browser or a spreadsheet. Rotate key issues a replacement and invalidates the old one; Revoke switches the API off.

Queue a job

Replace YOUR-WORKSPACE-DOMAIN with the address you sign in at; the API lives on the same domain as your workspace.

curl -X POST https://YOUR-WORKSPACE-DOMAIN/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,
    "printer": "Dock Zebra",
    "site": "Whakatane",
    "product": "Frozen Snapper Fillets 5kg",
    "batchNo": "B-2026-0825",
    "bestBefore": "@date(+30d)",
    "barcode": "9421023610046"
  }'
FieldMeaning
transactionIdRequired. Your reference: order number, ASN, delivery. Sending the same id again updates the pending job instead of duplicating it; sending it again after it printed queues a replacement and marks the earlier job superseded.
labelTypeOptional (alias format): the exact name of a design in your library. Leave it out and the operator picks the design when releasing; their choice is remembered on the job.
copiesOptional (aliases qty, quantity), 1 to 99. Left out, the operator is asked at release.
printerOptional: the name of one of your saved printers, pre-selected at release and usable by Print all.
siteOptional: the exact name of one of your sites; the job appears only in that site's queue. An unknown name is rejected so routing mistakes surface immediately. Left out, the job is company-wide.
releaseOptional: true prints the job immediately through the named printer's print station and returns the result in the same response. Requires printer, a design and copies, and the Owner opt-in Allow API auto-release on the Team page. If the station is offline or anything needs a person, the job stays queued and the response says why.
anything elseBecomes a {tag}. A design containing {batchNo} gets that value. Names match case-insensitively; tags with no matching field print as written. Values may contain @date tags, expanded at print time, and a design can shift or reformat a date you send: {packed+14d}, {packed:dd/mm/yyyy}.
sequencesA design tag written {palletNo+} steps once per copy: send "palletNo": "PFP000001" with "copies": 10 and the printer receives PFP000001 through PFP000010. The plus lives in the design, not in your JSON.

Values entered at the printer: capture

Some values only exist once the carton is on the bench: the net weight off the scale, a grade, a count. Leave them out of the job and list them under capture:

"capture": [
  { "name": "netWeight", "label": "Net weight", "type": "number", "unit": "kg", "min": 0.1, "max": 30 },
  { "name": "grade", "type": "choice", "options": ["A", "B"] }
]

When the operator opens the job on the Floor or in the queue, big inputs ask for each field and the label preview redraws as they type; Print stays off until the required ones are filled. The values print on the label through the matching {tags}, are stamped on the job with who entered them and when, and a reprint reuses them. Types are number (with unit, min, max; a comma decimal point is accepted), choice (with options) and text; "required": false makes a field optional. Any tag on the design that your data did not supply is offered as an optional field as well, so a forgotten value can be typed in rather than printing as {tag}. A job with an empty required capture field never prints unattended.

Reading data back

spooler never connects out to your systems; your system pulls. GET /api/print/jobs/ORDER-10042 returns the job's status, printedAt, printer, the data it printed with (your fields with the operator's entries merged over them), captured (the entered values, who and when), sequences (any @seq numbers used) and the history. To collect everything you have not seen, poll GET /api/print/jobs?status=Printed&sinceId=123: it lists jobs with an id above 123, oldest first, and the response carries nextSinceId to store for the next call. since=2026-09-22T00:00:00Z filters by time instead; take caps the page at up to 500.

Check and cancel

  • GET https://YOUR-WORKSPACE-DOMAIN/api/print/jobs/ORDER-10042 returns the job's status (Pending, Printed, Failed, Cancelled, Superseded), the data and entered values it printed with, and its history.
  • DELETE https://YOUR-WORKSPACE-DOMAIN/api/print/jobs/ORDER-10042 cancels a job that has not printed.
  • Errors come back as JSON with an error message and an appropriate HTTP status: 401 for a bad key, 400 for a malformed payload, 404 for an unknown transaction.

Printing immediately

By default nothing prints by itself: API jobs wait in the queue until a person releases them, individually or with Print all. For trusted, unattended lines an Owner can tick Allow API auto-release on the Team page. A call that then carries "release": true and names a printer is printed at once through that printer's print station, recorded in the job history as released by the Print API, and answered with the outcome:

{ "jobId": 812, "transactionId": "ASN-10042", "status": "Printed", "created": true,
  "release": { "attempted": true, "printer": "Dock Zebra", "station": "Dock PC", "detail": null } }

The call waits up to about 90 seconds for the printer. A response with "status": "Pending" and a detail means the job was queued instead: no station online for that printer, a USB printer with no station, a missing design or copies, or the opt-in switched off. A Failed status carries the printer's error; the job stays visible in the queue for a person to retry.

Chapter 11Supplier keys: one system, many companies

Sometimes the system that creates labels belongs to one company and the printers belong to others: a retailer's ERP generating inbound carton labels that each supplier prints at their own site. Supplier Keys (Company menu) handle this without giving the source system access to anyone's workspace.

  1. Create a supplier key for the source system and give it a name such as "Our SAP ECC".
  2. Map supplier codes to companies. The source system knows suppliers by its own codes, SUPPLIER_07 say; each maps to a company on spooler. A job's supplierId field routes it into that company's queue.
  3. Map label codes to designs. The system's label codes, VECTOR_ASN_CARTON for instance, map to designs in your library, pinned to a specific version, so later edits never silently change what suppliers print until you update the mapping.

Suppliers see only their own jobs and release them on their own printers. You see a dashboard of jobs across every supplier with their status. The payload is the same as the Print API plus the required supplierId; the label type must be one of the mapped codes.

Chapter 12Migrating from BarTender and other label software

BarTender's .btw files are a closed format, but every label program ends up sending printer code through a Windows driver, and that code is something spooler reads. The Print Bridge can pose as a printer: print each format to it once and it lands in the designer as an editable label.

Steps

  1. In the designer click Import and open the Capture from BarTender / other software tab. The Print Bridge on your PC (1.6 or newer) starts listening on port 9100, and the tab shows this PC's address.
  2. In Windows add a printer using the Seagull driver for your real printer model (a Zebra driver produces ZPL; an Intermec or Honeywell "DP" driver produces Fingerprint), on a Standard TCP/IP port to that address, port 9100, protocol RAW, with bidirectional support turned off. If BarTender runs on the same PC, the address is 127.0.0.1.
  3. In BarTender, open the format and set each data source to a tag in braces, {productname}, {batch}, so the dynamic fields import as tags. Barcodes that validate their content (EAN, UPC) need a placeholder number instead; retag them after import.
  4. Print one copy to the capture printer. It appears in the tab within a couple of seconds. Choose the printer's resolution, click Import, tidy up, and save to your library. Repeat for the next format.

What to expect

  • Text printed with printer fonts imports as editable text. Text the driver rasterised, which is most TrueType fonts, arrives as an image. Where the driver offers it, switch to printer fonts before capturing.
  • Barcodes import as barcodes: Code 128, Code 39, EAN and UPC, Interleaved 2 of 5, Codabar, QR, Data Matrix, PDF417 and Aztec. Rarer symbologies import as Code 128 with a note.
  • Boxes, lines and logos come through. Circles, diagonal lines and stored-format machinery are skipped and listed in the import notes.
  • If the driver did not state the label size, it is set from the content: check it against your media in Label settings.

Captured jobs are held by the bridge for a day and never forwarded to a real printer. Stopping capture, or closing the Import dialog, frees port 9100 again.

From a photo of the label

When there is no software to capture from and no code to paste, a picture will do. In the designer click Import and open From a photo. Choose a JPEG or PNG of the printed label, drag the four handles onto the label's corners so the photo can be flattened, type the label's real width and height in millimetres, and press Read label. Ten to thirty seconds later the design opens as an unsaved draft.

  • Barcodes are decoded from the image itself, so the symbology and the data are exact.
  • Text and layout are read by a vision model. Positions land within a millimetre or two; font sizes are estimates to nudge.
  • Variable fields become tags. Dates, batch numbers, weights, prices and similar values arrive as {bestBefore}, {batchNo} and so on, with the photographed value kept as the preview text, so the design is ready for data straight away. The What was found list under the photo shows every element and which became a tag.
  • Logos and pictures are skipped; add them as images afterwards. Thin rules and boxes are picked up when they are clear.

Good input matters: shoot straight on in even light with the label filling the frame, or scan it. A curved or glary label reads badly. The photo is sent to the label-reading service (Anthropic) for the text step and is not kept; barcodes never leave the server. The feature is switched on per server by the operator.

Chapter 13Team and roles

The Team page (Owners) lists members with their email, display name, role, site and whether they may queue jobs, plus pending invitations and the Print API key.

Roles

RolePrint queuePrinter setupLabel designTeam, sites & keys
Operator✓———
Manager✓✓——
Admin✓✓✓—
Owner✓✓✓✓
  • Operators run the queue: review, release, reprint, cancel. They can open labels to look and print but not change them.
  • Managers also maintain printers and can queue jobs by hand.
  • Admins also design labels and manage the library and images.
  • Owners also invite and remove people, set roles and sites, manage sites and the Print API key, and see the company audit trail.

Tick Queue jobs against an Operator to let them create jobs by hand without any other rights. Role changes take effect within a few minutes, or immediately at the next sign-in.

The audit trail, including sign-ins

Company → Audit lists what people did in your workspace, newest first: role and site changes, key rotations, sequence edits, data source changes, and every sign-in, failed sign-in, lock-out, sign-out and password change, each with the address and browser it came from. Search by action, detail or person, or tick Sign-ins only to review who has been getting in and from where. Owners see their own company; a failed attempt against an email that has no account is visible only to the service operator.

Floor-only sign-ins for shared devices

The tablet or phone at the printer usually belongs to a bench, not a person. Give it its own sign-in, then tick Floor only against that member. From then on that sign-in opens on the Floor view, the rest of the navigation is hidden, and any other page it is pointed at sends it straight back. Pair it with the Operator role and a Site so the device sees only its own printers and jobs, and it can do exactly one thing: release labels. The change takes effect on the device's next request, so an already-open browser is pinned too; you cannot tick it against yourself.

In the Floor view card, set how many minutes a Floor-only device may sit untouched before it is signed out (0 = never). Any tap, scroll or key press restarts the clock. When it runs out the device returns to the sign-in page with a note saying why, so the next shift signs in fresh rather than inheriting someone else's session.

Inviting and removing

Invite a teammate with an email address, a role and, if you use sites, a site. The invitation email carries a link that sets up their account. Pending invites can be revoked. Remove takes a person out of the workspace; their past actions stay in the audit trail.

Chapter 14Sites: one company, many locations

Companies with several locations define sites (Company menu → Sites, Owners only). Head office designs the labels once; each site runs its own queue and printers.

  • People: assign each person to a site on the Team page. A site-pinned person sees only their site's queue, printers and data. 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, with no site, are visible everywhere.
  • Jobs: a job queued by a site user lands in that site's queue. API jobs route with the optional site field. Anything unrouted is company-wide and visible to every site.
  • Data: saved spreadsheets follow the same rule: a site's data is theirs; company-wide data is for everyone.
  • Licensing: printer counts are licensed per site when sites are used. The Sites page shows each site's cap.
  • Deleting a site keeps its people, printers, jobs and data; they simply become company-wide again.

Chapter 15For partners: the reseller portal

Partners who offer spooler under their own brand get a Partner portal (Company menu) on their own domain.

  • Customers: every company on your brand, with user and label counts, creation date and last activity. Add a customer creates a company; Invite owner emails its first Owner an invitation. Licence sets the company's printer caps, per site where sites are used.
  • Your branding: the product name customers see, your logo (PNG, shown on dark backgrounds), accent colour, support email and legal name for footers. Sign-in pages, the app and every email your customers receive carry your brand.
  • Customers who sign up on your domain belong to you automatically, and company names are unique within your brand.
  • Your pricing page: what visitors to your domain see at /pricing. Two levels, both priced per printer: Print only for a site that prints labels others designed, priced per printer per month, and Design for the whole company, priced per company with a number of printers included and a price for each extra one. Set your own currency, numbers, wording and button links; leave a price blank to show Talk to us. Nothing is public until you tick Published; the Preview the page link shows the draft to you alone.

Your customers' Print Bridges learn your domain automatically, so they install the standard bridge from the download links on your branded site.

Chapter 16For system administrators

System administrators operate the service across every company. Their extra pages sit under Admin in the menu.

  • Companies: every workspace, with a Licence editor for printer caps at company and site level.
  • Users: every account, with its company and role; create a user directly when an invitation is impractical.
  • White-label partners: create and edit partners: internal name, customer-facing product name, legal name, accent colour, support email, logo, and the domains that resolve to the brand.
  • Audit log: the cross-company trail of designs saved, prints, reprints, cancellations, data changes and team changes.

Working inside a customer's workspace

  • My Labels gains a Viewing company selector: open, edit and save any company's labels and folders.
  • Move to company: each label row offers a picker to move it to another company's root folder, with its full version history and its images. Use it when you design on a customer's behalf in your own workspace and hand the finished label over. It is refused if the target already has a label of that name in its root, or if a supplier-key mapping still points at the label.
  • Queue a job lets you switch the design picker to a customer's library, so their label can be queued and printed from your queue for testing.

Chapter 17Troubleshooting

SymptomWhat to check
"Print bridge not detected"The bridge is not running on this PC. Windows: look for the spooler icon in the taskbar; if it is grey, right-click → Restart, or reinstall. macOS: the menu bar printer icon should be filled; choose Restart bridge. Then click Re-check. Browser extensions that block local connections can also cause this.
"Connection timed out" on a network printerThe PC running the bridge cannot reach the printer's IP: wrong address, printer off, different network, or a firewall between them. Ping the address from that PC. Check the port is 9100 unless the printer is configured otherwise.
"USB printers need Print Bridge v1.5"Upgrade the bridge on that PC from the queue's download panel.
USB printer "was not found on this PC"The saved printer's Windows name does not match a printer installed on this PC. Edit the printer and pick from List this PC's printers.
Job says Printed but nothing came outMost often a Honeywell printer stuck after an earlier failed job, or a Zebra paused. Look at the job's history for the printer's reply, power-cycle the printer, and reprint with a reason. For USB printers check the Windows print queue is not paused.
Label prints rotated or off the edgeLabel Direction does not match how the roll is loaded, or the size does not match the stock. Fix in Label settings; use the Preview data mode to test.
Barcode will not scanModule width too small for the scanner or the resolution: raise Ratio. Data not valid for the symbology, shown as a warning outline on the canvas. Quiet zones: leave white space either side, inside the safe area.
Text looks different on paper than on screenPrinter-resident fonts differ by make. Use anchors so alignment survives width differences, and proof on each printer family.
Image prints as a black blobPhotos and gradients do not survive conversion to black and white. Use a clean high-contrast logo, or trace it as vector shapes elsewhere and upload that.
API returns 401Wrong or revoked key, or the header name is not X-Api-Key.
API returns 400 "Unknown site"The site value must match a site's name exactly.
"Someone else saved this label"A colleague saved while you were editing. Overwrite to keep yours, or cancel and Save As to keep both; their version is in History regardless.
Capture tab shows nothing after printing from BarTenderWindows printer port must be RAW on 9100 with bidirectional support off, pointing at the address shown in the tab. A settings-only job from the driver is ignored; print the label itself.

Chapter 18Frequently asked questions

Which printers are supported?

Honeywell and Intermec printers speaking Fingerprint, and Zebra printers speaking ZPL, connected by network or USB. Set the language on each saved printer; one design prints on either family.

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 from the Print Bridge on your PC to your printer over your own network. The bridge never sends anything anywhere else.

Can I keep using my existing Fingerprint or ZPL labels?

Yes. Paste the code into 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.

By design. API jobs wait in the Print Queue until a person releases them, one at a time or with Print all. Check the Pending tab.

How do I print a numbered run?

Mark the tag as a sequence in the design, {palletNo+}, supply the starting value as normal, and set copies to the run length. See Tags.

How do I print a best-before date?

Three ways, depending on where the date lives. Printed today plus a fixed life: @date(dd/mm/yyyy, +14d). Life varies by product: a spreadsheet column or API field containing @date(+10d) is expanded too. Counted from a packing date in your data: {packed+14d}. See Tags.

Can two companies share a label?

Export it as an .xld file and import it in the other workspace. Partners and administrators can also move labels between companies directly.

How many versions are kept?

The last 20 saves of each label. Restoring an old version saves it as a new one, so restoring never discards history.

Chapter 19Glossary

Anchor pointThe point of an element (1–9, keypad layout) that sits at its X, Y position.
Direct thermal / thermal transferPrinting by heating the label stock directly, or by melting ink from a ribbon onto it.
Direction (DIR)Rotation of the whole label (1–4) or of one element relative to the media feed.
Dots / dpiA printer's smallest mark; 203 dpi is 8 dots per millimetre, 300 dpi is about 12.
FingerprintHoneywell and Intermec's printer language.
Label typeThe name a source system uses for a design; the API's labelType field.
ModuleThe narrowest bar or space in a barcode; its width in dots is the Ratio setting.
Print BridgeThe helper on each printing PC that carries jobs to printers.
ReleaseSending a queued job to a printer.
Sequence tagA tag with a trailing plus, {name+}, whose number steps once per copy.
SiteA location within a company with its own queue, printers, people and data.
Supplier keyAn API key that lets one system queue jobs into several companies' queues.
TagA placeholder in braces, {name}, filled in at print time; or an @date-style system tag.
Transaction idYour reference for an API job; re-sending it updates or replaces the job.
WorkspaceA company's private space: labels, printers, people, jobs and data.
.xldspooler's portable label file.
ZPLZebra's printer language.

Still stuck?

Email us at support@xileit.com — we read everything.

Request an account