Skip to content
Academy

iOS 14+ & The Attribution Mess

SKAdNetwork, CAPI, modeled conversions, and why your dashboard is lying to you.

ADVANCED·10 MIN READ·PAID ADS·UPDATED JUN 2026
Share:

iOS 14+ & The Attribution Mess

In April 2021, Apple launched a privacy change that quietly broke mobile advertising. The update, called App Tracking Transparency (ATT), required every iPhone app to ask users for permission before tracking them across other apps and websites. Most users said no. Advertisers lost the ability to see who clicked their ad and then bought something. The clean data chain snapped.

Quick Summary

  • Apple's ATT update (April 2021) ended user-level tracking for most iOS users, and by Q2 2025, only 35% of users globally allow tracking (Adjust).
  • SKAdNetwork (SKAN) is Apple's privacy-safe replacement: it tells you a campaign drove installs, but with a delay of 24-72 hours and no user-level detail.
  • Meta's Conversions API (CAPI) lets your server send purchase data directly to Meta, bypassing the browser entirely and recovering lost attribution.
  • Modeled conversions are statistical estimates that platforms use to fill in the gaps, they are educated guesses, not real data.
  • The number in your Ads Manager dashboard is a blend of real events, server-matched events, and estimates, you must verify it against your own data.

Why This Broke Everything

Before iOS 14.5, attribution (figuring out which ad caused a sale) worked like this: a tracking pixel (a tiny piece of code) sat in your browser and followed you from the ad click to the purchase. The ad platform connected those two dots and logged a conversion.

After iOS 14.5, that tracking pixel is blocked for any iOS user who says "no" to tracking. Depending on your audience, that is 50-70% of your traffic. You lose the dot-connecting entirely.

What replaced it is three different workarounds running at the same time: SKAdNetwork, Conversions API, and Modeled Conversions.

Note

Why this matters to you right now: As of Q2 2025, only 35% of iOS users globally allow cross-app tracking (Adjust). That means on any iOS-heavy campaign, roughly 65% of your conversions cannot be tracked the old way. If you are running Meta or TikTok ads to a consumer audience in the US, this is not an edge case, it is the default reality.


The Three Workarounds Explained

1. SKAdNetwork (SKAN): Apple's Own Solution

SKAdNetwork is Apple's official privacy-safe measurement framework. Here is how it works in plain terms:

  1. A user sees your ad on their iPhone.
  2. They tap through and install your app (or visit your site).
  3. Apple's framework logs the install privately on the device.
  4. After a random delay (minimum 24 hours, sometimes up to 72 hours), Apple sends a "postback" (a notification) to the ad network confirming a conversion happened.
  5. The postback includes a "conversion value", a number from 0 to 63 that you set up in advance to represent different actions (like a $10 purchase vs. a $100 purchase).
  6. You never learn which specific user converted. The data arrives in aggregate only.

The current version, SKAdNetwork 4.0 (SKAN 4), is a significant improvement. It allows up to three postbacks across a 35-day window, gives you more granular conversion signals, and supports up to 10,000 campaign IDs (vs. just 100 in older versions). By early 2024, AppsFlyer was tracking over 240 million SKAN 4 postbacks across 2,000+ apps.

Important threshold: Campaigns need roughly 100-150 installs per day to unlock meaningful postback data. Campaigns under around 20 daily installs frequently get "null conversion values", Apple suppresses the data entirely to protect user privacy.

2. Meta Conversions API (CAPI): Server-to-Server Tracking

Meta's Conversions API works from your side, not the user's device. Instead of relying on a browser pixel (which gets blocked), your own server sends purchase data directly to Meta: "someone with this hashed email address bought $89 worth of product at 2:04 PM." Meta matches that event to one of its users using hashed identifiers like email or phone number.

This completely bypasses ATT because you are using your own first-party data (data you collected directly from the customer). The ATT prompt only restricts cross-app device tracking, it does not stop you from sending your own server data.

Key rule: Always run CAPI alongside your browser pixel, not instead of it. The pixel captures clicks that CAPI might miss; CAPI captures purchases that the pixel misses. Together they recover far more signal than either alone.

3. Modeled Conversions: The Estimates Filling the Gap

Modeled conversions are what platforms like Meta and Google show you when they cannot measure directly. The platform looks at users who did allow tracking, identifies patterns in how they behave before buying, and then estimates how many similar opt-out users probably also converted. It is statistical inference, reasonable at the aggregate level, unreliable at the campaign or ad-set level.

The critical thing to understand: when you look at your Meta Ads Manager dashboard, the conversion number is a mixture of:

  • Real conversions tracked by CAPI or the pixel
  • SKAN postbacks from Apple
  • Modeled estimates for the rest

You cannot easily see which is which.


How the Data Flows: A Visual


Real Company Examples

Airbnb: The Dashboard Lie

After iOS 14.5 launched, Airbnb reported a 30-40% drop in attributed conversions inside Meta Ads Manager within weeks of the rollout, even though actual bookings stayed relatively steady according to their internal data warehouse. The attribution system had collapsed, not the business.

