Skip to content

Powered by Grav CMS + Helios Theme

Gelato

Gelato prints from your own files. Its orders take a product UID (Gelato's name for one exact item, such as an A3 matte poster) and the print files, and nothing else, so every Gelato product here is a custom product: Gelato's blank plus print files the store keeps. Gelato makes clothing, hats and mugs as well as wall art, cards and calendars, in facilities close to the customer.

Setting up the account

  1. Make an API key. In Gelato's dashboard, open Developer → API Keys and choose Add API key. Name it after your shop and create it. Gelato shows it once, so copy it.
  2. Paste it into KahunaCart → Print on demand → Settings → Gelato → API key, switch Use Gelato on and save.
  3. Press Check connection on the Gelato card under Providers, or run bin/plugin kahunacart-print-on-demand check gelato. Gelato does not say which account a key belongs to, so the check says whether the key works and nothing more.
  4. Set up your products (below), add the webhook by hand (below), and add Gelato's shipping methods with Add shipping methods on the card.

One key reaches the whole Gelato account. It has no scopes to choose.

Products

There are three ways in:

  • From a template. Design a template in Gelato, copy its id with Copy Template ID in the template's ⋯ menu on Gelato's Templates page, and import it from Products → Import a Gelato template, or with bin/plugin kahunacart-print-on-demand import gelato <template id>. Its sizes and colours become options, with the Gelato product and the print areas its design uses on every variant. Then upload a print file for every print area on the product's Print on demand panel. A template variant cannot be sold until every area it uses has a file. A garment keeps its own print areas, such as front, back and sleeve, each with its own file; a poster or a card has one.
  • From a product UID. On any product, set Made by to Gelato and paste each variant's product UID, or search Gelato's catalogue ("t-shirt", "posters a3"). Then upload the print files. See Custom products.
  • Many at once. Assign by SKU, or a links spreadsheet with gelato as the provider and the product UID as the blank. See Moving from another platform.

Your artwork is what Gelato prints. Gelato fetches each file from a private address on your store that only an order names. Make each file the size Gelato asks for its print area; the panel shows the size and warns when a file would print under 150 dpi.

Products that can run out, such as frames, are checked against Gelato's stock once a day, and go unavailable while Gelato is out of them. Printed paper never runs out, so it is not checked.

What the add-on does with Gelato

Synced import No. Gelato has no store of finished designs to import from. A template import writes custom links.
Custom products Yes. Gelato only works this way.
Live rates at checkout Yes: Economy, Standard and Express, in the order's currency.
Review before sending Yes. Every order is made as a draft first.
Cancel Yes, across every part of a split order.
Signed webhooks No. Gelato signs nothing.
Webhook setup By hand, in Gelato's dashboard.
Stock updates Yes, daily, for products that can run out.

How an order goes

  1. The order is paid. The add-on searches Gelato for an order under this order's reference first, because Gelato's own reference does not stop a second order. Only when there is none is one made.
  2. The order is made as a draft, in auto mode too. A draft is free.
  3. Before sending, the draft is read back from Gelato and compared with the order as it stands: the recipient, every item with its product and files, and the service. A draft changed in Gelato's dashboard is not sent, and the order needs your attention.
  4. In review mode you press Send to Gelato for …; in auto mode it goes at once. Sending is one small change to the draft that turns it into a real order, and it is the call that charges your account.
  5. Gelato may split an order across facilities. Here it stays one order, its costs added up, and every parcel is tracked onto it.

A parcel becomes a shipment on the order only once its items have actually left, not when Gelato first hands out a tracking code.

A changed order whose draft Gelato cannot edit is remade: the draft is deleted (only while it is still a draft nobody has sent) and the new version is made as the next attempt.

Webhooks

Gelato has no API for adding a webhook and signs nothing it sends, so the secret in the address is the whole check. Keep that address as private as a password.

  1. Press Register webhook on the Gelato card, or run bin/plugin kahunacart-print-on-demand webhook gelato. It makes this store's secret address and lists the steps. The secret is hidden.
  2. Press Show address on the card to see the whole address, or run bin/plugin kahunacart-print-on-demand webhook gelato --reveal.
  3. In Gelato's dashboard, open Developer → Webhooks → Add webhook, paste the address and choose POST.
  4. Tick order_status_updated, order_item_status_updated and order_item_tracking_code_updated, and save.

Gelato's webhooks are account-wide. An event about an order from one of your other Gelato sales channels is answered and ignored. Gelato tries a delivery three times and then gives up, so the store also checks every open order every few hours.

Gelato's own limits

  • No test mode. To try Gelato without spending, make a second Gelato account with no payment method and use its key on a test store: Gelato accepts quotes and orders there and cancels each order at once.
  • Names. Gelato wants a first and a last name, 25 characters each. KahunaCart has one name field, so it is split at the last space. A customer whose family name comes first gets the two swapped on Gelato's label.
  • An email address on every order, checked at checkout.
  • Local script for China, Japan, Korea and Russia. An address written in Latin letters there is refused at checkout, because the carrier cannot read it.
  • Countries per product. A Gelato product is made for a list of countries. One that is not made for the customer's country is refused at the address step, naming the product.
  • No business orders to Brazil yet. A Brazilian business (an order with a CNPJ number) needs two more tax fields that KahunaCart has nowhere to keep, so an order like that with Gelato items is refused at checkout and again before sending. A person's CPF goes through as normal.
  • Rates from every facility. Checkout asks Gelato for a quote from every facility that would make the parcel and adds them up. A service is offered only when every facility can do it.