App Store Custom Product Pages for subscription apps: how to test 35 variants without touching your default listing
Custom Product Pages let you create up to 35 alternate App Store listings—each with its own screenshots, preview video, and promotional text—and route specific traffic sources directly to them. Here is how subscription-focused iOS developers can use CPPs to improve conversion without risking their main listing or App Store ranking.
Apple introduced Custom Product Pages (CPPs) in late 2021, and the feature has been quietly underused ever since. Most indie developers know CPPs exist—but many assume they are only useful at scale, or only relevant if you are running paid Apple Search Ads campaigns. Neither assumption holds up.
For subscription apps, CPPs are one of the lowest-risk, highest-signal conversion experiments available to you. You can maintain a stable default listing while routing different acquisition channels—Search Ads, web links, referral partners, editorial coverage—to pages tuned for each audience. When a CPP underperforms, you archive it. Your App Store ranking and your default listing stay untouched.
This guide explains how CPPs work mechanically, how they interact with subscription paywalls, what experiments are worth running, and how to read the analytics Apple provides.
What Custom Product Pages actually are
A Custom Product Page is an alternate version of your App Store listing. It lives at a unique URL (https://apps.apple.com/app/your-app-id?ppid=your-page-id) and can differ from your default page in exactly three ways:
- App preview videos — up to three per device type
- Screenshots — up to ten per device type
- Promotional text — the 170-character field that appears above your long description
Everything else—your app name, subtitle, full description, keywords, star rating, and reviews—is shared across all CPPs and your default listing. Critically, you cannot change price or subscription terms on a CPP; those are global settings tied to your in-app purchase configuration.
You can have up to 35 published CPPs at any time. Each one goes through App Review before going live, which typically takes the same 24–48 hours as a standard listing update. Creating or publishing a CPP does not trigger a full binary review—Apple only reviews the new creative assets.
Critical constraint: Custom Product Pages are only surfaced when someone arrives via your CPP URL. They never appear in organic App Store search results—organic discovery always shows the default listing. CPPs are a traffic-routing tool, not an ASO ranking tool.
Why subscription apps benefit disproportionately
If you are selling a subscription, your App Store listing and your in-app paywall are two distinct conversion layers. Most optimization effort goes into the paywall—and rightly so, because that is where the purchase decision happens. But the listing page is the step before the install, and a mismatch between the listing's message and the audience arriving from a specific channel is a common source of silent drop-off that never shows up in paywall analytics.
Consider the difference between a user arriving from an Apple Search Ads campaign targeting a generic category keyword versus a user clicking through from a niche editorial review. The first user may be comparison-shopping; they want to see differentiated features fast. The second user is pre-warmed by the article—they want social proof and a clean confirmation that the app matches the reviewer's description. The same default screenshot set serves neither audience optimally.
RevenueCat's cohort data has consistently shown that install-to-trial conversion rates vary meaningfully by acquisition source, even holding the in-app paywall constant. Some of that variance lives on the listing page. CPPs give you a mechanism to test that hypothesis without touching your main listing or shipping an app update.
Mapping acquisition channels to CPP variants
Before creating pages at random, map the channels that send you meaningful install volume. A typical indie subscription app in 2026 might receive installs from:
- Organic App Store search — gets the default listing, no CPP applies
- Apple Search Ads (Brand, Competitor, and Generic keyword clusters)
- Social media bio links (Instagram, TikTok, X)
- Your own web landing page
- Press and editorial coverage
- Referral and affiliate partnerships
For each channel where you control the destination URL, you can route to a CPP. The guiding principle: match the creative to the intent signal that brought the user there.
| Acquisition source | Typical user intent | CPP angle to test |
|---|---|---|
| Search Ads — Generic keywords | Problem-aware, comparing solutions | Feature differentiation, clear value proposition per screen |
| Search Ads — Brand keywords | Already knows you, re-evaluating | Social proof, rating callouts, user testimonials in screenshot captions |
| Search Ads — Competitor keywords | Using a rival app, potentially dissatisfied | Comparison framing, migration ease, switcher benefits |
| Social media (organic or paid) | Impulse-driven, visual first | Lifestyle screenshots, short emotional payoff message in promo text |
| Web landing page | Research mode, high intent | Reinforce the exact same headline from the web page |
| Press or editorial coverage | Curious, moderate intent | Lead with the specific feature the article highlighted |
| Affiliate or referral partner | Pre-warmed by trusted recommendation | Social proof, ratings, reinforce partner's framing |
A common mistake is creating too many CPPs at once. Start with two or three channels that already have meaningful volume. App Store Connect's CPP analytics only show installs and conversion rates at the page level—there is no built-in cohort view—so you will need adequate traffic per page to detect a real signal.
Creating and submitting a CPP: the mechanics
CPPs are managed entirely inside App Store Connect under App Store → [Your App] → Custom Product Pages. The workflow is straightforward:
- Click + to create a new page. Give it an internal name; this label is never shown to users.
- Upload screenshots or preview videos for the device sizes you want to customize. Any device size you leave blank inherits assets from your default listing.
- Optionally edit the Promotional Text field to match your campaign messaging.
- Submit for review. Once approved, the unique URL appears in the page details view.
The URL format is https://apps.apple.com/app/[app-name]/id[app-id]?ppid=[page-uuid]. You place this URL wherever you previously linked to your default App Store listing—Search Ads final URLs, web download buttons, social bios, QR codes.
Localizing CPPs: Each Custom Product Page supports per-storefront localization, using the same model as your default listing. If you are running a campaign targeting Japan, you can upload Japanese screenshots to the Japan storefront of that CPP without affecting any other market. This stacks well with a broader screenshot localization strategy. Localized CPP assets require separate App Review approval per storefront.
One practical note: if your app supports both iPhone and iPad, App Review expects that all required device sizes have assets. If you are running a mobile-only campaign, you can leave iPad slots blank and inherit from the default listing, but confirm this on your first submission to avoid unexpected review delays.
Reading CPP analytics and closing the loop on subscriptions
App Store Connect's App Analytics section surfaces CPP performance under Sources → Custom Product Pages. Available metrics include:
- Impressions (page views)
- Conversion rate (page views → installs)
- First-time downloads and redownloads
What is notably absent: trial starts, subscription conversions, and revenue segmented by CPP. To close that loop, you need to pass a campaign parameter through your install tracking. Most analytics tools—RevenueCat's attribution layer, Mixpanel, Amplitude—can accept an install-source parameter and join it against downstream subscription events. Tag each CPP with a consistent campaign identifier in your advertising platform so you can match the CPP install cohort to subscription metrics outside of App Store Connect.
The metric to anchor on first is install conversion rate against your baseline (the default listing's rate for the same channel). Give a CPP at least two weeks and a few hundred installs before treating the delta as meaningful. For subscription-specific signal, look at the trial-to-paid conversion rate in your analytics tool, segmented by CPP source. A CPP that lifts install conversion but attracts lower-intent users can actually worsen your revenue-per-install—the goal is the product of install conversion and downstream monetization, not install rate alone.
How CPPs fit into a layered subscription funnel
Custom Product Pages sit at the top of the conversion funnel, between acquisition and install. Their impact compounds when they are coordinated with the layers beneath them:
- Traffic source → CPP: Match creative to acquisition intent, as described above.
- Install → Onboarding: The first-run experience should reinforce the message from the CPP the user arrived through. If the CPP highlighted a specific feature, surface that feature early in onboarding rather than showing a generic welcome screen.
- Onboarding → Paywall: A consistent narrative from listing to onboarding to paywall is where the highest-intent users convert. See our overview of iOS paywall design patterns for evidence-backed approaches to that layer.
The risk of treating these layers in isolation is message discontinuity—the user's expectations shift at each step, reducing trust and increasing drop-off at every transition. CPPs make the first step of this funnel configurable without an app update. That is the core of their value for subscription developers.
For teams already using the App Store Connect API to manage pricing—see the price-update workflow guide—note that the ASC API exposes CPP read endpoints for listing published pages and retrieving metadata, but creative asset uploads still require the App Store Connect web UI as of mid-2026.
Common mistakes to avoid
Testing too many variables at once. If you change screenshots, add a preview video, and rewrite the promotional text simultaneously, you cannot attribute a conversion rate change to any single element. Test one variable per CPP variant where possible.
Deciding on insufficient volume. ASO consultancies including Phiture recommend waiting for at least several hundred installs per variant before calling a winner or loser. With 50 installs, confidence intervals are too wide to trust.
Forgetting to localize CPP assets for targeted markets. A CPP with English screenshots delivered into a Korean-language storefront wastes the traffic. If you are routing a region-specific campaign to a CPP, localize the assets for that storefront.
Losing track of destination URLs. When campaigns are updated, renewed, or handed to a new team member, CPP ppid parameters sometimes drop. A CPP with no traffic teaches you nothing and creates false confidence that the test is running.
Sources and further reading
- Apple Developer — Overview of Custom Product Pages (App Store Connect Help)
- Apple — Custom Product Pages (App Store developer resources)
- Phiture — Mobile Growth Stack: App Store Optimization resources
- RevenueCat Blog — Growth and conversion for subscription apps
- AppFollow Blog — App Store analytics and conversion strategy
Share this post
Ready to put this into practice?
AppsOps is the first App Store ops dashboard — PPP-fair pricing for 175 App Store territories, AI metadata localization in 39 languages, AI screenshot localization for 14 Apple device classes, and one-click App Store Connect API push — all from one dashboard, all for $19/month.
Try AppsOps free — no card →