IAA+IAP hybrid revenue checklist: which events feed which LTV model

Operator checklist mapping af_purchase / af_ad_revenue style events into separate LTV streams so hybrid titles do not double-count or drop ad revenue in bid models.
Hybrid IAA+IAP titles still double-count or drop ad revenue in bid models when one LTV export mixes streams without a join key. This checklist maps which events feed which model. It is not a network recommendation.
Event definitions
AppsFlyer in-app events overview (opened 20 September 2026) states that af_revenue is the parameter that accumulates revenue, and that negative revenue can record refunds or cancellations. Share ad revenue data with partners documents af_ad_revenue for sharing mediation ad revenue with UA partners (ROI360 Advanced noted on that page). AdMob rewarded ads define the publisher-side reward callback (OnUserEarnedRewardListener) separately from MMP purchase events — completing a rewarded video is not an IAP.
Checklist
| Check | Pass condition | Fail action |
|---|---|---|
| IAP stream | Only validated store purchases (and documented refunds) enter IAP LTV | Remove ad impressions from IAP LTV |
| IAA stream | Ad revenue uses mediation/MMP ad-revenue events (`af_ad_revenue` or equivalent), not `af_purchase` | Remap |
| Bid model inputs | Each network bid event maps to exactly one revenue class | Split mappings |
| SKAN / conversion value | Document whether CV buckets mix IAA+IAP or keep separate schemes | Write the scheme on the brief |
| Dedup | Same player-period cannot add IAP gross twice via web shop + store without a person key | See web-shop double-count lab |
| Zero handling | Missing IAA must appear as explicit zero, not omitted column | Fix export |
Facts versus limits
| Field | Evidence |
|---|---|
| `af_revenue` / negative refunds | AppsFlyer in-app events overview |
| `af_ad_revenue` partner share | AppsFlyer ad-revenue partner article |
| Rewarded completion ≠ IAP | AdMob rewarded ads docs |
| Observed hybrid ROAS | None here |


