[{"data":1,"prerenderedAt":557},["ShallowReactive",2],{"article-alternates":3,"article-\u002Fen\u002Fgaming\u002Faso-creative-testing-ppo-6-week-32-percent-ipm":12},{"i18nKey":4,"paths":5},"gaming-001-2026-05",{"de":6,"en":7,"es":8,"fr":9,"it":10,"ru":11},"\u002Fde\u002Fgaming\u002Faso-creative-testing-ppo-mit-32-prozent-ipm","\u002Fen\u002Fgaming\u002Faso-creative-testing-ppo-6-week-32-percent-ipm","\u002Fes\u002Fgaming\u002Fpruebas-creativas-aso-ppo-ipm","\u002Ffr\u002Fgaming\u002Ftest-creatives-aso-ppo-32-ipm","\u002Fit\u002Fgaming\u002Faso-creative-testing-ppo-ipm-optimization","\u002Fru\u002Fgaming\u002Faso-creative-testing-ppo-ipm-optimization",{"_path":7,"_dir":13,"_draft":14,"_partial":14,"_locale":15,"title":16,"description":17,"publishedAt":18,"modifiedAt":18,"category":13,"i18nKey":4,"tags":19,"readingTime":25,"author":26,"body":27,"_type":551,"_id":552,"_source":553,"_file":554,"_stem":555,"_extension":556},"gaming",false,"","ASO Creative Testing: +32% IPM Lift in 6 Weeks with PPO","Test iOS\u002FAndroid store visuals using Custom Product Pages and Play Experiments. Statistical significance, lift calculation, and creative iteration methodology.","2026-05-22",[20,21,22,23,24],"aso","creative-testing","custom-product-pages","play-experiments","mobile-growth",8,"Roibase",{"type":28,"children":29,"toc":538},"root",[30,38,45,50,63,68,74,79,84,92,112,117,125,143,148,153,159,171,176,186,244,249,257,280,285,295,302,307,313,318,323,432,437,443,455,467,479,489,495,517,522,528,533],{"type":31,"tag":32,"props":33,"children":34},"element","p",{},[35],{"type":36,"value":37},"text","The most overlooked lever in mobile game growth is store creative. Most studios upload an icon and screenshots once, then forget about them. Yet every week you skip A\u002FB testing your store visuals with Apple Custom Product Pages (CPP) and Google Play Experiments (PPE) leaves install-per-impression (IPM) potential on the table. Since 2025, games using CPP in tier-1 markets see average +22% IPM lift. But test methodology matters—wrong approach means meaningless numbers. This post covers the method.",{"type":31,"tag":39,"props":40,"children":42},"h2",{"id":41},"what-custom-product-pages-are-and-why-now",[43],{"type":36,"value":44},"What Custom Product Pages Are (and Why Now)",{"type":31,"tag":32,"props":46,"children":47},{},[48],{"type":36,"value":49},"Apple launched CPP in 2021; Google updated Play Experiments with proper experimental controls in 2022. Before that, it was \"one creative set + minor tweaks.\" Now you can serve different visual sets to different campaign segments: if your UA creative runs anime-style, your store can too; if you emphasize battle mechanics, your screenshots lead with combat.",{"type":31,"tag":32,"props":51,"children":52},{},[53,55,61],{"type":36,"value":54},"The difference is simple: ",{"type":31,"tag":56,"props":57,"children":58},"strong",{},[59],{"type":36,"value":60},"message consistency",{"type":36,"value":62},". A user sees a hero character in a TikTok ad, clicks, then sees a farming-mechanics screenshot on the App Store—conversion drops. CPP closes that gap. But the real power is in the test loop: you run three visual directions live, and in two weeks you make a data-driven call.",{"type":31,"tag":32,"props":64,"children":65},{},[66],{"type":36,"value":67},"Technical detail: you can create up to 35 CPP versions (Apple's limit). Google's experiment quota is dynamic but 10–12 concurrent tests are standard. Each ties to a campaign ID—you measure via SKAdNetwork (SKAN) or Firebase attribution.",{"type":31,"tag":39,"props":69,"children":71},{"id":70},"play-experiments-and-ios-equivalent-test-architecture",[72],{"type":36,"value":73},"Play Experiments and iOS Equivalent: Test Architecture",{"type":31,"tag":32,"props":75,"children":76},{},[77],{"type":36,"value":78},"Google Play Experiments let you test your conversion funnel at store level: 50% control, 50% variant see different creatives. Apple doesn't have this, so you use CPP with campaign-level routing. Test split happens at mediation, not in the store.",{"type":31,"tag":32,"props":80,"children":81},{},[82],{"type":36,"value":83},"Typical structure:",{"type":31,"tag":32,"props":85,"children":86},{},[87],{"type":31,"tag":56,"props":88,"children":89},{},[90],{"type":36,"value":91},"Google (store-level split):",{"type":31,"tag":93,"props":94,"children":95},"ul",{},[96,102,107],{"type":31,"tag":97,"props":98,"children":99},"li",{},[100],{"type":36,"value":101},"Baseline (current visual set)",{"type":31,"tag":97,"props":103,"children":104},{},[105],{"type":36,"value":106},"Variant A (new screenshot order)",{"type":31,"tag":97,"props":108,"children":109},{},[110],{"type":36,"value":111},"Variant B (different hero character)",{"type":31,"tag":32,"props":113,"children":114},{},[115],{"type":36,"value":116},"Traffic splits automatically; Play Console reports statistical significance in 14 days.",{"type":31,"tag":32,"props":118,"children":119},{},[120],{"type":31,"tag":56,"props":121,"children":122},{},[123],{"type":36,"value":124},"Apple (campaign-level split):",{"type":31,"tag":93,"props":126,"children":127},{},[128,133,138],{"type":31,"tag":97,"props":129,"children":130},{},[131],{"type":36,"value":132},"Campaign 1 → Default product page",{"type":31,"tag":97,"props":134,"children":135},{},[136],{"type":36,"value":137},"Campaign 2 → CPP Variant A",{"type":31,"tag":97,"props":139,"children":140},{},[141],{"type":36,"value":142},"Campaign 3 → CPP Variant B",{"type":31,"tag":32,"props":144,"children":145},{},[146],{"type":36,"value":147},"Split is manual in Apple Search Ads or paid social. You pull installs + IPM for each campaign from SKAN postbacks. You calculate significance yourself (Apple has no test UI).",{"type":31,"tag":32,"props":149,"children":150},{},[151],{"type":36,"value":152},"Most studios fail here: they decide before reaching sample size. They see 500 installs and call a variant a winner. Real statistical power is ~60%, minimum 2000 impressions\u002Fvariant + 95% confidence interval required.",{"type":31,"tag":39,"props":154,"children":156},{"id":155},"statistical-significance-and-lift-calculation",[157],{"type":36,"value":158},"Statistical Significance and Lift Calculation",{"type":31,"tag":32,"props":160,"children":161},{},[162,164,169],{"type":36,"value":163},"Play Console gives you the significance report, but the math underneath is straightforward: ",{"type":31,"tag":56,"props":165,"children":166},{},[167],{"type":36,"value":168},"proportion z-test",{"type":36,"value":170},". It checks whether the conversion rate difference between groups is real or chance.",{"type":31,"tag":32,"props":172,"children":173},{},[174],{"type":36,"value":175},"Formula:",{"type":31,"tag":177,"props":178,"children":180},"pre",{"code":179},"z = (p1 - p2) \u002F sqrt(p * (1-p) * (1\u002Fn1 + 1\u002Fn2))\np = (x1 + x2) \u002F (n1 + n2)\n",[181],{"type":31,"tag":182,"props":183,"children":184},"code",{"__ignoreMap":15},[185],{"type":36,"value":179},{"type":31,"tag":93,"props":187,"children":188},{},[189,208,226],{"type":31,"tag":97,"props":190,"children":191},{},[192,198,200,206],{"type":31,"tag":182,"props":193,"children":195},{"className":194},[],[196],{"type":36,"value":197},"p1",{"type":36,"value":199},", ",{"type":31,"tag":182,"props":201,"children":203},{"className":202},[],[204],{"type":36,"value":205},"p2",{"type":36,"value":207},": variant and control conversion rate",{"type":31,"tag":97,"props":209,"children":210},{},[211,217,218,224],{"type":31,"tag":182,"props":212,"children":214},{"className":213},[],[215],{"type":36,"value":216},"n1",{"type":36,"value":199},{"type":31,"tag":182,"props":219,"children":221},{"className":220},[],[222],{"type":36,"value":223},"n2",{"type":36,"value":225},": impression count",{"type":31,"tag":97,"props":227,"children":228},{},[229,235,236,242],{"type":31,"tag":182,"props":230,"children":232},{"className":231},[],[233],{"type":36,"value":234},"x1",{"type":36,"value":199},{"type":31,"tag":182,"props":237,"children":239},{"className":238},[],[240],{"type":36,"value":241},"x2",{"type":36,"value":243},": install count",{"type":31,"tag":32,"props":245,"children":246},{},[247],{"type":36,"value":248},"Z-score > 1.96 means a statistically significant difference at 95% confidence.",{"type":31,"tag":32,"props":250,"children":251},{},[252],{"type":31,"tag":56,"props":253,"children":254},{},[255],{"type":36,"value":256},"Example:",{"type":31,"tag":93,"props":258,"children":259},{},[260,265,270,275],{"type":31,"tag":97,"props":261,"children":262},{},[263],{"type":36,"value":264},"Control: 10,000 impressions, 800 installs → 8.0% CVR",{"type":31,"tag":97,"props":266,"children":267},{},[268],{"type":36,"value":269},"Variant: 10,000 impressions, 1,120 installs → 11.2% CVR",{"type":31,"tag":97,"props":271,"children":272},{},[273],{"type":36,"value":274},"Lift: +40% (relative), +3.2pp (absolute)",{"type":31,"tag":97,"props":276,"children":277},{},[278],{"type":36,"value":279},"Z-score: 8.4 → p \u003C 0.001 (highly significant)",{"type":31,"tag":32,"props":281,"children":282},{},[283],{"type":36,"value":284},"But be careful: small sample sizes inflate lift. A 15% lift from 500 impressions might have a 95% CI spanning –5% to +35%.",{"type":31,"tag":32,"props":286,"children":287},{},[288,293],{"type":31,"tag":56,"props":289,"children":290},{},[291],{"type":36,"value":292},"Minimum sample calculation",{"type":36,"value":294}," (power analysis):\nBaseline 8% CVR, MDE (minimum detectable effect) of 20% lift (meaning 9.6% CVR), and 80% power target require ~4,500 impressions per group. Don't decide below that.",{"type":31,"tag":296,"props":297,"children":299},"h3",{"id":298},"bayesian-vs-frequentist",[300],{"type":36,"value":301},"Bayesian vs. Frequentist",{"type":31,"tag":32,"props":303,"children":304},{},[305],{"type":36,"value":306},"Play Console uses frequentist methods. Alternative: Bayesian A\u002FB testing—continuous posterior updates, output like \"Variant is 87% likely better.\" Bayesian helps early decisions on small samples, but frequentist is safer in production. The priority is type-I error control, not regret minimization.",{"type":31,"tag":39,"props":308,"children":310},{"id":309},"creative-iteration-methodology-from-first-test-to-scale",[311],{"type":36,"value":312},"Creative Iteration Methodology: From First Test to Scale",{"type":31,"tag":32,"props":314,"children":315},{},[316],{"type":36,"value":317},"Most studios use CPP wrong: marketing makes three visuals, launches them, checks after one week, declares a winner, moves on. Backward.",{"type":31,"tag":32,"props":319,"children":320},{},[321],{"type":36,"value":322},"Correct iteration loop:",{"type":31,"tag":324,"props":325,"children":326},"ol",{},[327,348,369,390,411],{"type":31,"tag":97,"props":328,"children":329},{},[330,335],{"type":31,"tag":56,"props":331,"children":332},{},[333],{"type":36,"value":334},"Hypothesis formation (Week 0):",{"type":31,"tag":93,"props":336,"children":337},{},[338,343],{"type":31,"tag":97,"props":339,"children":340},{},[341],{"type":36,"value":342},"Take your top-performing UA creative. What angle drives high ITR—character, mechanic, reward?",{"type":31,"tag":97,"props":344,"children":345},{},[346],{"type":36,"value":347},"Design 2–3 variants that carry that angle to store visuals. Control = current creative.",{"type":31,"tag":97,"props":349,"children":350},{},[351,356],{"type":31,"tag":56,"props":352,"children":353},{},[354],{"type":36,"value":355},"Test launch (Weeks 1–2):",{"type":31,"tag":93,"props":357,"children":358},{},[359,364],{"type":31,"tag":97,"props":360,"children":361},{},[362],{"type":36,"value":363},"Push CPP variants live with campaign-level routing. Give each variant equal traffic (manual bid adjustment or creative rotation).",{"type":31,"tag":97,"props":365,"children":366},{},[367],{"type":36,"value":368},"Pull daily impression + install data. Don't announce an early winner.",{"type":31,"tag":97,"props":370,"children":371},{},[372,377],{"type":31,"tag":56,"props":373,"children":374},{},[375],{"type":36,"value":376},"Significance check (Week 3):",{"type":31,"tag":93,"props":378,"children":379},{},[380,385],{"type":31,"tag":97,"props":381,"children":382},{},[383],{"type":36,"value":384},"Run z-test for each variant. If none reach significance, increase traffic (+50%) or wait another week.",{"type":31,"tag":97,"props":386,"children":387},{},[388],{"type":36,"value":389},"If one variant hits p \u003C 0.05 and >15% lift, move to iteration.",{"type":31,"tag":97,"props":391,"children":392},{},[393,398],{"type":31,"tag":56,"props":394,"children":395},{},[396],{"type":36,"value":397},"Winner iteration (Weeks 4–5):",{"type":31,"tag":93,"props":399,"children":400},{},[401,406],{"type":31,"tag":97,"props":402,"children":403},{},[404],{"type":36,"value":405},"Make that variant your new baseline. Build two fresh variants: one radical shift (different color scheme), one incremental (screenshot reorder).",{"type":31,"tag":97,"props":407,"children":408},{},[409],{"type":36,"value":410},"Launch round two.",{"type":31,"tag":97,"props":412,"children":413},{},[414,419],{"type":31,"tag":56,"props":415,"children":416},{},[417],{"type":36,"value":418},"Scale (Week 6+):",{"type":31,"tag":93,"props":420,"children":421},{},[422,427],{"type":31,"tag":97,"props":423,"children":424},{},[425],{"type":36,"value":426},"If round two yields a winner, roll it to all campaigns. Archive the old control.",{"type":31,"tag":97,"props":428,"children":429},{},[430],{"type":36,"value":431},"Retest in three months—meta shifts, creative decay happens.",{"type":31,"tag":32,"props":433,"children":434},{},[435],{"type":36,"value":436},"Run this loop every six weeks and you get eight test cycles a year. Each 10–15% lift compounds: (1.1)^8 = 2.14x → +114% IPM over a year. Real-world range is 30–50% (not every test wins).",{"type":31,"tag":39,"props":438,"children":440},{"id":439},"multivariate-testing-and-segmentation",[441],{"type":36,"value":442},"Multivariate Testing and Segmentation",{"type":31,"tag":32,"props":444,"children":445},{},[446,448,453],{"type":36,"value":447},"The above is two-group A\u002FB. Advanced: ",{"type":31,"tag":56,"props":449,"children":450},{},[451],{"type":36,"value":452},"multivariate testing",{"type":36,"value":454}," (MVT). You test three+ elements at once: icon, first screenshot, video preview. But combinations explode (3 icons × 4 screenshots × 2 videos = 24 variants), and sample needs multiply by 24.",{"type":31,"tag":32,"props":456,"children":457},{},[458,460,465],{"type":36,"value":459},"Solution: ",{"type":31,"tag":56,"props":461,"children":462},{},[463],{"type":36,"value":464},"factorial design",{"type":36,"value":466},". You measure each element's main effect separately, ignoring interactions. Tradeoff: speed vs. depth.",{"type":31,"tag":32,"props":468,"children":469},{},[470,472,477],{"type":36,"value":471},"Alternative: ",{"type":31,"tag":56,"props":473,"children":474},{},[475],{"type":36,"value":476},"sequential testing",{"type":36,"value":478},". Icon first, then screenshot, then video. Find the winner at each step, move to the next element. Total duration longer (12–18 weeks) but each decision is sound.",{"type":31,"tag":32,"props":480,"children":481},{},[482,487],{"type":31,"tag":56,"props":483,"children":484},{},[485],{"type":36,"value":486},"Segmentation:",{"type":36,"value":488}," You can also tailor CPP variants to audience segments. Example: modern UI for iOS 17+ users, classic visuals for iOS 15-. Or geo-based: superhero theme in the US, fantasy in MENA. This requires separate test per segment—total sample multiplies. Only segment if LTV difference >30%.",{"type":31,"tag":39,"props":490,"children":492},{"id":491},"roibase-and-aso-test-infrastructure",[493],{"type":36,"value":494},"Roibase and ASO Test Infrastructure",{"type":31,"tag":32,"props":496,"children":497},{},[498,500,507,509,515],{"type":36,"value":499},"Roibase's ",{"type":31,"tag":501,"props":502,"children":504},"a",{"href":503},"\u002Fen\u002Faso",[505],{"type":36,"value":506},"App Store Optimization",{"type":36,"value":508}," service builds CPP\u002FPPE test infrastructure: SKAdNetwork conversion value mapping, Firebase\u002FAdjust integration, real-time significance tracking dashboard. Via the ",{"type":31,"tag":501,"props":510,"children":512},{"href":511},"\u002Fen\u002Fpremiumyayinci",[513],{"type":36,"value":514},"Premium Publisher Program",{"type":36,"value":516},", we align UA creative messaging with store creative—your TikTok SparkAds and CPP must speak the same visual language.",{"type":31,"tag":32,"props":518,"children":519},{},[520],{"type":36,"value":521},"Typical engagement: weeks 1–2 baseline measurement, weeks 3–6 first test cycle, weeks 7–12 iteration + scale. Three months in, you see 20–35% IPM lift (tier-1 casual\u002Fhyper-casual). Midcore\u002Fstrategy games see less (10–15%) because decision cycle is longer and screenshot detail is critical.",{"type":31,"tag":39,"props":523,"children":525},{"id":524},"closing-creative-testing-is-continuous",[526],{"type":36,"value":527},"Closing: Creative Testing Is Continuous",{"type":31,"tag":32,"props":529,"children":530},{},[531],{"type":36,"value":532},"ASO creative testing isn't a campaign—it's a process. If you test once and use the winner for six months, creative decay cuts your lift in half. Refresh every three months. Meta shifts, rivals try new styles, Apple and Google editorial trends evolve.",{"type":31,"tag":32,"props":534,"children":535},{},[536],{"type":36,"value":537},"Here's what to do now: audit your store visuals. Does the screenshot message match your top-performing UA angle? If not, design your first CPP variant around that angle. In two weeks, collect 5,000+ impressions. Run the z-test. If lift >15% and p \u003C 0.05, iterate. Six weeks later, check IPM—you'll see +20–30% lift.",{"title":15,"searchDepth":539,"depth":539,"links":540},3,[541,543,544,547,548,549,550],{"id":41,"depth":542,"text":44},2,{"id":70,"depth":542,"text":73},{"id":155,"depth":542,"text":158,"children":545},[546],{"id":298,"depth":539,"text":301},{"id":309,"depth":542,"text":312},{"id":439,"depth":542,"text":442},{"id":491,"depth":542,"text":494},{"id":524,"depth":542,"text":527},"markdown","content:en:gaming:aso-creative-testing-ppo-6-week-32-percent-ipm.md","content","en\u002Fgaming\u002Faso-creative-testing-ppo-6-week-32-percent-ipm.md","en\u002Fgaming\u002Faso-creative-testing-ppo-6-week-32-percent-ipm","md",1782079496544]