In April 2021, Apple made user-level ad tracking on iOS an opt-in. App Tracking Transparency sounds procedural, but what it did was structural: the identifier that let ad networks follow a user from an Instagram ad to your app's purchase screen (the IDFA) became unavailable unless the user taps "Allow" on a prompt that most users, quite reasonably, decline.
Everything since has been the industry pretending various workarounds restore the old world. They do not. Here is what actually remains, sorted by honesty.
What actually changed
Before ATT: ad networks matched the device that saw the ad to the device that installed the app, deterministically, via IDFA. You got user-level installs, post-install revenue per campaign, lookalike audiences seeded from payers.
After ATT: that match requires consent on both sides of the join, and the double opt-in makes deterministic user-level attribution the exception. Apple's sanctioned replacement is aggregate by design, and Apple's policy explicitly prohibits fingerprinting as a workaround, whatever some vendors imply about their "probabilistic" methods.
Note the scope: this is about tracking across other companies' apps for advertising. What users do inside your own app, tied to your own accounts, is untouched. That distinction drives most of what still works.
What still works, honestly ranked
- Your own first-party funnel. Someone taps an ad, lands on your site, signs up, installs the app, logs in. The account is the identity bridge, and no Apple policy broke it. Businesses that route acquisition through a web signup before the app install keep an attribution trail that pure app-install campaigns lost. This is the single most underused fix.
- SKAdNetwork and AdAttributionKit. Apple's frameworks send aggregate, delayed postbacks: campaign-level installs and coarse conversion values, no user identity, with privacy thresholds that null small campaigns' data. Painful, limited, and real. Design your conversion value schema deliberately; it is the only signal you get.
- Aggregated platform measurement. Meta, Google and the rest rebuilt their reporting on modeled conversions. Useful for optimization inside each platform, but remember what it is: the platform estimating its own effectiveness. Grade-your-own-homework dynamics apply, the same ones covered in why GA4, Facebook and your store disagree.
- Media mix modeling. Statistics on spend versus outcomes across channels, no user data required. Works at meaningful spend levels and answers budget questions, not creative questions.
- Incrementality testing. Turn a channel off in one geo, watch what happens to installs. Crude, slow, and the most honest measurement on this list. If a channel's "attributed" installs survive the channel being paused, you have learned something no dashboard would have told you.
What is sold as working
MMPs (AppsFlyer, Adjust, Branch and friends) remain genuinely useful as postback infrastructure and single-source-of-truth plumbing. But some of what the category sells, modeled attribution filling ATT's gaps, is statistically educated guessing whose accuracy you cannot audit. Treat modeled numbers as directional. When a vendor's model says your channel improved the week you increased spend on it, remember the model knows your spend too.
And anything promising deterministic cross-app iOS attribution without consent is describing either fingerprinting (against Apple policy, existentially risky for your app) or fiction.
What to actually do
- Instrument your own funnel end to end, with a user ID from first web touch to in-app purchase. The Firebase-GA4 stack does this at zero license cost.
- Build a real SKAdNetwork conversion value schema around your activation event, not revenue you cannot fit in the bits.
- Judge channels on blended metrics (cost per incremental signup, payback by cohort) instead of platform-attributed ROAS.
- Run one incrementality test per quarter on your biggest channel. Budget follows evidence, not attribution theater.
The uncomfortable summary: mobile attribution went from precise-but-creepy to honest-but-coarse. Teams that redesign measurement around aggregates make better spend decisions than teams paying for the illusion of the old precision. If your app's measurement still assumes 2020, that redesign is a scoped project with a clear deliverable, and a good first step is an audit of what your current stack actually knows versus what its dashboards imply.