Most iOS 14 content was written in 2021 and 2022. A lot of it is outdated. The landscape has shifted, Meta has made changes, and the practical picture looks different from what most guides describe.
This post covers what Meta attribution actually looks like in 2026: what CAPI recovers, what it does not, and how to build a reporting framework that gives you a usable number without pretending the problem is fully solved.
Spoiler: CAPI helps a lot. It does not fix everything. And some of what people think CAPI solves, it does not.
What iOS 14 Actually Did to Meta Attribution (And What It Didn't)
iOS 14's App Tracking Transparency framework required apps to ask users for permission before tracking them across apps and websites. About 75% of users opted out. For Meta, that meant browser-side pixel tracking lost the ability to match ad clicks to conversions for most iOS users.
What this broke: last-click attribution for iOS users running Safari or the Facebook in-app browser. What it did not break: tracking for Android users, tracking for iOS users who opted in, and tracking for conversions that happen inside the Meta ecosystem (like Lead Ads).
The result was not that Meta attribution stopped working. It became unreliable for a specific slice of traffic. The problem is that slice is large, often 40 to 60% of mobile traffic for consumer brands.
How Conversions API Works and What It Actually Recovers
Conversions API (CAPI) sends conversion events from your server to Meta rather than from the user's browser. Since it does not rely on browser cookies, it is not affected by iOS privacy changes or ad blockers.
What CAPI recovers: conversions from users whose browser pixel was blocked or did not fire. What CAPI requires: a way to match those conversions back to Meta users. Meta uses email addresses, phone numbers, and other identity signals to do this matching. The match rate depends heavily on how much identity data you pass with each event.
In practice, a well-implemented CAPI setup with proper deduplication and identity signal passing recovers about 15 to 30% of the conversions that were previously invisible to Meta. That is meaningful, but it is not a complete fix.
Common CAPI Mistakes That Limit Recovery
The biggest mistake: running browser-side pixel and server-side CAPI in parallel without deduplication. Both fire for the same conversion. Meta counts both. Your reported ROAS is inflated. The algorithm optimizes toward a signal that is double-counted.
Second mistake: not passing customer data parameters with the server-side event. If you send the purchase event without an email or phone number, Meta has nothing to match against. The event gets logged but does not contribute to attribution. CAPI is only as good as the identity data you send with it.
Third mistake: a delayed server event. If your server fires the conversion event 10 to 30 minutes after the actual conversion, Meta may have already received the browser pixel event. Deduplication keys solve this, but only if they are implemented correctly with matching event IDs on both sides.
The Meta Dashboard vs. Reality: How to Triangulate True Performance
Meta's Ads Manager reports conversions using a 7-day click, 1-day view attribution window by default. This tends to overstate performance. A user who saw your ad and then converted through a Google search three days later gets attributed to Meta.
The honest approach is triangulation. Compare three numbers: Meta-reported conversions, GA4-assisted conversions attributed to paid social, and backend or CRM conversions tagged with Meta UTMs. None of these is perfect. Together, they give you a range.
If Meta is reporting 200 monthly conversions, GA4 shows 120, and your CRM shows 85 with Meta UTMs, the real number is probably somewhere in the 100 to 150 range. Working with a range is not comfortable, but it is more honest than treating the Meta dashboard number as accurate.
GA4 Assisted Conversions as a Secondary Attribution Layer
GA4's assisted conversions report shows how many conversions had Meta as an assist in the path, even if Meta was not the last touch. This is useful context. It shows Meta's contribution to conversions that ultimately converted through a different channel.
To use this properly: set up GA4 with proper UTM tagging on all Meta ads. Check the Model Comparison report in GA4 to see how Meta's contribution changes under data-driven attribution versus last-click. The delta between those two numbers tells you how much Meta benefits from a multi-touch view.
This does not solve the attribution problem. But it gives you a second data point that is independent of Meta's own reporting.
UTM-Based CRM Attribution: The Manual Fallback That Works
The most reliable attribution method for Meta is the most low-tech: UTM parameters on every ad, passed to your CRM at the point of form submission or purchase. This is last-click only and misses view-through attribution entirely, but it is accurate for the traffic it does capture.
Set up UTMs with campaign, ad set, and ad level parameters. Make sure your form or checkout passes those UTMs to a hidden field that gets recorded in your CRM. Then segment your CRM pipeline by source to see how many deals touched Meta in the first interaction.
The limitation: for brands with longer sales cycles (30-plus days), the first touch may have been Meta but the lead enters the CRM through a later organic search. UTM attribution misses that. Still, having one reliable data point is better than relying entirely on Meta's reported numbers.
Building a Reporting Framework That Accounts for Uncertainty
The framework we use with clients: report Meta performance in three tiers. Tier one is a directional signal from the Meta dashboard (high, not precise). Tier two is GA4 assisted conversions (more conservative, multi-touch). Tier three is CRM UTM-attributed conversions (most conservative, last-click only).
We set Meta budget decisions based on the midpoint between tier one and tier two, not on tier one alone. If the midpoint supports the unit economics, the channel stays funded. If it does not, we investigate before cutting budget.
This is not a perfect system. But it is more defensible than treating a single attribution source as ground truth. The goal is not to solve attribution. The goal is to make better budget decisions despite imperfect data.

