LAUNCH$167 covers Shopify today. Buy now, get a free re-run when Klaviyo, Meta, and GA4 ship in two weeks. Price moves to $297 after. Lock in $167
DATA/GAPRUN A FREE AUDIT
FIELD NOTES·PROBLEM·MAY 9, 2026

Shopify post-purchase tracking: order_shipped, order_delivered, return_initiated

The order_completed event is just the start of the customer lifecycle. The next four events drive everything from post-purchase NPS to first-repeat flows to return-recovery campaigns: order_shipped, order_delivered, order_in_transit, and return_initiated. Most Shopify stores fire none of these. Here's how to instrument them.

Where each event comes from

  • order_shipped: fired when Shopify Fulfillments creates a fulfillment record with tracking info. Available via the Admin API's fulfillments resource and via Shopify Flow webhooks.
  • order_delivered: requires the carrier to report delivery to Shopify. Shopify Shipping pipes this from USPS / UPS / FedEx automatically. Third-party shippers need the carrier's tracking webhook configured in Shopify.
  • order_in_transit: comes from the same carrier webhook stream as delivered, just an earlier status.
  • return_initiated: fired when a customer or merchant creates a return via Shopify Returns or Loop / Returnly. Available on the order's refunds array via the Admin API.

How to send these to Klaviyo / Meta / GA4

Shopify Flow is the most no-code path. Create a flow triggered on Fulfillment created, with an action that calls Klaviyo's Server Event API and posts an order_shipped event with the order_id, tracking_number, and carrier. Repeat for delivered and return_initiated. No engineer required.

For Meta CAPI: the Meta channel app fires Subscribe and Purchase but doesn't fire post-purchase events by default. Use a Customer Events pixel or a Shopify Flow → Meta Conversions API webhook to ship custom events for shipped and delivered.

Why most stores miss this entirely

Post-purchase events are invisible to GA4 by default because the customer is no longer on your site when shipped/delivered happens. You can't capture them in a Pixel or gtag.js snippet because there's no page load. The events have to be sent server-side from Shopify (via Flow, a custom backend, or a third-party integration).

How DataGap audits this

We pull your last 30 days of fulfillments and refunds via the Shopify Admin API. If the counts don't match the corresponding events firing in your Klaviyo metrics, we flag the gap. Typical finding: order_shipped count = 247, Klaviyo order_shipped event count = 0. That's a broken flow.

RUN THE AUDIT
Want to know which of these gaps your Shopify store has right now?

DataGap connects to your Shopify store via read-only OAuth and returns a ranked list of tracking gaps in 10 minutes. $167 one-time. No subscription.

Run a free audit

Frequently asked

Do I need Shopify Plus for this?

No. Shopify Flow is available on the Basic plan and up via the Shopify Flow app. All four events are accessible to non-Plus stores.

Why send these to Klaviyo and not just track them in Shopify?

Shopify can tell you fulfillment metrics in aggregate. Klaviyo can branch your post-purchase email flow on them per customer. The latter is what drives repeat-purchase rate.

RELATED FIELD NOTES