iOS ROAS disagreement between Google Ads, the MMP and finance
CalmSpace is a meditation subscription app; iOS produces 55% of installs and 62% of revenue. The iOS app campaign bids Target ROAS 150% using in-app purchase value. Google Ads reports D30 ROAS of 190% for iOS, but the MMP's SKAdNetwork-based cohort report shows 120%, and finance's payback model says iOS subscribers take 11 months to repay their acquisition cost against an 8-month threshold. The growth lead wants to cut iOS spend 40% and move it to Android, where Google Ads reports 135% ROAS. Attribution settings are default; the MMP passes postbacks with a coarse conversion value. Nobody has run an incrementality test in the last year, and the last geo experiment predates a major pricing change.
1. Why do the three ROAS numbers disagree, and which one should drive the bidding decision?
Read the worked answer
Three numbers are being compared, and none of them measures the same thing:
- Google Ads 190% includes modeled conversions - conversions estimated for users who opted out of tracking or whose postbacks are incomplete - and applies Google Ads' own attribution window plus conversion-lag modelling. It is a bidding signal built to be directionally correct in the auction, not a P&L number.
- MMP 120% rests on SKAdNetwork postbacks: coarse conversion values, delayed delivery, privacy thresholds that suppress low-volume values, and Apple's own attribution logic. SKAN systematically undercounts small cohorts, so a subscription app with moderate volume will look worse there than it is.
- Finance's 11-month payback is the only cash-based number, but it may count only the first term and ignore renewals - the main value driver for a meditation subscription.
Use each for its purpose: Google Ads numbers for in-auction comparisons, MMP cohort data for cross-channel truth, finance's LTV and payback for the target. Critically, a tROAS should be derived from the payback threshold, not from any of these reported figures. If payback must land in 8 months and D30 ROAS is 120%, no tROAS setting fixes the unit economics - the real question is whether D90 and D180 cohorts close the gap. Pull the longer cohort curve before cutting anything.
2. What measurement plan would you put in place before making any budget decision?
Read the worked answer
Reconcile definitions first, then measure incrementality:
- Align definitions across systems: same attribution window, same revenue definition (gross versus net of store fees, one-time versus renewal), same currency, same refund treatment. Most 190-versus-120 gaps shrink once these are matched.
- Build a cohort curve from MMP data at D7, D30, D90 and D180, split by platform. Blended curves hide iOS-specific behaviour, which is exactly what is being argued about.
- Run an incrementality test. Either a matched-metro geo holdout on iOS or a platform-run conversion lift, 4–6 weeks, with a pre-registered success metric: incremental trials or paid starts, not modeled conversions. Pre-registering prevents post-hoc rationalisation.
- Fix the SKAN value schema. The coarse conversion value should map to revenue bands you actually care about (trial start versus annual plan versus monthly). If the value is coarse in the wrong dimension, value-based bidding is optimising noise.
- Set the tROAS target from the payback threshold applied to the longest horizon you can measure, and consider a blended account-level target if splitting iOS and Android makes each campaign too volatile to learn.
This plan costs 4–6 weeks. That is far cheaper than a 40% cut that has to be reversed.
3. Should the team cut iOS spend by 40%? Recommend an action.
Read the worked answer
No - not on this evidence.
- The 190-versus-120 gap is most likely a measurement artifact, not a performance signal. Cutting 40% would be a response to a reporting difference, not to economics.
- The Android comparison is invalid. Android has full device-level attribution; iOS runs on SKAN plus modelling. Comparing 135% to 190% across two different measurement systems and reallocating budget on that basis is comparing apples to oranges.
- A 40% cut also discards campaign learning and takes weeks to recover, right before the measurement fix that would settle the question.
Recommended sequence: hold iOS budget flat for four weeks while running the geo holdout and fixing the SKAN value mapping. Read the D90/D180 cohort curve against the 8-month payback threshold. If iOS genuinely fails payback at the longest measurable horizon, reduce in 15–20% steps with two-week holds, and only reallocate to Android after measuring Android's marginal CPA and ROAS on the incremental spend - not its average. Communicate to the growth lead that 'hold and measure' is a decision with a date attached, not a delay.