DataShift Logo
labelsfreightproductdirect-printapi

Introducing multi-printer support per print device

One installed print client can now see every printer on the machine, not just one. You can pick a default, override it per job from the app, and API integrators can do the same.

Sam

Developer

8 September 20263 min read

Most dispatch desks we've seen have more than one printer plugged into the same machine: a thermal label printer for cartons, and a regular office printer for anything that needs to go on A4. Until now, the Datashift Print Client could only ever talk to one of them. If you wanted to print an SSCC label to the Zebra and a commercial invoice to the LaserJet next to it, you needed two separate machines, or you were switching the client's printer setting back and forth by hand.

That's fixed. The print client now reports every printer it can see, not just the one you last picked, and the app knows about all of them.

What actually changed

Install the latest print client and it discovers your printers the same way it always has, nothing to configure differently. The difference is what happens next: instead of remembering one printer name, it syncs its whole list back to Datashift, along with which one you've marked as preferred from the tray icon.

From there:

Labelgen and Freight both let you pick a printer right where you print, when a device has more than one. Leave it alone and jobs go to whatever the print client itself is set to prefer, so nothing changes for anyone who only has one printer.

The overrides are per browser, not per tenant. Two people booking freight from the same account, on different machines, can each have their own printer preference without stepping on each other.

Settings, Print Devices now shows every printer per device, with the preferred one marked. Click a printer's badge to copy its ID, handy if you're troubleshooting or setting up an API integration.

Integrators get the same thing. GET /devices on the Direct Print API now returns each device's full printer list. Pass a specific printer's id as printerId on POST /print-jobs to route that one job somewhere other than the default, or leave it out and nothing about your existing integration needs to change.

Why we built it this way

The print client still decides what "preferred" means. That's set from its own tray icon, on the machine itself, by whoever's standing at it. The override is a separate, lighter weight thing layered on top: a per browser choice that says "for jobs I send, use this printer instead," without touching the machine's own default. That split matters in a shared dispatch environment: someone's Tuesday preference for the A4 printer over the thermal one shouldn't become everyone's Wednesday.

Everything about this is additive. Existing print clients keep working exactly as before until they update, existing API integrations keep working exactly as before whether or not they ever pass printerId, and a device with one printer looks and behaves exactly like it did last week.

Try it

Update the print client if you haven't already, it'll tell you if it's out of date. If a machine has more than one printer, you'll see a printer picker appear next to the device picker in Labelgen and Freight the next time you print. And if you're integrating against the Direct Print API, the API reference at /direct-print/api-reference has the full printers array shape and the printerId field on print jobs.

See DataShift in action.

Book a demo