Shopify integration: orders in, availability out, fulfillment back
How DockingWare connects to a Shopify store. Verified webhooks bring orders in, the ledger publishes available-to-promise back to every mapped listing, and the packing bench returns carrier and tracking to the order.
Verified in code 2026-09-03 · v2.0.0 to v2.19.0
Three directions, one contract
A store integration is only useful if all three directions hold at once. Orders have to come in. The availability the store shows has to come from the warehouse. What the warehouse ships has to go back to the order. DockingWare’s Shopify connector was built in that order, one direction per release, and each direction was smoked live against a real store before the next one started.
Orders in
Orders arrive by webhook. Each one is verified (signature, shop, freshness) before it is accepted, and enters the fulfillment queue where the orchestration allocates it. The webhook path is also the reconciliation path: a scheduled poll ingests anything a webhook might have missed through the same code, so a late or lost event heals itself instead of creating a second kind of order.
Cancellations arrive the same way. A cancelled order releases its allocation with a ledger row. An order that has already shipped refuses the cancellation by name, because you cannot un-ship a box.
Availability out
After every movement that changes a mapped product’s availability, DockingWare publishes the new available-to-promise quantity to the listing. A scheduled reconciliation compares store and ledger and names any drift. Availability is composed once, on the server, with everything that affects it: pick-face and bulk stock, allocations, damaged and quarantined stock excluded, dock stock excluded until putaway completes, and the per-product channel reserve you may have set to keep the last pieces for wholesale.
Bundles publish too. A kit’s availability is the minimum its components can support, so the store can only sell what the floor can assemble.
Fulfillment back
When the packer confirms a shipment, carrier and tracking go back to the Shopify order through a transactional outbox, the same one that guarantees the order was recorded before anything else happened to it. There is a per-integration pause switch for the day something upstream misbehaves. Turning it on stops the push. Nothing is lost while it is paused.
Matching without guesswork
Listings are matched to products by an automatic matcher that proposes drafts and names conflicts, such as two listings claiming one SKU or a SKU with no listing, and a person approves. Mappings export and import as CSV with a dry run that shows what would change before anything does. The product page’s “Sold on” pills are derived from the live mappings, so they cannot drift from reality.
A channel that watches itself
Webhook subscriptions are re-verified on a schedule and repaired if the store’s records drift from ours. A silence detector opens a named alert when webhooks stop arriving past a threshold and closes it on its own when they resume. A dead credential is detected once and short-circuited, with no repeated calls and no log spam, until a successful test or a saved credential re-arms verification.
What you can verify
Each direction of the contract shipped as its own release, with its live smoke recorded in the notes. The changelog lists them: connector and order ingest, outbound inventory, fulfillment push, hardening.
Questions
- What do I need from Shopify to connect?
- A Dev Dashboard app for your store: the shop domain, a client ID and a client secret. DockingWare tests the credentials against the store before it will save the integration, then registers its order webhooks on Connect.
- How do my products get matched to Shopify listings?
- Automatically first. The matcher proposes mappings as drafts and names conflicts, and a person approves. Mappings can also be exported and imported as CSV with a dry run. A product page shows the listings it is live on, derived from the actual mappings, never typed in.
- What happens when an order is cancelled in the store?
- The cancellation arrives by webhook, is verified, and releases the allocation with a ledger witness. If the order has already shipped, it is refused by name. Cancelling from DockingWare can also cancel in Shopify, and a channel failure never rolls back the local cancellation.
- How do I know the connection is still healthy?
- Webhook subscriptions are checked on a schedule and repaired if they drift. If webhooks go silent past a threshold, a named alert opens and resolves itself at the first proof of life. A dead credential is short-circuited so the system stops calling a store it cannot reach, and a successful test reconnects it.
Related
See how DockingWare handles this →
Ready to see it on your floor?
Early access. We onboard a small number of operations at a time.
Start Early Access