Shopify
Purpose
Shopify becomes a sales channel, not a second system: the item master stays here, the shop gets a copy. That removes the most expensive source of error in e-commerce before it exists — two item masters, two stock figures, two price truths and a drifting connector in between. Shopify is the reference connector: the channel contract was shaped on it.
Scope
- Create and update items in ONE call (
productSet) instead of three steps — so there is only
one partial failure instead of three.
- Stock at the configured location; without it Shopify does not know where the goods are and
refuses.
- Prices on the variant — since 2024 Shopify keeps price and SKU there, not on the product.
- Orders are pulled and become sales orders.
- Fulfilment with tracking number reported back to the shop.
- Carts by webhook (
checkouts/create,checkouts/update): started carts become
carts in the channel. One that rests for an hour with an address and without an order counts as abandoned — the trigger of the abandoned-cart reminder. Template in the integration hub: Shopify: carts via webhook.
- Four settings per channel: shop domain, API version, location and whether new items appear as
ACTIVE or DRAFT.
Interplay
The channel is a sales channel in the sense of Channels — not a special path beside the document. Items, prices and stock come from the product catalogue and stock; incoming orders become regular sales orders and travel through warehouse, shipping and invoicing like any other order. Credentials live as an integration under Integrations in the encrypted store. Flows and mappings at the system boundary — which field goes where, when a sync runs — belong to OctiConnect; conditions and waiting times remain the business of automations.
Setting up carts
- In the integration hub install the template Shopify: carts via webhook (enter the channel key of
the Shopify channel) and take over the webhook address and the secret shown.
- In the Shopify app (Dev Dashboard or custom app in the Shopify admin) grant the access
read_orders — without it Shopify delivers no carts. Shopify then asks for access to protected customer data: request email, name and phone and state the purpose ("reminder of abandoned carts").
- In Shopify set two webhooks to the address from step 1:
checkouts/createand
checkouts/update, format JSON. They are signed with the app secret (X-Shopify-Hmac-Sha256) — the same secret belongs on the flow.
- Switch off Shopify's own abandoned-checkout email (Marketing → Automations), otherwise two systems
send reminders.
Carts reported twice update the same cart; an order from the same address or the completion at checkout ends the reminder.
Limits
- The external id carries three ids (product, variant, inventory item), separated by
:.
Shopify needs a different one per operation; looking them up by SKU on every run would mean an extra request per line and run.
- The real run is still outstanding. What is verified is that we ask correctly and read the
answer correctly — not that Shopify accepts the request. A real seller account is missing.