Meta Ads Tracking After iOS 14: What Actually Works in 2026
What iOS 14 Actually Broke
Before iOS 14.5, Meta's pixel could track nearly everything a user did after clicking or viewing an ad. It worked because the browser stored cookies and sent data back to Meta with minimal friction.
Then Apple introduced App Tracking Transparency. Users got a popup asking whether they wanted to be tracked. Most said no. Something like 75-80% of iOS users opted out globally.
The result: Meta lost visibility on a huge chunk of conversions. The pixel still fires, but the data is delayed (up to 72 hours in some cases), modelled rather than observed, and limited to 8 conversion events per domain through Aggregated Event Measurement.
If you're running e-commerce or lead generation on Meta and you haven't addressed this, your data is worse than you think. You're almost certainly underreporting conversions, which means your cost per acquisition looks higher than it actually is, which means you might be killing campaigns that are actually profitable.
Why the Pixel Alone Isn't Enough Any More
The Meta pixel is a browser-based tracker. It depends on JavaScript firing in the user's browser and sending data back to Meta's servers. That chain breaks in several places now:
- iOS users who opted out of tracking
- Browser-based ad blockers and privacy extensions
- Safari's Intelligent Tracking Prevention, which limits cookie lifetimes
- Firefox and other browsers tightening third-party cookie restrictions
The pixel isn't dead. It still captures data from Android users, desktop users who haven't installed ad blockers, and the minority of iOS users who opted in. But relying on it as your only data source means you're seeing maybe 60-70% of actual conversions. Sometimes less.
The Conversions API: What It Is and Why It Matters
The Conversions API (CAPI) sends conversion data directly from your server to Meta's servers. It bypasses the browser entirely. No cookies, no JavaScript, no ad blockers getting in the way.
When someone fills in a form on your site, your server captures that event along with hashed user data (email, phone number, IP address) and sends it to Meta. Meta matches that data against its user profiles and attributes the conversion to the right ad.
This isn't a replacement for the pixel — it works alongside it. You run both, and Meta deduplicates the events so conversions don't get counted twice.
How to set it up
There are three main approaches, from simplest to most robust:
1. Partner integrations. If you're on Shopify, WooCommerce, or WordPress with a decent plugin, there are one-click or near-one-click CAPI integrations. Shopify's is built in. WooCommerce has several plugins that handle it. These are fine for most small to mid-size businesses.
2. Google Tag Manager server-side. You run a server-side GTM container (usually on Google Cloud), which receives events from your site and forwards them to Meta. More flexible than the partner integrations and works across platforms. Requires some technical setup but nothing extreme.
3. Direct API integration. Your developers send events directly from your application server to Meta's API endpoint. The most control, the most accurate data matching, but the most development work. Worth it for large accounts or complex funnels.
Whichever route you take, you need to send the right user parameters. At minimum: email address (hashed), and ideally phone number, first name, last name, city, and external ID. The more matching parameters you send, the higher Meta's match rate. Aim for a match rate above 80% — you can check this in Events Manager.
Event Deduplication: The Bit Everyone Gets Wrong
If you're running the pixel and CAPI together (you should be), both will try to report the same conversion. Meta needs a way to know it's the same event.
You do this with an event_id. When a conversion happens, generate a unique ID. Pass that same ID through both the pixel event and the CAPI event. Meta sees the matching IDs and counts it once.
If you skip this step, you'll double-count conversions. Your CPA will look artificially low, your ROAS will look artificially high, and you'll make bad decisions based on inflated numbers. We've seen accounts where purchases were being counted twice for months before anyone noticed.
Test your deduplication in Meta's Test Events tool. Send a few test conversions and check that each one appears only once.
Aggregated Event Measurement and the 8-Event Limit
Meta restricts you to 8 prioritised conversion events per domain for iOS 14+ users. These need to be configured in Events Manager under Aggregated Event Measurement.
Rank your events by importance. For most e-commerce businesses, the ranking looks something like:
- Purchase
- Initiate Checkout
- Add to Cart
- View Content
- Lead (if applicable)
- Complete Registration
- Add Payment Info
- Search
If a user triggers multiple events in a session, only the highest-priority event gets reported for that user. So if someone views a product, adds to cart, and purchases, you'll see the purchase but not the other two for that specific user on iOS.
This means your mid-funnel event counts will always be underreported for iOS users. Don't panic about that. Optimise towards your highest-priority event and accept that the funnel metrics are directional, not precise.
UTM Parameters: Your Safety Net
Even with CAPI running perfectly, Meta's attribution window has limitations. Having a solid UTM strategy gives you a second source of truth in Google Analytics or whatever analytics platform you use.
Tag every ad with consistent UTMs:
utm_source=metautm_medium=paidutm_campaign={campaign name or ID}utm_content={ad ID or ad name}
Use dynamic parameters where possible so you don't have to manually tag every ad. Meta supports {{campaign.name}}, {{adset.name}}, and {{ad.name}} as dynamic URL parameters.
Then compare Meta's reported conversions against what GA4 shows for the same campaigns. They won't match exactly — different attribution models, different lookback windows — but if they're wildly different, something in your tracking setup needs attention.
What Good Looks Like
An account with proper post-iOS 14 tracking typically has:
- Pixel and CAPI both active and sending events
- Event match quality above 80% in Events Manager
- Proper deduplication with matching event IDs
- Aggregated Event Measurement configured with the right event priority
- Consistent UTM tagging across all ads
- Regular comparison between Meta-reported data and GA4
It's not complicated. It's just methodical. Most of the advertisers we work with had the pixel running fine and assumed that was enough. Fixing their CAPI setup usually reveals 20-40% more conversions than Meta was previously reporting. That changes how you evaluate campaign performance.
Stop Blaming Meta for Bad Data
Here's the uncomfortable truth: most complaints about Meta Ads 'not working any more' come from advertisers with broken tracking. The platform's algorithm needs accurate conversion data to optimise. If you're only feeding it 60% of your actual conversions, it's optimising against incomplete information.
Fix your tracking first. Then evaluate performance. You might find your campaigns were doing better than you thought.