Since April 2021 and the iOS 14.5 update, Apple has required every app to ask users for explicit consent before tracking them. This policy, called App Tracking Transparency (ATT), fundamentally changed the advertising landscape.
Since then, a large share of iOS users have opted out of in-app tracking. Safari also limits the lifetime of cookies set by JavaScript. Some purchases therefore become invisible to Meta, or only estimated. The exact share depends on your traffic: compare Shopify orders with reported conversions over the same period.
What's actually broken
Before iOS 14.5, the Meta pixel worked simply: a piece of JavaScript on your site sent events (page view, add to cart, purchase) to Meta, which matched them to the ad click thanks to the fbclid cookie.
Here's what happens now:
- The fbclid cookie is blocked or expires within 24 hours on Safari (ITP) instead of 7 days
- Ad blockers can remove the Meta pixel from the browser
- ATT prevents Meta from matching the ad click with the purchase if the user opts out of tracking in the Facebook app
- The attribution window is shorter: 7 days by default (versus 28 days before)
The result: Meta only sees a fraction of actual conversions. And paradoxically, Meta sometimes over-reports certain conversions through its statistical modeling, creating an artificial ROAS that matches nothing real.
What you can measure yourself
There's no single percentage of "lost" conversions. What you can observe on a store:
- some purchases never reach the browser pixel (ad blocker, Safari, in-app tracking opt-out)
- Meta fills the gaps with modeling you can't audit line by line
- the ROAS you see can therefore be above or below the revenue you actually collected
- retargeting suffers on top of that, because it relies on visitor audiences seen by the pixel
The useful comparison: paid Shopify orders on one side, Meta conversions on the other, same dates. The gap is yours. It isn't a ProfitPilotPro average.
Meta's modeling: a band-aid on a broken leg
Meta introduced Aggregated Event Measurement (AEM) and a statistical modeling system to "estimate" missing conversions. The problem is that this modeling is a black box.
You have no idea how Meta calculates these estimates. And Meta has a direct interest in showing you a favorable ROAS: the more you believe your ads work, the more you spend.
The solution: server-side tracking (CAPI)
Meta's Conversions API (CAPI) lets you send conversion events directly from your server, without going through the user's browser. It's Meta's official way around the iOS limitations.
Here's how it works:
- When a purchase happens on your store, your server sends the event directly to Meta
- Meta receives the event with identifiers (hashed email, phone, IP) to match it with the ad click
- Ad blockers can't block this server-to-server communication
- The event leaves from the server: neither Safari's ITP nor an ad blocker can stop it
Fingerprinting to fill the remaining gaps
Even with CAPI, some visitors remain hard to match (cleared cookies, private browsing). A technical browser fingerprint can recognize a device without a cookie. It doesn't stand in for consent: until the person has said yes, the merchant must be able to turn this sending off. The details are in the privacy policy.
How to set up server-side tracking
There are several approaches:
- By hand: build an API endpoint that receives events and forwards them to Meta through CAPI. Complex and time-consuming.
- With server-side Google Tag Manager: requires a dedicated server (Google Cloud Run), an advanced technical setup, and an extra monthly cost.
- With ProfitPilotPro: on Shopify, you turn the pixel on from the theme editor. Orders come in through the store connection, not through the script. The purchase goes to Meta (
Purchase), TikTok (CompletePayment) and Google (orderIdfield), with the same numeric order ID. The step-by-step guide is in Documentation → Tracking.
The concrete impact on your campaigns
By recovering missing conversions, you help Meta's algorithm optimize your campaigns better. The more conversion data Meta has, the better it targets the audiences likely to buy.
What it changes, concretely:
- The event leaves from the server: neither Safari's ITP nor an ad blocker can stop it
- Identity data is hashed on the server, so it's more complete than what the browser can send
- Your actual match rate is shown in the dashboard — it's your measurement, not a promised average
The trial lasts 14 days, no credit card required. Create an account, then compare your Shopify orders with Meta conversions over the same period.