Skip to content

Powered by Grav CMS + Helios Theme

Products and import

A synced product is one you designed at the provider, in its own designer, and bring in here. Printful and Printify both work this way. The provider holds the design; the store holds the product page, the prices and a link from each variant to the provider's variant.

Before you begin

  • A provider connected: Printful or Printify for a synced import, Gelato for a template. See Getting started.
  • kahunacart.pod.manage on whoever imports, and KahunaCart's own product permissions on whoever publishes.

Importing a product

  1. Open KahunaCart → Print on demand → Products and pick the provider. The list shows what you designed there, with a thumbnail, how many variants each has, and whether it is already in your store.
  2. Press Import on a product. The import sheet opens: every variant with its colour and size, its cost in the provider's billing currency, and a suggested selling price.
  3. Change any price you want. Then confirm.

The product arrives as a draft of the Print on demand type:

  • with Color and Size options, and one variant per variant switched on at the provider
  • with the provider's mockups copied into the product's pictures and attached to the right variants
  • with its own shipping profile, so checkout knows it ships from the printer
  • with stock counting off, because the provider holds the stock
  • with a link from every variant to the provider's references and its cost

Check it over and publish it yourself. The add-on never publishes a product. A product already imported is refused with its id, so you cannot bring the same one in twice.

From the command line:

BASH
bin/plugin kahunacart-print-on-demand products printful
bin/plugin kahunacart-print-on-demand import printful 381144123 --dry-run
bin/plugin kahunacart-print-on-demand import printful 381144123 --markup=120

--dry-run prints the sheet and stops. Without it, running the command is you confirming the printed prices.

Where the suggested price comes from

  1. The provider's retail price, when it is in your store's currency.
  2. Otherwise, the cost plus Markup (import.markup_percent, 100 by default, which doubles the cost).
  3. Otherwise nothing, and you type the price.

The suggestion is only a starting point. Nothing is imported without a price for every variant.

Refreshing

Refresh on an imported product reads it from the provider again. It brings in, for every variant still there:

  • the cost
  • whether it can be made
  • the SKU
  • the weight

Variants the provider added come in switched off, at no price, for you to price and switch on. Variants the provider dropped are marked unavailable and kept, so an old order still points at something. The title, the description, the prices and the pictures change only when you ask on the refresh sheet. The refresh answers every cost that changed, with the old and the new.

The store also reads cost and availability for every link once a day by itself.

A variant added by a refresh is refused at the cart until you switch it on, but KahunaCart still lists it in the product's option picker, at the 0 price it came in with. Price it and switch it on (or delete it) before the product is busy. KahunaCart has no per-variant on/off switch yet.

When a variant cannot be sold

A variant whose provider no longer makes it, is out of stock at the provider, or whose provider is switched off, is refused before it reaches the cart, with a sentence your customer can read: "This option is no longer made", "This option is out of stock for now", and so on. The same check runs again at checkout, because a variant can go unavailable after it was added. When something you sell goes unavailable you get one notification a day saying how many.

Auto-sync

Off by default. Set Products made in Printful (or Printify) to Bring them in as drafts and register the webhook again. From then on:

  • A product you publish at the provider arrives here as a draft, priced by your markup. It is never published for you.
  • A change you make at the provider comes in the way a refresh would.
  • Every new draft goes on the Review tab under New from provider, and you get one notification an hour at most saying how many arrived.
  • A product you already sell whose cost goes up joins the same list under Cost went up, with a notification. Your prices are not changed. Saving the product clears it from the list.

Printify's Publish button. With auto-sync on, pressing Publish on a product in Printify brings it here as a draft, and the store answers Printify with the new product's address so Printify unlocks it. Printify keeps the product locked until it hears back. On a shop that does not sign its webhooks the store does not answer, so you unlock it in Printify yourself. See Printify.

Gelato templates

Gelato has no finished designs to import, but a Gelato template comes in the same way and refreshes the same way. Its variants are custom links that still need your print files. See Gelato.