Shopify 3PL Integration — From Store Order to Warehouse Pick

How Shopify-to-WMS integration actually works for 3PLs — OAuth setup, order webhooks, inventory sync, shipment confirmation, and the failure modes to expect.

Part of Shopify Fulfillment6 min

The integration flow at a high level

A working Shopify 3PL integration runs four core data flows: order intake (Shopify to WMS), inventory sync (WMS to Shopify), shipment confirmation (WMS to Shopify), and refunds/adjustments (bidirectional).

Each flow has specific patterns and failure modes. Getting them right means the brand's customer experience matches what they would see if Shopify itself fulfilled the order.

OAuth setup and credential scoping

Shopify integrations use OAuth 2.0. The brand client authorizes the WMS as an app on their Shopify store, which generates access tokens scoped to that store only. The 3PL's WMS workspace for that client stores the token; no other client's workspace can access it.

Token rotation matters. Shopify access tokens are long-lived but can be revoked at any time by the brand. The WMS must handle revocation gracefully — pause sync, notify the operations team, and prompt re-authorization without losing in-flight orders.

Order webhook delivery

Order webhooks fire when a Shopify order is created, updated, or canceled. The WMS subscribes to the relevant events (typically `orders/create`, `orders/updated`, `orders/cancelled`).

Webhook reliability is critical. Shopify retries failed deliveries on a schedule, but during the retry window orders sit in limbo. A working integration acknowledges receipt within the timeout (typically under 5 seconds) and processes the order asynchronously.

Failure mode: webhook endpoint goes down for 10 minutes. Shopify retries deliver after recovery. The integration must deduplicate — receiving the same order create event twice should not create two warehouse picks.

Inventory sync direction and frequency

Inventory data must flow from WMS to Shopify in near-real-time. When a pick is committed in the warehouse, available inventory on Shopify must reflect it within seconds. Lag here causes oversells — the worst customer experience failure mode in ecommerce.

The mechanism is typically a push from WMS to Shopify via the Inventory Level API. A delta push (only the changed quantity) is more efficient than a full inventory rewrite. Most WMS-Shopify integrations use delta pushes; some legacy ones still do periodic full syncs, which create lag.

Failure mode: inventory adjustment in WMS doesn't push to Shopify (network issue, API error). Storefront shows higher stock than the warehouse has. Customer places order; warehouse can't fulfill; brand has to apologize. Robust integrations queue and retry inventory updates with alerting on persistent failure.

Shipment confirmation back to Shopify

When the warehouse ships an order, two data points must flow back to Shopify: the tracking number and the carrier. Shopify uses these to generate the customer-facing shipment confirmation email and to update the order status.

Marking the Shopify order "fulfilled" with the tracking and carrier is the canonical operation. Some integrations make this optional or delayed; that breaks the brand's customer experience because the customer doesn't get the expected confirmation.

Partial fulfillments (multi-line orders where some lines ship and others backorder) require fulfillment-line-level updates, not just order-level. This is where less-mature integrations break down.

Returns and refund flows

Returns initiated in Shopify (or by the brand's customer service team using Shopify's return tools) should flow to the WMS as expected inbound receipts. When the return arrives at the warehouse, the receipt is processed and the inventory adjustment posts back to Shopify.

Refund-related data is more complex. The brand handles the financial refund (typically via Shopify Payments or another processor), but the 3PL needs to know the return happened to update its inventory record and adjust the brand's billing (if the return triggers a refund of fulfillment fees).

Multi-location stores

Shopify Plus stores often have multiple inventory locations configured. The 3PL must map its warehouse(s) to the right Shopify location(s) — usually the 3PL's facility is one of multiple Shopify locations the brand uses.

Order routing logic on the Shopify side determines which orders flow to which location. The 3PL must only receive (and fulfill) orders routed to its facility. Receiving orders intended for another location is a data leak.

Continue reading

See Trenvar's Shopify integration

OAuth-scoped per client, real-time order webhooks, delta inventory sync, fulfillment-line-level shipment updates.