Connecting Shopify to print shop production
For a custom print shop, Shopify is the storefront — but Shopify does not know what a gang sheet is, which design file goes with line item 2, or whether the hoodie in order #1042 has been pressed yet. Connecting Shopify to production means answering three questions automatically: how do orders get in, how does each line item find its artwork, and how does one order become trackable physical units?
Order intake via webhooks
The clean mechanism is Shopify's webhooks: the moment an order is placed, Shopify POSTs it to your production system. No polling, no CSV exports, no re-keying. Two implementation details separate robust intake from fragile intake: verify the webhook's HMAC signature against the raw request body (so forged requests are rejected), and make intake idempotent (Shopify retries deliveries, and a retry must never create a duplicate order).
Linking designs to line items
When a customer designs their garment in an on-site customizer, the resulting design ID has to travel with the purchase. The standard pattern is a hidden line item property — the customizer attaches something like _design_id to the cart line, Shopify carries it through checkout, and the webhook delivers it back. Production then knows exactly which print-ready file belongs to which line item, with no human matching artwork to orders.
From order to units
A line item with quantity 3 is one row in Shopify but three physical garments on the floor. Production systems explode each line item into individual units — each with its own identity and scannable label — because presses, bins, and packing stations operate on physical items, not order rows.
KOVA is a per-shop Shopify app: OAuth connect, automatic webhook registration, HMAC verification on raw bytes, and idempotent intake that explodes every order into QR-labeled units — already linked to the exact design the customer built. Keep your storefront; KOVA runs the back of house.
See all integrationsFrequently asked questions
No — good production systems ride on top of Shopify. The storefront and checkout stay exactly as they are; orders flow into production automatically via webhooks.
Shopify retries webhooks when it does not get a timely acknowledgment, so duplicates are normal. Intake must be idempotent — keyed on the order's external ID — so a retry updates rather than duplicates.
They should. A well-designed intake funnel treats Shopify as one source among several (API, manual entry, hosted checkout) and normalizes everything into the same orders and units downstream.