Skip to content

Set up a printshop

Everything on this page happens under Printshop in the studio, which lists the printshops that make your prints, each under its own name: the partners under Integrations, and the shops you describe yourself as Your own printshop. For what a printshop is, see Printshops.

Its sandbox gets copies of your live printshops, without their credentials, when you sync, and can connect its own as live does. Orders placed in the sandbox never reach any of them (see Test with a sandbox).

Choose New printshop, pick the partner under Integrations, such as Printful, and:

  1. Give the printshop a Name, and choose Continue to Printful.
  2. On Printful’s own page, sign in, choose the store to connect, and allow Pixonaut. Each store is connected once: a store that is already connected is refused, naming the printshop it is connected as.
  3. You come back to the new printshop, connected. Pixonaut checks the connection with the printshop first, so one that does not work is refused here, not at your first order.

Printify is connected with a token rather than its own page. In Printify, go to My Profile, Connections, and generate a token with the permissions the form lists. Paste it, and if your account has several shops, enter the id of the one to use. An account with none is refused, saying where to make one. In Printify, set Order approval to manual: Pixonaut tells Printify to start each order at once, and a store left on automatic may start one by itself within 24 hours even if you meant to cancel it.

Each row of Printify’s catalogue is one product through one print provider, with the provider’s country in its name. Printify has no photos of its products with a print area on them, so add a stock view to a new blank. Its garment is an illustration: cut and shade may differ, while print size and placement are exact. Print areas are worked out from Printify’s pixels at 300 dpi.

A partner printshop such as Printful has no contact person or address of its own. Pixonaut keeps its connection renewed; if the partner stops accepting it, the printshop says it needs connecting again, and Reconnect goes through the partner’s page once more.

Once connected, Browse catalogue lists the products the partner makes, and Import as blank turns one into a blank.

For a shop with no connection of its own, choose New printshop, then Your own printshop. It needs only a Name; its contact person and its address are optional, and can be added later. It is created with no steps: until it has one, its page says orders cannot reach it, and an order sent to it is refused. Add a delivery step on that notice, or Edit delivery on its Automation tab, opens its steps.

Each step runs in the order listed once an order is submitted. Choose Add step and pick its kind to add one at the end; drag a step by its grip, use the arrow keys on the grip, or use its up and down arrows to move it; and remove it with its bin. A printshop takes orders once it has a step, and can have up to ten. A step that fails is tried again on its own, and the order is Queued once every step has arrived. Each order’s page shows how its steps went, under Delivery to the printshop.

Put {order.pageUrl} in a step so the printshop can report back. The link opens a page for that one order, with no account: the job ticket, every file of the order with its job ticket to download in one zip, and buttons to mark the order printed, mark it shipped (with its tracking, if the shop has it), or reject it with a reason. Opening the page changes nothing; only confirming does, so a mail scanner following the link cannot move the order. The page stops working while the printshop is disconnected, and opens again when you reconnect it.

  • Email — Send to one or more addresses (separate them with commas), or {printshop.contact.email} to send to the printshop’s contact, with a Subject and a Message. A step sending to the contact is refused while the printshop has no contact email, and the email cannot be cleared while a step sends to it. Tick Attach the print file and Attach the job ticket to send them along.

  • HTTP — sends a request to the shop’s own https Address, with Headers and a Body (JSON). Choose its method beside the address: POST (the default), PUT, PATCH, DELETE or GET; a GET sends no body. The address cannot contain placeholders; put order details in the body. Each header’s value is Text, which can carry placeholders, or a Secret.

  • SFTP upload or FTP upload — signs in to the shop’s Server as User name and uploads into a Folder (empty is the folder you sign in to). Tick Upload the print file and Upload the job ticket, each with its own File name, which can carry placeholders. An empty Port uses the protocol’s usual one. The step signs in with a Secret: a password, or for SFTP a private key.

Where a machine hands out more than one file for a shaped cut (its Files handed out, under Advanced in its machine profile), an email step attaches each and an upload step uploads each. The default file keeps the name the step gives the print file; each other one is that name with -combined, -print or -cut before the extension, so job-12.pdf and job-12-cut.pdf. A step whose job ticket would take one of those names is refused when the order is submitted. A file link in a message serves the default file; every file can be downloaded from the printshop’s order page.

Subjects, messages and request bodies can carry placeholders, filled in with each order’s details when it is submitted. Choose Insert a placeholder beside a field to put one at the cursor. The menu lists the connection’s variant and placement fields first, then the order’s details.

