Your UA dashboard reports installs. Your board funds D30 retained revenue. Most teams never close the gap between them.
The install number is the easiest thing to measure and the least connected to whether the business works. A campaign can post a $2 CPI, a clean install graph, and a cohort that's gone by day 7. The dashboard looks healthy the entire time the money is leaking.
The gap lives in the postback layer, and it's almost always one of three things.
One. The MMP passes the purchase event but not the renewal. Most AppsFlyer and Adjust setups fire purchase on the first IAP and stop there. UAC and Meta App campaigns then bid on first-purchase ROAS and never see the compounding subscription revenue. Wire the renewal event back and the algorithm starts optimizing for the cohort that actually pays twice.
Two. SKAN conversion value is still on default bucketing. At default 6-bit mapping you're encoding install volume. At a 24-bit schema tied to D7 revenue, you're encoding payers. Same SKAN postbacks, completely different signal: one tells Apple "we got installs," the other tells it "we got subscribers." The bidder only learns from the second.
Three. The success metric in the room is CPI. As long as the weekly review opens with cost-per-install, the team optimizes the number on the screen. Put D7 ROAS and payback day on that screen and the creative and bid decisions change within a cycle.
None of this is new infrastructure. The postback events already exist in your MMP. The conversion value schema is a config screen. The board metric is a choice about which column you sort by.
I've seen the same three gaps show up across mobile UA accounts often enough that I check them before anything else. Installs are what the platform hands you for free. Retained revenue is the thing you have to instrument on purpose.
Ruslan co-founded Tegra in 2017. Runs the Google Ads practice - feed, PMax, search, attribution. Writes weekly about the parts of paid search operators are afraid to touch.