Settings reference
Every key the add-on reads, in user/config/plugins/kahunacart-print-on-demand.yaml, with its default. Most have a field on KahunaCart → Print on demand → Settings (the same form as Plugins → KahunaCart Print on Demand in the Grav admin), on four tabs: General, Printful, Gelato and Printify. The keys marked written by the store have no field; the add-on fills them in and you leave them alone. The demo provider's keys have no fields either.
Tokens, API keys and webhook secrets are encrypted when the form is saved, and no screen shows them again.
Where these are edited
KahunaCart → Print on demand → Settings. This is Grav's own configuration form, built from the plugin's blueprint, and the Save button in the admin's header saves it. The switches on each provider's card under Providers (on or off, review or auto, auto-sync, and Printify's Manual approval tick) write the same keys, with the same rules.
Important
Settings save where the admin's environment picker says. With the picker on Default that is the base config; with a named environment chosen it is that environment's copy.
The master switch
| Key | Default | Field | What it does |
|---|---|---|---|
enabled |
true |
Plugin status | Off, and the add-on does nothing: no provider, no rates, no jobs. Products made by a provider are refused at the cart by KahunaCart itself, because nobody would make them. |
General
| Key | Default | Field | What it does |
|---|---|---|---|
import.markup_percent |
100 |
Markup | The suggested selling price on the import sheet, when the provider's retail price is not in your store's currency: cost plus this many percent. 100 doubles the cost. Only a suggestion; nothing is imported without your prices. |
shipping.provider_rates_only |
true |
Printed goods ship at the printer's rates | On, and your own shipping methods are turned down for a parcel the provider makes and carries. Off, and they are offered for printed goods too. See Shipping. |
artwork.max_mb |
100 |
Largest print file | The largest print file accepted, in megabytes, for an upload and for a file a links CSV points at. Checked before the file is read. |
timeout |
15 |
Provider timeout | Seconds allowed for a call to a provider. Checkout's shipping quotes use KahunaCart's own carrier timeout instead. |
Orders and tracking
| Key | Default | Field | What it does |
|---|---|---|---|
tracking.poll_hours |
4 |
Check orders every | How often, in hours, every open provider order is read back from its provider. |
tracking.poll_until_days |
60 |
Stop checking after | Days after sending when an order still not delivered stops being asked about. |
notify.waiting_after_hours |
24 |
Remind me after | Hours an order may wait in review before you get a daily reminder. |
Printful
| Key | Default | Field | What it does |
|---|---|---|---|
printful.enabled |
false |
Use Printful | Off, and Printful is not used at all, whatever is pasted. |
printful.token |
empty | Private token | A store-level private token with the orders, sync_products/read and webhooks scopes. Encrypted. |
printful.store_id |
empty | Store id | Only for an account-level token: the Printful store to use. Empty for a store-level token. |
printful.mode |
review |
Orders | review waits for you to press Send; auto sends as soon as Printful has worked out the cost. |
printful.production_days |
3 |
Production days | Days added to Printful's delivery estimate at checkout for printing. |
printful.auto_sync |
off |
Products made in Printful | off, or draft to bring products you publish at Printful in as drafts. Register the webhook again after changing it. |
printful.token_expires |
empty | Token expires on | The date Printful showed when you made the token, as YYYY-MM-DD. The daily reminder in the fortnight before needs it. |
printful.webhook_secret |
empty | written by the store | The secret part of the webhook address. Encrypted. |
printful.webhook_signing_secret |
empty | written by the store | The secret Printful signs deliveries with. Encrypted. |
Gelato
| Key | Default | Field | What it does |
|---|---|---|---|
gelato.enabled |
false |
Use Gelato | Off, and Gelato is not used at all. |
gelato.api_key |
empty | API key | From Gelato's Developer → API Keys. Encrypted. |
gelato.mode |
review |
Orders | review keeps each draft waiting for Send; auto sends it at once. |
gelato.production_days |
0 |
Production days | Days added to Gelato's estimate, which already counts printing. |
gelato.webhook_secret |
empty | written by the store | The secret part of the address you paste into Gelato's dashboard. Gelato signs nothing, so this is the whole check. Encrypted. |
Printify
| Key | Default | Field | What it does |
|---|---|---|---|
printify.enabled |
false |
Use Printify | Cannot be switched on until printify.manual_approval_confirmed is true for the shop in printify.shop_id. |
printify.manual_approval_confirmed |
false |
My Printify shop is set to Manual approval | Your word that the shop's Order approval is Manual in Printify. See Printify. |
printify.manual_approval_shop |
empty | written by the store | The shop the tick above was given for. Any other shop counts as not confirmed. |
printify.token |
empty | Personal access token | With shops.read, products.read, products.write, orders.read, orders.write, webhooks.read and webhooks.write. Encrypted. |
printify.shop_id |
empty | Shop id | The Printify API shop orders go to. |
printify.currency |
USD |
Billing currency | The currency Printify bills you in. Printify's shipping is offered only on orders in it. |
printify.mode |
review |
Orders | review makes each order on hold and waits for Send; auto sends it once the cost is known. |
printify.production_days |
5 |
Production days | Days added to the delivery estimate for printing. Printify's providers take two to seven. |
printify.auto_sync |
off |
Products made in Printify | off, or draft to bring products in from Printify and answer its Publish button. Register the webhook again after changing it. |
printify.token_set_at |
empty | written by the store | The day the token was pasted. |
printify.token_expires |
empty | Token expires on | A year after printify.token_set_at, filled in for you. |
printify.webhook_secret |
empty | written by the store | The secret part of the webhook address. Encrypted. |
printify.webhook_signing_secret |
empty | written by the store | The secret the webhooks were made with. Encrypted. |
printify.webhook_signed |
empty | written by the store | signed, not_signed, or waiting until the test delivery arrives. |
The demo provider
No fields on the settings screen, so write these into the config file yourself, mode included. See The demo provider.
| Key | Default | What it does |
|---|---|---|
demo_provider.enabled |
false |
Registers Kahuna Print Co. Never on a store that sells for real. |
demo_provider.mode |
auto |
auto sends each order as soon as it is paid, which a read-only demo needs. review waits for a person. |
demo_provider.tick_seconds |
60 |
How long one tick of the demo printer's clock is. |
demo_provider.production_days |
3 |
Days added to the delivery estimate at checkout. |