Placeholder Filled in with
{order.id} The order’s id
{order.externalRef} Your shop’s own reference for the order, as you placed it, or nothing
{print.id} The print’s id
{design.id} The design’s id
{template.id} The template version, such as classic-tshirt@2
{template.slug} The template’s id, such as classic-tshirt
{template.version} The template’s version number
{product.sku} The product’s SKU on the job ticket
{quantity} How many to make
{tenant.id} Your workspace’s id
{date} The day the order was submitted, as YYYY-MM-DD
{print.fileUrl} A link to the print file
{print.ticketUrl} A link to the job ticket
{print.placement} Where on the item it is printed, by the name your printshop knows it by (its Printed as)
{order.pageUrl} A link to the order’s own page for the printshop, which works for 30 days
{order.rejectUrl} The same page, ready to reject the order
{order.printedUrl} The same page, ready to mark the order printed
{order.shippedUrl} The same page, ready to mark the order shipped
{recipient.name} Who the order is for, or nothing
{recipient.email} Their email address, or nothing
{recipient.phone} Their phone number, or nothing
{shipping.company} The company of a business address, or nothing
{shipping.line1} The first line of the shipping address, or nothing
{shipping.line2} The second line of the shipping address, or nothing
{shipping.postalCode} The postal code, or nothing
{shipping.city} The city, or nothing
{shipping.region} The region, county or state, or nothing
{shipping.country} The country, as a two-letter code such as SE, or nothing
{printshop.contact.name} The printshop’s contact person, or nothing
{printshop.contact.email} Their email address, or nothing
{printshop.contact.phone} Their phone number, or nothing
{printshop.address.company}, {printshop.address.line1}, {printshop.address.line2}, {printshop.address.postalCode}, {printshop.address.city}, {printshop.address.region}, {printshop.address.country} The printshop’s own address, part by part, or nothing. It is never where an order ships

