ATT, SKAdNetwork & Aggregated Event Measurement, explained for app builders
Updated July 10, 2026 · 7 min read
Since iOS 14.5, three mechanisms shape whether your app's purchases can be attributed to ads: App Tracking Transparency (ATT), SKAdNetwork, and Aggregated Event Measurement (AEM). They're often confused, but they solve different parts of the same problem.
Here's what each does and why, together, they mean client-side tracking alone is no longer enough.
App Tracking Transparency (ATT)
ATT is the iOS prompt that asks the user for permission to track them across apps and websites. If they deny it — and most do — your app can't access the device advertising identifier, and the Facebook SDK suppresses the client-side events it would otherwise send.
This is why client-only tracking loses most iOS conversions: the signal is switched off at the source for denied users.
SKAdNetwork
SKAdNetwork is Apple's privacy-preserving attribution framework. Instead of user-level tracking, the ad network receives an aggregated, delayed postback saying a conversion happened, with a limited 'conversion value' you configure. It works without ATT permission but gives you coarse, aggregated data — not per-user, per-purchase detail.
You configure a conversion value schema to encode meaningful events (like a purchase or a revenue bucket) into the small value SKAdNetwork allows.
Aggregated Event Measurement (AEM)
AEM is Meta's layer for measuring and optimizing web and app events under these constraints. You prioritize a limited set of events in Events Manager, and Meta uses aggregated, privacy-safe measurement to attribute and optimize even when user-level data isn't available.
AEM is where your event configuration and the Conversions API meet the privacy limits — getting the right events prioritized matters for optimization.
What this means for tracking purchases
- For ATT-authorized users, the client SDK still provides high-quality, user-level signal.
- For ATT-denied users, the Conversions API (server-side) is how the purchase reaches Meta at all.
- SKAdNetwork provides aggregated attribution regardless of ATT, but only if your conversion value schema is set up to capture purchases.
- AEM ties it together — prioritize your key events so measurement and optimization work under the privacy limits.
Frequently asked questions
Does denying App Tracking Transparency stop Facebook from tracking purchases?
It stops client-side (SDK) tracking, because iOS blocks the advertising identifier and the SDK suppresses events. A server-side Conversions API event isn't subject to ATT and still delivers the purchase, and SKAdNetwork provides aggregated attribution regardless.
What's the difference between SKAdNetwork and the Conversions API?
SKAdNetwork is Apple's aggregated, privacy-preserving attribution with a limited conversion value and delayed postbacks. The Conversions API is Meta's server-side event channel that sends your actual purchase events from your backend. They're complementary: SKAdNetwork for aggregated attribution, CAPI for reliable event delivery.
What is Aggregated Event Measurement (AEM)?
AEM is Meta's framework for measuring and optimizing a prioritized set of events under iOS privacy constraints, using aggregated, privacy-safe methods so campaigns can still optimize when user-level data isn't available.
Do I still need the Facebook SDK if I use the Conversions API?
For ATT-authorized users the SDK provides richer user-level identity that improves attribution, so most apps run both and deduplicate with a shared event ID. The Conversions API is what covers the ATT-denied and post-crash cases the SDK misses.
Related guides
Not sure which of these is breaking your app?
Zoruko audits your app code for broken Meta and TikTok signal chains — free — and ships each fix as a pull request you review.
Run a free audit