Reading paid signal after ATT: SKAdNetwork for founders
a plain english guide to why iOS attribution went dark, what SKAdNetwork actually reports, and how founders read paid performance anyway.
last updated 11 October 2026
since Apple’s ATT, you cannot see which iOS user came from which ad, and no dashboard honestly claims otherwise. SKAdNetwork, and its successor AdAttributionKit, report anonymous, delayed, aggregate install counts with one small conversion value attached. the founders who read paid signal well stopped fighting that and moved the real dashboard to two things the platforms cannot blur: blended CAC and cohort retention.
Why iOS attribution went dark
ATT made user-level ad tracking on iOS opt-in, and most people said no. before 2021, an install carried a device identifier that let ad platforms connect the ad tap to the user and everything that user did afterwards, which is what made those eerily precise dashboards possible. app tracking transparency put a permission prompt in front of that identifier, opt-in rates landed low, and the user-level thread snapped for the majority of iOS traffic. the platforms responded with modeled conversions, which are estimates dressed as measurements: useful for their delivery algorithms, dangerous as your source of truth. android still allows more, but it has been moving the same direction, so building your measurement on user-level tracking is building on a shrinking island.
What SKAdNetwork and AdAttributionKit actually report
they tell you that some installs came from a campaign, later, in aggregate, with one small number attached. no user identity, no device id, no clean join to your revenue data. the postback arrives delayed by design so it cannot be matched to an individual, gets suppressed entirely below privacy thresholds when a campaign is too small, and carries a single coarse conversion value you define in advance. AdAttributionKit modernizes the plumbing, re-engagement support and a somewhat saner developer experience, but the philosophy is unchanged: aggregate and anonymous, not user-level. practically, small campaigns produce noisy or missing data, and day-one signal is all you get. if your product converts on day seven, SKAd will not tell that story.
Thinking about conversion values
you get one small number per install, so spend it on the earliest event that predicts payment. the conversion value is a handful of bits you assign meaning to before the campaign runs, and the temptation is to encode everything: trial, source screen, onboarding depth, plan tier. resist it. sliced too thin, every bucket falls below the privacy threshold and reports nothing. the founders who get value from SKAd encode one early action that correlates with becoming a paying user, finishing onboarding, completing a first real session, starting a trial, and let it split campaigns into “producing likely payers” versus “producing dead installs”. that is genuinely enough to steer budget, and it is all the resolution the system will honestly give you.
The real dashboard: blended CAC and cohorts
blended CAC and cohort retention became the real dashboard because they do not depend on attribution at all. total acquisition spend divided by total new users needs no device identifier, and neither does watching whether this week’s cohort retains and converts like last week’s. the read is simple: change one big thing at a time, watch blended CAC and cohort quality respond over a week or two, and let direction over time replace the per-user certainty that no longer exists. this is how i run reporting across accounts, the ZuAI $0.02 CAC was always a blended number across the whole channel mix, never one platform’s self-reported figure, and the daily version of that readout is automated end to end in my ad spend reporting workflow. two practical notes. platform-reported iOS numbers are for comparing campaigns inside that platform, never for judging the channel. and a web-to-app funnel keeps attribution readable in a way app-store funnels cannot, since the web step happens before Apple’s curtain drops, which is one reason those funnels keep gaining ground for consumer AI apps.
What this means at your budget
at small iOS budgets, accept that campaign-level truth is gone and design around it. keep campaigns few and consolidated so postbacks clear the privacy thresholds, encode one meaningful conversion value, judge weeks not days, and treat blended CAC plus cohort retention as the verdict. the measurement got blurrier and slower. it did not stop working, and the accounts that struggle post-ATT are mostly the ones still trying to run a 2019 dashboard on 2026 data.
measurement is one leg of the paid ads playbook. if you want help setting up a post-ATT readout you can trust, the breakdown call is free. Let’s talk Growth.
this page is part of the Paid ads playbook.
More in this playbook
What a normal CPI and CAC look like in 2026
why CPI benchmarks mislead, how to compute the CAC your unit economics can actually afford, and what a blended number really means.
Paid adsMeta, TikTok ads or Google: where to start
which ad platform a consumer AI app should run first, what each one is actually good at, and why picking one beats splitting budget across three.
Paid adsThe creative testing cadence that beats fatigue
why 150+ creatives a month was the minimum at $300k of monthly spend, what a real test actually is, and when fewer assets can genuinely work.
Paid adsExiting the learning phase without burning budget
what the learning phase actually needs, why constant edits reset it, the budget math per ad set, and when consolidating beats restructuring.
Paid adsBroad vs interest targeting in 2026
why broad targeting plus strong creative beats interest stacking on 2026 ad platforms, and the few cases where narrow still earns its keep.
Paid adsWhen to turn paid on, and when to turn it off
the on switch and the off switch for paid ads: when spend scales a proven message, and when it has quietly turned back into paying to learn.