Connecting Shopify to Apple Search Ads
Shopify is the system of record for the order, and its admin numbers are the ones the business runs on. Apple Search Ads sells App Store placement, which means it lives entirely inside Apple's privacy framework and behaves unlike every other destination here. The join between them succeeds or fails on one thing: whether no user-level click identifier reaches the Shopify order before the conversion happens, because Apple Search Ads can only match a conversion it can tie back to a click it recognizes.
Free30 minutesNo obligation
Specific to this pair
Shopify and Apple Search Ads: web orders cannot be attributed
No Shopify web order can be credited to Apple Search Ads, because Safari purchases never pass through Apple's attribution. The pair is real only with a branded shopping app: your measurement partner ties Apple's attribution token to the app user, and you flag app-channel Shopify orders and report revenue per campaign in aggregate. Exclude Shop app orders.
Apple Search Ads advertises apps in the App Store. A Shopify storefront purchase in Safari never passes through Apple's attribution, so no website order can be credited to an Apple Search Ads campaign, whatever an integration claims. The pair is only real for merchants who launched a branded shopping app on top of their Shopify store and want to know whether App Store ads paid off in orders.
In that case the chain is: Apple's attribution token at first app open, read by the app or your mobile measurement partner and tied to the app user; the user checks out in the app, which still creates a normal Shopify order. The join you build is your own. Flag orders whose sales channel is your app, link them to the attributed install inside your MMP, and report revenue per campaign in aggregate. Apple never receives the order, and nothing you send from Shopify changes what Apple reports.
The usual wasted effort is a web Purchase event wired somewhere in the hope that Apple Search Ads will count it. Also keep orders placed through Shopify's own Shop app out of the analysis: that is Shopify's app, not yours, and its installs were not driven by your App Store campaigns. Without a branded app, the sane setup for this pair is nothing at all.
Shopify → Apple Search Ads · what breaks
Why this join usually fails — Shopify → Apple Search Ads
- 01
No user-level click identifier never reaches Shopify
Shopify's checkout is locked down. Custom scripts on the checkout steps are not permitted on standard plans, and the old additional-scripts route is gone, so the identifier has to be captured on the storefront and carried into the order through cart or order attributes rather than read at the checkout itself.
- 02
Checkout extensibility hides what you need
Shopify deliberately restricts what runs during checkout. Setups that assumed free rein there broke when the platform moved to Checkout Extensibility, and many stores have been quietly under-reporting since.
- 03
Expecting per-user attribution that does not exist
Teams arrive expecting a click ID to join against and there is not one. Apple's framework is aggregate by design, with thresholds and delays, and no vendor can engineer around it.
- 04
Nothing reconciles afterwards
Apple Search Ads reports at campaign level with built-in delay and privacy thresholds. Reconciling it per user against your own records is not possible by design; compare install and post-install volumes at aggregate level over a settled window instead.
Shopify → Apple Search Ads · the fix
What working looks like — Shopify → Apple Search Ads
No user-level click identifier on every order
Conversions arriving in Apple Search Ads
Results appear in Apple Search Ads reporting at campaign or keyword level, aggregated and delayed by design rather than by fault.
Reconciled against the source
Shopify → Apple Search Ads · architecture
How Shopify and Apple Search Ads actually connect
- 1
Shopify holds the truth
The order carries line items, discounts, shipping, tax, currency and the customer. Note which figure you intend to report — total, subtotal, or net of shipping and tax — because most mismatches between Shopify and an ad platform turn out to be two people comparing two different numbers.
- 2
Apple Search Ads needs a click to match
Apple Search Ads needs the install and post-install events reported through its supported attribution path. There is no offline conversion upload in the sense the other platforms mean it, and expecting one is the usual source of wasted effort.
- 3
The identifier is the bridge
No user-level click identifier, captured at the visit and carried into the Shopify order.
- 4
The event source decides reliability
Send when Shopify says the order is paid, from your server. This also covers draft orders, POS, and the customer who closes the tab on the thank-you page — none of which a pixel on the order-status page will ever see.
- 5
Deduplication at the destination
Deduplication is largely not your problem here, because you are not sending duplicate user-level events — Apple aggregates. What matters instead is not double-counting an install across your own MMP and Apple's reporting.
Shopify → Apple Search Ads · normal or broken
Working vs. broken, side by side — Shopify → Apple Search Ads
Normal, not a fault
No user-level click identifier present on the order
Sent from the orders/paid webhook
Deduplicated correctly
Deduplication is largely not your problem here, because you are not sending duplicate user-level events — Apple aggregates. What matters instead is not double-counting an install across your own MMP and Apple's reporting.
Reconciles with the source
Actually broken
No user-level click identifier missing on most records
Shopify's checkout is locked down. Custom scripts on the checkout steps are not permitted on standard plans, and the old additional-scripts route is gone, so the identifier has to be captured on the storefront and carried into the order through cart or order attributes rather than read at the checkout itself.
Sent from the browser
Shopify deliberately restricts what runs during checkout. Setups that assumed free rein there broke when the platform moved to Checkout Extensibility, and many stores have been quietly under-reporting since.
Counted twice, or not at all
Teams arrive expecting a click ID to join against and there is not one. Apple's framework is aggregate by design, with thresholds and delays, and no vendor can engineer around it.
Nobody has reconciled it
Shopify → Apple Search Ads · diagnose
Diagnostic order — Shopify → Apple Search Ads
- 01
Count orders carrying no user-level click identifier
- 02
Follow one real conversion end to end
- 03
Open a recent paid order and read its note attributes
If the identifier is not on the order, nothing downstream can attribute it. Check ten orders, not one — partial coverage is the normal failure, not total absence.
- 04
Check whether your reporting expectations match Apple's framework
If someone has promised per-user joins on App Store installs, that is the problem — not the implementation.
- 05
Read the match rate, not the success message
Apple Search Ads reports at campaign level with built-in delay and privacy thresholds. Reconciling it per user against your own records is not possible by design; compare install and post-install volumes at aggregate level over a settled window instead.
Shopify → Apple Search Ads · prove
How it gets proven — Shopify → Apple Search Ads
Source of truth
Shopify Admin → Orders, for the same window, in the same currency and on the same timezone.
- No user-level click identifier confirmed present on a live order.
- Aggregate install and post-install volumes reconciled over a settled window, with the framework's delay stated.
- Order totals in Shopify Admin reconciled per order, not on the summed total, over a closed window.
Shopify → Apple Search Ads · free audit
What we check in the free audit
- Count orders carrying no user-level click identifier
- Follow one real conversion end to end
- Open a recent paid order and read its note attributes
- Check whether your reporting expectations match Apple's framework
- Read the match rate, not the success message
Checked against
Shopify Admin → Orders, for the same window, in the same currency and on the same timezone.
Free30 minutesNo obligation
Shopify → Apple Search Ads · when not to buy
When you don't need this — Shopify → Apple Search Ads
- Measure identifier coverage yourself first — pull your last hundred orders and count how many carry no user-level click identifier.
- Shopify's own native channel integrations already cover simple single-currency stores adequately. If your admin numbers and platform numbers already agree, you do not need this.
- If you have no iOS app, this destination does not apply at all — and if you do, budget for aggregate reporting rather than the per-order joins the rest of this library describes.
Shopify → Apple Search Ads · what we deliver
What gets built — Shopify → Apple Search Ads
Identifier capture into Shopify
Capture the click identifier on the storefront, write it to a cart attribute so it becomes an order note attribute, and read it back server-side from the order. That path survives the checkout domain hop that breaks cookie-based approaches.
Event source: the orders/paid webhook
Send when Shopify says the order is paid, from your server. This also covers draft orders, POS, and the customer who closes the tab on the thank-you page — none of which a pixel on the order-status page will ever see.
Dispatch to Apple Search Ads
Attribution through Apple's own APIs, with post-install events reported through your mobile measurement partner where you use one.
Reversals where they exist
refunds/create fires with the original order reference, so refunds and cancellations can be reversed at the destination.
Written guarantee
95%+ tracking accuracy
Measured against Shopify Admin → Orders, for the same window, in the same currency and on the same timezone.. Miss it and we keep working at no cost.
From $400 · See packages
FAQ
Shopify → Apple Search Ads questions, answered
Only if the sale happens inside your own iOS app, and then only at campaign level through Apple's attribution and your MMP. Website orders cannot be attributed to Apple Search Ads.
No. The Shop app belongs to Shopify, so its installs are not yours to attribute; keep its orders out of any app-campaign revenue you report.
Almost always because no user-level click identifier never reached the Shopify order. Shopify's checkout is locked down. Custom scripts on the checkout steps are not permitted on standard plans, and the old additional-scripts route is gone, so the identifier has to be captured on the storefront and carried into the order through cart or order attributes rather than read at the checkout itself. Measure coverage before debugging the dispatch.
This is the important difference and most guidance glosses it. Apple does not hand you a per-user click identifier to join against. Attribution runs through Apple's own APIs and privacy frameworks, which return campaign-level and aggregated results with deliberate delay and thresholds. You get an attribution token at install and campaign-level reporting afterwards — not a click ID you can put on a customer record.
The orders/paid webhook. Send when Shopify says the order is paid, from your server. This also covers draft orders, POS, and the customer who closes the tab on the thank-you page — none of which a pixel on the order-status page will ever see.
Apple Search Ads reports at campaign level with built-in delay and privacy thresholds. Reconciling it per user against your own records is not possible by design; compare install and post-install volumes at aggregate level over a settled window instead.
More on Shopify → Apple Search Ads
- Shopify POS → Apple Search AdsConnecting Shopify POS to Apple Search Ads
- Checkout Extensibility → Apple Search AdsConnecting Shopify Checkout Extensibility to Apple Search Ads
- Stripe → Apple Search AdsConnecting Stripe to Apple Search Ads
RELATED GUIDES
Where Shopify → Apple Search Ads fits in the rest of your tracking
- Saleor → Apple Search AdsConnecting Saleor to Apple Search Ads
- SureCart → Apple Search AdsConnecting SureCart to Apple Search Ads
- Swell → Apple Search AdsConnecting Swell to Apple Search Ads
- Shopify → PinterestConnecting Shopify to Pinterest
- Shopify → LinkedInConnecting Shopify to LinkedIn Ads
- Furniture ecommerceConversion tracking for furniture ecommerce, measured after delivery
- BigCommerce → Apple Search AdsConnecting BigCommerce to Apple Search Ads
- Checkout Extensibility → Apple Search AdsConnecting Shopify Checkout Extensibility to Apple Search Ads
Free · 30 min
Get Shopify and Apple Search Ads joined properly
Free30 minutesNo obligation
