Skip to content

Powered by Grav CMS + Helios Theme

Printify

Printify works with products you designed in Printify. You import them here, Printify's shipping is quoted live at checkout, and paid orders are made on hold at Printify and sent when you say so.

Printify cannot be switched on until you confirm the shop is set to Manual order approval. A Printify shop left on its default sends every order to production by itself 24 hours after it is made, and charges you for it. An order waiting here for your review would be printed and paid for without you. Printify does not let the store see or change that setting, so this is the one safeguard in the add-on that rests on your word rather than on code. Set it, then say so.

Setting up the account

  1. Add an API store in Printify. In the dashboard, go to My Stores, choose Add a new store, and pick API. A store linked to Shopify or Etsy takes its orders from there, so use one of its own.
  2. Set its order approval to Manual. Open the store's Store settings → Order settings and set Order approval to Manual. Do not skip this.
  3. Make a personal access token. Go to My Profile → Connections and generate a token with these scopes:
    • shops.read
    • products.read
    • products.write
    • orders.read
    • orders.write
    • webhooks.read
    • webhooks.write
  4. Copy it, because Printify shows it once.
  5. Paste it into KahunaCart → Print on demand → Settings → Printify → Personal access token and save.
  6. Press Check connection on the Printify card under Providers, or run bin/plugin kahunacart-print-on-demand check printify. It lists the shops the token reaches, with their numbers, and names any scope that is missing.
  7. Type the number of the store from step 1 into Shop id.
  8. Set My Printify shop is set to Manual approval to Yes, it is set to Manual.
  9. Set Billing currency to the currency Printify bills you in.
  10. Switch Use Printify on, save, and check the connection again.
  11. Press Register webhook on the card.

The Manual approval rule

The tick counts for the shop it was given for, and only that shop. When you save, the shop id is written beside the tick. Pick another shop and the tick goes back to Not yet and Printify is switched off in the same save, until you tick it again for the new shop.

Printify is refused, with the reason in bold, when you try to switch it on without the tick, from the settings screen, from the switch on its card, or through the API. The check runs every time the add-on decides whether Printify is connected, so a config file edited by hand cannot get round it either.

The token

  • Stored encrypted, never shown again.
  • Printify tokens last a year, and the API does not say when one ends. The store counts the year from the day you paste it, shows the date under Token expires on, and reminds you every day for the fourteen days before.
  • products.write is needed for one thing: answering Printify's Publish button (below). Without it, a product you publish in Printify stays locked there.

What the add-on does with Printify

Synced import Yes. Products you designed in Printify. See Products and import.
Auto-sync and the Publish button Yes, as drafts, with Products made in Printify set to Bring them in as drafts.
Custom products No. Printify can only take your own artwork by creating the product at the same time as the order, which Printify says it will retire.
Live rates at checkout Yes, for orders in your billing currency.
Review before sending Yes. Every order is made on hold first.
Cancel Yes, while Printify still allows it.
Signed webhooks Only if Printify signs them. The first delivery decides; the card says which.

How an order goes

  1. The order is paid. The add-on makes the order at Printify on hold, under a reference of its own and your order number. Printify has no lookup by reference, so a second attempt is answered by Printify as "already there", and the add-on carries on with that order only when it is provably this store's.
  2. Printify works out the cost. The panel shows it with your margin.
  3. Before sending, the order is read back from Printify and compared with the order as it stands here: the address, every line and the shipping method. Anything changed at Printify stops the send, and the order needs your attention.
  4. In review mode you press Send to Printify for …. In auto mode it goes at once once the cost is known. Nothing is sent while Printify is still working out the cost.
  5. Each parcel comes back onto the order by the SKUs Printify names in it.

An order Printify puts back on hold after it was sent needs your attention, with Printify's reason in plain words.

Webhooks

Register webhook removes this store's old webhooks at Printify, makes one for each order event and for shop:disconnected, and asks Printify for a test delivery.

  • order:updated, order:sent-to-production, order:shipment:created, order:shipment:delivered
  • shop:disconnected
  • with auto-sync on, product:publish:started, product:updated and product:deleted

Each webhook is made with a secret. Printify's documentation does not say whether it signs deliveries with it, so the first delivery decides:

  • Signed, and from then on an unsigned delivery is refused.
  • Not signed, and deliveries are taken on the secret in the address alone. Every one is read back from Printify before anything is written, so a forged delivery can only make the store ask Printify a question.

On a shop that does not sign, a product event is only a hint. A deletion takes a product off sale only when Printify no longer has it. And a Publish press is never answered, because the store cannot tell it came from Printify, so the product stays locked in Printify until you unlock it there. The card says which of the two your shop is.

When Printify disconnects the shop this store sends to, Printify is switched off here and you are told. A disconnection of any other shop on the same account changes nothing.

Printify's own limits

  • The approval rule above.
  • Currency. Printify's prices and shipping answers carry no currency. Billing currency says what they are in, and Printify's shipping is offered only on orders in that currency. A store selling in two currencies gets Printify rates in one and the fallback method in the other.
  • Addresses. 35 characters for the first address line, 30 for the second and every other field, 61 for the whole name, 15 for the phone. A phone number for anything leaving the United States. Latin letters only (accents are fine). All checked at checkout, naming the field.
  • The 5% rule. Printify asks that no more than one call in twenty fails. The client counts its calls over ten minutes and stops for the rest of the window once twenty have gone out and more than one in twenty was refused.
  • Express and Economy are offered only when every item in the parcel can have them.