Print on demand
The print-on-demand add-on lets you sell things you never touch. A customer buys a shirt in your store and pays you. Printful, Printify or Gelato prints it, packs it and posts it, and the tracking comes back onto your order. You keep the store, the customer and the margin.
It's an add-on, not part of KahunaCart itself. Install the kahunacart-print-on-demand plugin beside the base plugin. Until you connect a provider, nothing in your store changes.
How a product gets made
There are two ways, and you can mix them in one store.
Synced. You design the product at the provider, in its own designer, and import it here with its colours, sizes, pictures and costs. Printful and Printify work this way.
Custom. You keep your own print files in the store, and pick the provider's blank for each variant: a Bella + Canvas 3001 tee in black, an A3 matte poster. The two are put together when the order is sent. Printful and Gelato work this way, and Gelato only works this way.
Review first
Every provider starts in review mode. A paid order becomes a free draft at the provider and waits on the order with its cost and your margin, until you press Send to Printful for $18.40. Nothing is printed and nothing is charged before that.
I think that's the right default. Sending spends your money, and the first orders through any new setup are the ones most likely to be wrong. Once a few have gone through cleanly, switch the provider to auto and paid orders go to production by themselves.
The three providers
| Printful | Printify | Gelato | |
|---|---|---|---|
| Good for | Clothing and accessories, with embroidery, and the most complete API | A wide catalogue from many print providers, and designs you already have in Printify | Clothing, hats and mugs as well as wall art, cards and calendars, made close to the customer |
| Products | Synced and custom | Synced only | Custom only, or from a Gelato template |
| Shipping at checkout | Live, in any currency | Live, in your Printify billing currency | Live, from every facility the order needs |
| Before sending | A free draft | An order on hold | A free draft, read back before it is sent |
| Webhooks | Registered for you, signed | Registered for you, signed if Printify signs | Added by hand in Gelato's dashboard, not signed |
| The one rule to know | Make a token per store and note its expiry date | Set the shop to Manual order approval | No test mode; use a second account with no payment method |
You can connect all three at once. Each product is made by exactly one of them, so checkout never has to choose. Prices are the providers' own: what a blank costs, what shipping costs and what you are charged are all set by the provider and your account with it.
Before you begin
- KahunaCart 1.4.7 or later.
- An account with Printful, Printify or Gelato.
- The job worker running (
bin/plugin kahunacart work, or the scheduler). See CLI. - A public
httpsaddress for webhooks. Without one, the store checks every open order every four hours instead.
What it adds
| Where | What appears |
|---|---|
| KahunaCart → Print on demand | A section with five tabs: Review (everything waiting for you), Providers (a card per provider with its switches, connection check and webhook), Products (import, Gelato templates and the bulk tools), Orders (every provider order) and Settings. |
| An order | A Print on demand panel: each provider order with its status, cost, margin, parcels and buttons. |
| A product | A Print on demand panel: Made by, each variant's blank and its print files. |
| Checkout | The provider's own delivery options, priced live, and address checks for what the printer needs. |
| The receipt, the emails and the customer's account | A short "made for you" note while items are being printed, then the parcels with their tracking links. |
| Every admin screen | An alert when something in print on demand is waiting for you. |
The pages in this chapter
| Page | What it covers |
|---|---|
| Getting started | From an installed add-on to your first order at the provider. |
| Printful | The account, the token, the webhooks and Printful's limits. |
| Printify | The account, the Manual approval rule, signing and Printify's limits. |
| Gelato | The API key, products, the webhook you add by hand and Gelato's limits. |
| Products and import | Importing, refreshing and auto-sync. |
| Custom products | Made by, blanks and print files. |
| Moving from another platform | Assign by SKU and the links spreadsheet. |
| Shipping | The printer's rates at checkout, currencies, duties and addresses. |
| Orders | Review and send, auto, cancelling, changes and what costs money when. |
| Tracking | Webhooks, the poll, parcels and what the customer sees. |
| The demo printer | Kahuna Print Co., for walking the screens with no account. |
| Settings reference | Every setting with its default. |
| Developers | Routes, MCP tools, CLI, jobs, notifications, tables and events. |
The two permissions
| Permission | What it allows |
|---|---|
kahunacart.pod.manage |
Setting up: connecting providers, importing, Made by, print files, the bulk tools and the shipping methods. None of it spends money. |
kahunacart.pod.orders |
Sending an order to production, sending it again, and cancelling it at the provider. |
Sending is a permission of its own because it spends your money at the provider. Whoever set up the catalogue doesn't need to spend the Printful wallet, and whoever sends orders all day doesn't need to repoint the store at another account. Reading provider orders takes kahunacart.orders.view, which whoever answers "where is my shirt?" already has.
Try it
The add-on ships with Kahuna Print Co., a pretend printer with three products, invented postage and orders that move from printing to delivered on a clock. Switch it on for a test store and every screen in this chapter has something on it before you open an account anywhere. See The demo printer.
What it does not do
- Design. There's no designer in the store. Artwork goes on the product in the provider's designer, or arrives as a print file you made.
- Personalisation. A customer can't add their own name or photo to a product.
- Mockups for custom products. Use your own product photos.
- Returns and reprints. Each order links to the provider's dashboard, where those are handled.
- Repricing. A cost going up gets you a notification. Your prices never change by themselves.
- Currency conversion. A provider's shipping rate has to be in the order's currency already.
Related
- Getting started
- Shipping rates, for live carrier rates and the fallback method
- Orders and the admin
- Notifications