By adding Meta's Conversions API alongside their existing pixel, Airbnb recovered roughly 15-20% of those "lost" conversion events. The lesson: the platform dashboard showed a crisis that was not fully real, and their own server-side data told a different story.

Mobile Gaming Industry: The Volume Problem

A well-documented pattern across mobile gaming publishers in 2023-2024 shows what happens when campaigns fall below SKAN's volume thresholds. Studios running campaigns under 20 daily installs on iOS routinely received null (blank) conversion values from Apple's postbacks, giving them zero actionable data on those campaigns. Publishers who consolidated their iOS spend into fewer, higher-volume campaigns consistently unlocked more postback data. This insight, documented by Aarki and Singular in 2024, drove a shift in how mobile UA (user acquisition) teams structure their iOS budgets: fewer campaigns, bigger budgets per campaign.

Real Example

Worked example: Setting up SKAN conversion values

You run a fitness app. A new user's first 24 hours matter most for predicting if they will pay. You map your conversion value schema like this:

  • Value 0-10: User installed but did nothing
  • Value 11-30: User completed onboarding
  • Value 31-50: User logged a workout (strong intent)
  • Value 51-63: User started a free trial (high intent)

When Apple sends a postback with value 55, you know that campaign drove high-intent installs, even without knowing which specific user converted. This is how you extract signal from SKAN's limited data. You configure this schema in your Mobile Measurement Partner (MMP) tool like AppsFlyer or Adjust.


Apple's Next Step: AdAttributionKit (AAK)

In 2024, Apple announced AdAttributionKit (AAK) as the long-term replacement for SKAdNetwork. It received major upgrades at WWDC 2025. Key improvements over SKAN:

  • Re-engagement tracking: AAK can measure campaigns that bring existing (churned) users back to your app, SKAN could only measure new installs.
  • Configurable attribution windows: You can adjust the time window for attributing conversions to an ad, rather than using Apple's fixed defaults.
  • Country codes in postbacks: You can see which country a conversion came from, a significant improvement for international campaigns.
  • Better testing tools: A developer testing mode lets you validate your setup without running a full live campaign.

Both SKAN and AAK are currently active and interoperable. Expect a full migration to AAK in 2026.


Common Mistakes

Common Mistake

Mistake 1: Treating Ads Manager ROAS as ground truth. The return on ad spend (ROAS, revenue divided by ad spend) shown in your platform dashboard mixes real data with estimates. Making large budget decisions solely based on this number can amplify noise. Always cross-check with your own data warehouse or analytics tool (GA4, Shopify reports, etc.).

Common Mistake

Mistake 2: Installing CAPI without deduplication. If you run both the browser pixel and CAPI simultaneously (which you should), you WILL send duplicate events unless you implement event deduplication. Meta uses an "event ID" to deduplicate, the same event ID from the pixel and CAPI tells Meta it is the same event, not two separate ones. Skip this step and your conversion counts inflate by 30-60%, corrupting your optimization signals. Check Meta's Events Manager for duplicate event warnings before going live.

Common Mistake

Mistake 3: Running too many small iOS campaigns. Below roughly 100-150 daily installs per campaign, SKAN suppresses postback data entirely. Spreading your iOS budget across 10 small campaigns means 10 campaigns with no actionable data. Consolidate into fewer, higher-volume campaigns to unlock signal.


The Practical Fix: A Measurement Stack That Actually Works

Here is what a solid iOS attribution setup looks like in 2025:

  1. Browser pixel + CAPI with deduplication, Run both. Add event IDs to prevent double-counting. This is your baseline.
  2. A Mobile Measurement Partner (MMP), Tools like AppsFlyer, Adjust, or Singular unify SKAN postbacks, CAPI events, and pixel data into one dashboard. They handle the SKAN configuration and deduplication for you.
  3. A "source of truth" outside ad platforms, GA4 plus BigQuery, or your Shopify/CRM order reports. When your internal system and Ads Manager disagree by more than 20%, your CAPI setup needs attention.
  4. SKAN conversion value schema, Map your most important early user actions (Day 1 behavior) to SKAN values. Work with your MMP to configure this.
  5. Incrementality testing, Run holdout tests (where you show some users no ads) to measure the true causal impact of campaigns, independent of attribution models.
Pro Tip

Pro tip: Android performance looks artificially better than iOS on your dashboard, because Android users are more trackable (no ATT equivalent). Before cutting iOS budget because "iOS ROAS is low," check whether the gap is real or a measurement artifact. Run a geo-based test: spend heavily in an iOS-dominant region vs. an Android-dominant region, and compare against your internal revenue data.


The One-Line Takeaway

Your ad platform dashboard shows you a story built from real data, educated guesses, and statistical models, knowing which is which is the skill that separates advanced media buyers from everyone else.


  • MMM vs MTA, When pixel-level attribution breaks down, marketing mix modeling becomes a more reliable alternative for budget decisions
  • Retargeting, iOS privacy restrictions dramatically shrunk retargeting audiences; understanding attribution loss here explains why retargeting performance dropped post-2021
  • Meta Ads, The platform most affected by iOS 14+; understanding CAPI and SKAN is now prerequisite knowledge for running Meta campaigns effectively
Test Your Knowledge
Loading questions…

Related Concepts

You Might Also Like