To write a literal {, type {{. To write something in place of a value that is empty, give it a fallback in quotes: {order.externalRef ?? "none"} writes none for an order placed without a reference. A fallback holds no " and no }.

A custom connection can declare fields: values your shop needs for each order that are not order details, named as your shop names them. A variant field (such as colorCode or sizeCode) holds a value for each variant of a blank printed there, and is written {variant.colorCode}. A placement field (such as pos) holds a value for each of the printshop’s positions, the same for every blank, and is written {placement.pos}. They are declared on the printshop’s Fields tab, in the order they are listed there (in the connection’s config, variantFields and placementFields). Choose Add field, give it a name, and choose what is sent when a variant or position has no value. A variant’s values are filled in on its blank’s Variants tab, a position’s on the printshop’s Positions tab.

  • A name starts with a lowercase letter, then letters or digits, at most 40 characters, and is used once per kind, case aside. A connection declares at most 20 of each kind.
  • When a variant or position has no value, the order sends the field’s default, or nothing. A field required with no default refuses an order that has no value for it, naming the field; it can be added only while no blank prints at the printshop.
  • A step naming a field the connection does not declare is refused, so a field a step uses can be neither renamed nor removed. Removing an unused field deletes its values on the variants and positions.

A placement field is one print’s value, like {print.placement}.

Below a request body or a message, the Delivery tab shows an example: a sample order, each field the step names with its value and where the value came from, and the text as it would be sent.

An order can hold several prints of one item, such as the front and the back of one shirt. A custom connection takes such an order only when its steps send every print:

  • In a request body, a value that is exactly "{prints}" becomes a list of every print of the order, the first print first, each with its id, its placementId, its designId, a fileUrl, a ticketUrl, its printedAs and its placementFields (each placement field by name). A single print’s order gets a list of one.
  • An email step attaches every print’s file and job ticket, each named for its print.
  • An upload step uploads every print’s files. Its folder or file name needs {print.id}, so the prints’ files do not replace one another.

The placeholders of one print ({print.id}, {design.id}, the {template.*} ones, {product.sku}, {print.fileUrl}, {print.ticketUrl}, {print.placement} and every {placement.*} field) mean the first print in a subject, a message, a header or a request body. A connection whose steps use one of them there cannot take an order of several prints, and such an order is refused when it is placed.

Keys, tokens, passwords and private keys the shop gives you are secrets, not text in a step. They are set inside the step that uses them: switch an HTTP step’s header to Secret, or open an upload step’s Secret, and choose New secret…. Give it a Name and its Value, and choose Add secret. A name holds only letters, digits and _ . -, up to 64 characters. Tick Several lines (a private key) for a key that spans lines, then paste it into the field or choose the file holding it. Once added, a secret can be chosen in any step of the same printshop.

A secret is entered once and never shown, not even while it is typed: its name can be read back, its value cannot, and a key of several lines shows only how many lines it has. Each step lists the secrets it uses under Secrets, each marked Stored, or new until the printshop is saved. To change one, choose Replace… and give its new value. Replacing one secret leaves the others as they were. To remove one, choose Remove in the step that uses it, which also removes the header that sent it; a secret another step uses too says which step, and can be removed once no other step uses it. A secret a step names that is set nowhere is marked Not set: choose Set value…. Secrets no step uses any more are listed under the steps, under Secrets no step uses, to remove or keep.

An SFTP step names the fingerprint of the server’s host key, as ssh-keygen -lf prints it (SHA256: followed by 43 characters). Ask the shop for it. A server presenting any other key is sent neither the files nor the password.

An FTP step names its Encryption, and has no default: FTPS (explicit, AUTH TLS), FTPS (implicit), or None (plain FTP). With FTPS, the server’s certificate must be valid for the server’s name, or nothing is sent. Plain FTP sends the password and the files unencrypted; use it only if the shop offers nothing else.

On a custom connection’s page, Machine profiles lists one profile per machine. Add profile, then give it a Name, the Cut name its cutter follows (or No cut for a machine that only prints), its Registration marks (None, Summa OPOS or Roland), whether it draws Crop marks (around rectangular cuts only), and the Print methods whose orders it takes: any of the list, whether or not a blank prints by it yet. Choose the Default profile for every other order, and Save machine profiles. A profile a blank still names cannot be removed until the blank names another.

Advanced, closed until you open it, holds what most machines leave as it is:

  • Spot inks as their own plates: a design with a spot ink is sent with each spot as a separate plate; off, the spot is printed as its CMYK fallback. Offered where the printshop’s integration can deliver plates.
  • Trim bleed to (mm): empty sends the file with the bleed it was made with; a value can only narrow it, and 0 cuts the file at the trim.
  • Extra margin before marks (mm): moves every mark that much further from the bleed, for a cutter that needs room.
  • Mirror the print: for sublimation and transfers, printed reversed.

A blank can name its own Machine profile, one of its printshop’s, in the blank editor. On an order’s page, the printshop picks a Machine profile to download the files and job ticket for another machine. Download files gets every file for that machine, with the job ticket, in one zip; Add files puts the same print for another of its machines, or with settings for this download only, in the same zip. Each file can still be downloaded on its own below. For a machine with no profile, or a job that needs other settings this once, Adjust output settings under those files takes the same settings for one download, starting from the machine’s, and Get files lists every file made with them; nothing is saved.

Default printshop is the one that makes designs on no blank that name no printshop of their own, and the one a new blank takes when you choose none and its category names none. Designs on a blank are made by the blank’s Printshop, set when the blank was created; a blank imported from a partner is made by that partner.

An order’s printshop is settled when the order is made: the blank’s, set when the blank was created; for a design on no blank, the one your server named for the design or the order, else your default. Changing the default moves the orders of designs on no blank made after the change, and gives new blanks their printshop; it never changes an existing blank’s.

Turn off Takes orders in a printshop’s details to stop new orders going to it for a while, say over a holiday or while it is out of stock, without disconnecting it. Orders for its blanks, and retries of its failed orders, are refused until you turn it back on, saying the printshop is paused. Everything else stays: its blanks, positions, fields and machines, and the orders it already has, which still update and can still be cancelled. The printshops list and each of its blanks show it as paused.

In your own printshop’s details, Prints with lists the print methods it makes: screen and embroidery, say. A blank at that printshop whose placement is printed by another method is flagged on the blank, and an order of such a print is refused, naming the placement and the method, before anything is sent. Leave it empty to state none, which refuses nothing. A partner’s methods come from its catalogue and cannot be changed.

Disconnect stops orders going to that printshop straight away. Its blanks keep it, since a blank’s printshop never changes: their orders are refused until it is reconnected, and copying a blank to another printshop makes the product there. A design whose printshop has been disconnected is never sent elsewhere: ordering it fails, naming the printshop. If it was your default printshop, you have none until you choose another.

Reconnect a disconnected printshop to have designs and blanks that name it ordered through it again. For a partner such as Printful, Reconnect goes through the partner’s own page, for the same store.

Delete disconnects a printshop and moves it to Deleted at the foot of the list, keeping its positions, machines and stored credentials. Only a printshop no blank prints at and no order names can be deleted (deleted blanks do not count); Delete says how many blanks and orders hold any other, which can only be disconnected. To make a blank’s product elsewhere, copy the blank to another printshop.

Restore a deleted printshop from Deleted to bring it back, disconnected; reconnect it to order through it again. A deleted blank that prints at a deleted printshop can be restored only once its printshop is.

A printshop marked Unavailable is one Pixonaut can no longer reach; nothing can be ordered through it until it can again.

Questions? Write to [email protected].

Status · Terms of service · Privacy policy · Subprocessors