Growth marketer operator · San Jose, CA | ZuAI: 10K → 2M users at $0.02 CAC | $300k/mo ad spend managed
Ar.Bhavesh Pro
Paid ads

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.

next

More in this playbook

Want this run on your app?

the playbook is free and yours. if you would rather it was executed than read, tell me what you are working on.

answers go to a private google sheet and to my inbox, used only to reply and follow up. the newsletter is opt in and separate.

Want this run on your app?

the breakdown call is free. bring one real growth problem, leave with the fix.

Let's talk Growth