---
title: SKAN, AEM and CAPI — how app conversions reach Meta after ATT
slug: skan-aem-capi-for-app-campaigns
summary: Plain-language model of iOS app attribution in 2026 — ATT opt-in (~15–30%) is deterministic, the rest arrives via SKAdNetwork/AdAttributionKit aggregates and Meta's probabilistic AEM, privacy thresholds punish diluted setups, and a CAPI + MMP redirect setup recovers ~90–95% of conversions vs ~70–80%.
domain: mobile-apps
tags: [user-acquisition, attribution, skadnetwork, aem, capi, att, mmp, meta-ads]
related: [mmp-role-and-skadnetwork, conversions-api-capi, meta-qualified-trial-optimization-event, meta-sdk-event-validation, signal-engineering-and-conversion-event-audit, apple-ads-measurement-pitfalls]
sources: [yt:8SfXEIFdB2M]
updated: 2026-10-24
---

# SKAN, AEM and CAPI after ATT

## TL;DR
- Since ATT (2021), only users who accept the tracking prompt are tracked **deterministically**. Opt-in is ~15–20% on average, ~20–30% at most.[^1]
- For everyone else Apple sends **aggregated** SKAN data, now AdAttributionKit. Meta's **AEM** and MMPs match it **probabilistically**, i.e. educated guessing. That's why Meta and your MMP never agree.[^1][^2]
- SKAN's **privacy threshold** isn't a fixed number. It depends on volume per ad set, so small or diluted setups get little or no SKAN data.[^3]
- **CAPI + MMP** (click-ID redirect, no landing page) recovered ~**90–95%** of conversions in Anas Maqsood's accounts, vs ~**70–80%** with AEM. It effectively bypasses SKAN.[^4]
- Get an **MMP** as soon as you spend on paid beyond Apple Ads, even if you run only Meta. Singular is the cost-effective start, AppsFlyer the most expensive.[^5][^6]
- SKAN schemas **fail silently**: no errors tell you a coarse or fine conversion value isn't firing.[^7]

## Details
**The model (Anas, Sep 2026).**[^1][^2]
1. Before ATT, every conversion was tied to an IDFA (device ID), which made marketing ~100% deterministic.
2. Post-ATT, consenting users still go app SDK → server → ad network deterministically.
3. Non-consenting users are reported via SKAN (versions 3, 4, now AdAttributionKit) as aggregates. Meta's AEM and MMPs guess which user converted.
4. Platform vs MMP gaps are mostly that guesswork.

**Privacy threshold.** The more installs per ad set, the more SKAN reveals. An app spending ~$500K/month gets data through more easily than one spending $1,000 per ad set. Consolidating ad sets helps Meta (more signal) *and* SKAN (more conversions).[^3]

**The CAPI route.** Connect Meta to the MMP via Conversions API. The ad runs technically as a web campaign. A background redirect matches Meta's click ID to the Adjust/AppsFlyer app ID, so users see nothing different. Anas says most new and big apps now use this setup.[^4]

**Why an MMP even on Meta only.** Meta's AEM depends on the SKAN schema, which is easy to set up in an MMP. Mapping new events in Events Manager is easier through an MMP. Anas says few apps still use the Facebook SDK directly.[^6] You *can* run without one; some founders spend $20–30K/month without an MMP. It's just not the optimal setup.[^8]

**ATT prompt.** If you stay on SKAN, improving ATT consent is a real lever. Otherwise move to CAPI.[^9]

## Disagreements / caveats
- **Meta SDK alone vs MMP.** Steve P. Young says the Meta SDK is enough when starting out ([[meta-sdk-event-validation]]). Anas says get an MMP from day one if you run paid social. Eric Seufert agrees an MMP is mandatory once Meta is a top channel ([[mmp-role-and-skadnetwork]]).
- **Is SKAN worth it?** Seufert calls SKAN/AdAttributionKit "dead" and advises minimum compliance. Anas still treats a correct SKAN schema as a starting requirement, but his CAPI route also routes around it.
- The 90–95% vs 70–80% figures are Anas's own estimate, not a study. The CAPI redirect setup's compliance depends on current Meta/Apple policy; verify before building.

## See also
- [[conversions-api-capi]] — why server-side conversion feedback matters
- [[mmp-role-and-skadnetwork]] — MMP market and the case against investing in SKAN
- [[people/anas-maqsood]]

[^1]: yt:8SfXEIFdB2M @ 23:22 — Anas Maqsood
[^2]: yt:8SfXEIFdB2M @ 24:57 — Anas Maqsood
[^3]: yt:8SfXEIFdB2M @ 26:33 — Anas Maqsood
[^4]: yt:8SfXEIFdB2M @ 32:51 — Anas Maqsood
[^5]: yt:8SfXEIFdB2M @ 36:07 — Anas Maqsood
[^6]: yt:8SfXEIFdB2M @ 37:39 — Anas Maqsood
[^7]: yt:8SfXEIFdB2M @ 40:45 — Anas Maqsood
[^8]: yt:8SfXEIFdB2M @ 39:11 — Murat Menzilci
[^9]: yt:8SfXEIFdB2M @ 36:07 — Anas Maqsood
