Shopify ROAS Dropping After iOS 14? What's Actually Happening
Your Meta Ads Manager is showing a ROAS of 2.1x. Your Shopify data shows actual ROAS of 2.9x.
The gap used to be 10–15%. Now it’s 30%+.
You’re confused. Is Meta’s tracking broken? Are your Shopify UTMs set up wrong? Should you panic?
No. What’s happening is measurement loss due to iOS 14 — and it’s not a bug, it’s the new normal.
Here’s what changed, why it matters, and what to do about it.
The iOS 14 Change: One Simple Fact
Before iOS 14 (September 2021), Meta could track almost every iPhone and iPad user’s behavior across websites. A user clicks your Facebook ad on Safari, lands on your Shopify store, buys something. Meta sees it all.
iOS 14 (and 15, 16 now) introduced App Tracking Transparency (ATT). Apple said: users must opt in to tracking. By default, apps can’t track across other apps and websites.
Result: Meta can’t see when an iOS user converts. So Meta’s pixel can’t fire properly on Safari.
Instead of tracking individual conversions, Meta now uses Aggregated Event Measurement (AEM). It receives data in batches, loses detail, and sees maybe 70% of actual iOS conversions.
The measurement math:
- Before iOS 14: Meta saw 95% of your conversions (some Android users lacked tracking, etc.)
- After iOS 14: Meta sees maybe 60–65% of conversions (most iPhone/iPad users opted out)
- iPhones and iPads are roughly 30–40% of your traffic
Result: Meta’s visibility dropped by ~25–30% across the board.
What Actually Happened to Performance
Here’s the crucial distinction: your ads didn’t get worse. Your measurement got worse.
Let’s say you’re running a campaign:
Before iOS 14:
- Impressions: 10,000
- Clicks: 300
- Conversions (Meta sees): 15
- Conversion rate: 5%
- Spend: €500
- Meta ROAS: €4,500 / €500 = 9.0x
After iOS 14:
- Impressions: 10,000 (unchanged)
- Clicks: 300 (unchanged; clicks happen before iOS 14 kicks in)
- Conversions (Meta sees): 10 (measurement loss on iOS)
- Actual conversions (Shopify sees all): 15 (unchanged)
- Conversion rate Meta shows: 3.3% (wrong, measured)
- Actual conversion rate: 5% (real)
- Spend: €500 (unchanged)
- Meta ROAS: €3,000 / €500 = 6.0x (appears to drop)
- Actual ROAS: €4,500 / €500 = 9.0x (unchanged)
Your performance didn’t drop from 9x to 6x. Meta’s visibility dropped. Your real performance stayed at 9x.
But because you don’t see all conversions in Meta Ads Manager, you think you’re declining.
The Attribution Window Problem
Even worse: iOS 14 degraded the 7-day click window that Meta uses for attribution.
Before iOS 14, Meta could track a click on Tuesday and map it to a purchase on Friday (7-day window). This worked well because it tracked the user across sites reliably.
With iOS 14, Meta loses the user after they click. When they return Friday and buy, Meta doesn’t see the connection. It can’t attribute the Friday purchase to Tuesday’s click.
Result: Longer purchase cycles are now invisible to Meta.
If your average purchase cycle is 3–5 days, iOS 14 cost you visibility into many sales.
If your average cycle is same-day or next-day, the impact is smaller.
What Changed vs What Didn’t
What Changed (Broke):
- iOS user tracking across websites (ATT opt-in required)
- 7-day click window accuracy (less reliable for multi-day journeys)
- Real-time pixel data (now batched via AEM)
- Audience targeting on iOS (smaller data set, less precise)
What Didn’t Change:
- Android tracking (still works well)
- Your actual campaign performance (clicks, conversions, revenue)
- Shopify’s order tracking (no iOS limitation here)
- Your ability to run ads (Meta ads still work; you just see less)
How to Get Closer to Ground Truth
You can’t fix iOS 14. But you can measure more accurately.
1. Set Up the Conversions API
The Conversions API is server-side tracking. Instead of Meta’s pixel firing on the browser (which iOS 14 blocks), Shopify sends the order data directly to Meta’s servers.
This bypasses Apple’s ATT restriction because it’s server-to-server, not browser-to-server.
How to enable it:
In Shopify:
- Go to Settings > Apps and Channels
- Find “Facebook & Instagram” app
- Click it > Settings
- Toggle on “Use Conversions API”
- Select “Purchase” as your primary event
Meta will now receive conversion data from Shopify directly, even on iOS.
Limitation: Conversions API still has a slight delay (1–2 hours vs real-time), and some conversions still get lost if Shopify has a timeout. But you’ll recover 70–80% of the iOS conversions Meta was missing.
2. Use UTM Tracking to Cross-Check
Set up UTM parameters on all your Meta campaigns:
- utm_source=facebook
- utm_medium=cpc
- utm_campaign=[campaign-name]
In Shopify, go to Reports > Sales by source > Facebook. This shows actual orders tied to Facebook clicks.
This is your ground truth. It’s not inflated. It’s not missing iOS data. It’s just real orders.
Compare Meta’s ROAS to Shopify’s ROAS:
- Meta reports: 2.5x ROAS
- Shopify shows: 3.2x ROAS
- Gap: 0.7x (Shopify is 28% higher)
This gap tells you how much iOS data Meta is missing. If the gap is consistent (e.g., always ~25%), you can factor it into your decision-making.
3. Lengthen Your Evaluation Windows
iOS 14 also means some conversions take longer to attribute. A purchase that happens 6 days after a click might not show up in Meta’s 7-day window.
Instead of evaluating campaigns daily, evaluate every 3–5 days. Longer windows let more conversions settle into Meta’s system.
4. Prioritize the Purchase Event
Meta can track up to 8 events via Conversions API (on the AEM limit). Prioritize them:
- Purchase (highest value)
- Add to cart
- Initiate checkout
- View content
Don’t track 8 different events. Focus Meta on the ones that matter: Purchase first, everything else second.
The Real Impact on Your Campaigns
If you’re running Meta ads post-iOS 14:
- You’re blind to ~25% of your conversions
- Your reported ROAS is ~20–30% lower than real ROAS
- Your actual customer acquisition is working fine; you just can’t measure all of it
- Longer purchase cycles (3+ days) are partially invisible
This doesn’t mean pausing campaigns. It means understanding the measurement gap and making decisions based on Shopify data, not Meta’s numbers.
Real Example: Before and After Understanding iOS 14
Scenario: A €50k/month campaign
The Mistake (Not understanding iOS 14):
- Meta shows ROAS dropped from 3.2x to 2.1x
- You panic and cut budget by 40%
- You assume the campaign got worse
The Reality (Understanding iOS 14):
- Meta shows 2.1x (missing 25% of iOS conversions)
- Shopify shows 2.8x (real ROAS, all orders)
- Campaign actually improved slightly (Meta’s optimization is working)
- You’d never have cut budget
The Cost: Cutting a winning campaign costs you real profit. Thousands of euros.
Going Forward
iOS 14 is permanent. You have to adapt your thinking:
- Don’t trust Meta’s ROAS — Use Shopify ROAS as ground truth
- Set up Conversions API — Recover 70–80% of lost iOS conversions
- Use longer evaluation windows — Wait 3–5 days before judging campaigns
- Pair Meta data with Shopify data — Compare them to understand the gap
This isn’t worse than pre-iOS 14. It’s just different. You’re measuring via Shopify now, which is actually more accurate than trusting Meta.
Ready to Fix Your Attribution?
Stop assuming iOS 14 killed your campaigns. They’re fine. You just need to measure them correctly.
Set up profit-based kill rules in Calatrix — rules that run on Shopify data, not Meta’s numbers, so iOS 14 measurement gaps don’t break your automation.
Check out our ROAS calculator to understand the gap between Meta’s number and Shopify’s truth for your store.
Your campaigns are probably performing better than Meta claims. Let’s measure it correctly.
Ready to stop losing money on Meta ads?
Set up automated kill rules and let Calatrix protect your ad spend 24/7. Pair this with Shopify's real order data and COGS tracking to optimize for actual profit, not vanity metrics.
Start 14-day free trial