← All posts
September 17, 2026

When Custom Product Pages Don’t Apply: How to Prove Your Apple Search Ads Are Serving the Intended Page

Apple Search AdsCustom Product PagesASA TrackingApp Store OptimizationIndie iOS MarketingAttribution

Custom Product Pages (CPPs) are one of the few Apple Search Ads levers that can change outcomes without touching bids. But CPP optimization fails quietly: users can end up on the “default” product page (or a different localized CPP) even when you think the CPP should apply. If that’s happening, your ROAS math will look inconsistent and your bids will get blamed.

Below is a practical audit you can run in under a day to prove whether your CPPs are actually serving where you expect.

What “CPP not applying” looks like in reporting

Before you touch settings, look for these patterns:

  • High taps, flat install conversion after you introduce/modify CPPs.
  • ROAS improves on some countries but not others (often a localization or storefront mapping issue).
  • Two ad groups that should land users on different pages behave almost identically (a strong sign both are falling back).
  • Install conversion is fine, but revenue is off (maybe users see the right CPP, but it routes to the wrong offer/version in a particular region).

Important: Apple’s attribution token resolves within ~24 hours, so you should evaluate CPP effects after the data settles—not in the first few hours after a change.

Step 1: Confirm the CPP targeting surface you think you’re using

In Apple Search Ads, CPP assignment is tied to the ad targeting configuration (campaign → ad group) you set in the Apple Ads console.

Do this check:

  1. Pick one campaign + one ad group that you expect to use CPP-A.
  2. In the Apple Ads UI, confirm that the CPP for that ad group is set to CPP-A (not “automatic,” not empty).
  3. Make sure you’re not unintentionally reusing the same CPP across multiple ad groups “just for now.” If everything points to the same CPP, you lose the experiment signal.

If you’re unsure whether Search Match is involved: on Search Results, Search Match keywords can run in their own ad group (depending on your setup). That means a user might match a query via Search Match but still land on whatever CPP is configured for that ad group—so verify the CPP at the ad group level, not at the keyword level.

Step 2: Verify CPP availability for the exact country/storefront

A CPP can exist, but still fail to serve if it’s not properly available for the storefront you’re advertising.

For each country/region where you run ASA:

  • Confirm the CPP is created for that country/storefront in the App Store Connect CPP setup.
  • Confirm the localized metadata exists (the app and the CPP elements must exist in that storefront).
  • Check for a recent release or change where one storefront may lag behind another.

If you advertise multiple countries, even one misconfigured CPP localization can make performance look “random” or uneven.

Step 3: Prove it with a controlled “tap test” (don’t guess)

The fastest way to stop arguing with intuition is to observe the page the user sees.

What you need

  • A real iOS device (preferably iOS Safari or the built-in browser path you normally use to view App Store pages).
  • One test Apple account (you can use the same Apple ID across tests; the key is consistency).
  • Patience: this is easiest if you can tap within a consistent attribution window.

How to run the test

  1. Choose one ad group and one CPP.
  2. Temporarily pause other ad groups that could reasonably serve for the same search query (or run the test at a time where your targeting is most likely to isolate that ad group).
  3. From an iPhone, search the query that reliably triggers your ad.
  4. Tap the ad and immediately check:
    • Are you landing on the CPP you intended?
    • Do you see the CPP-specific messaging/screenshots you configured?
    • Is the storefront correct (country flag / localized content)?

What to record

  • Date/time
  • Country/storefront
  • Ad group you believe served (keep your query + campaign notes)
  • The page you actually saw (CPP vs default, and which localization)

Do this for 2–3 query examples. If you only test one query, you might miss a match-type difference (Exact vs Broad vs Search Match) that changes which ad group wins.

Step 4: Watch for “signal mixing” caused by identical pages

Sometimes CPPs are applied correctly but you still don’t see lift because users are effectively landing on the same thing.

Run this quick sanity check:

  • Compare the CPPs you’re using. If they’re mostly identical (same layout, screenshots, and value props), your install conversion won’t change much.
  • If your CPP differs only in a subtle text line, that’s easy for the user to skim past—especially on a mobile network.
  • If you use multiple CPPs, ensure each one maps to a distinct intent (e.g., “new users” vs “power users,” “feature-led” vs “problem-led”).

This doesn’t solve CPP not applying, but it prevents false conclusions.

Step 5: Check that you’re attributing revenue to the right install stream

Even if the CPP is correct, poor attribution mapping can make it look wrong.

Here’s what to verify:

  • Your in-app purchase / subscription events are connected to installs coming from Apple Search Ads attribution.
  • Your revenue reporting pipeline (often RevenueCat + AdServices token mapping) resolves within the expected delay and is not mixing sources.
  • If you use multiple attribution paths, ensure you’re not accidentally comparing net revenue from one source to gross installs from another.

You don’t need per-keyword revenue from Apple (Apple doesn’t provide that). You do need a reliable install → purchase linkage so the “CPP effect” is measured.

Step 6: Use a quick isolating change to confirm causality

Once you identify a mismatch (CPP not serving, wrong storefront CPP, or fallback), don’t make ten changes at once.

Do a single-lever correction:

  • Fix the CPP assignment for one ad group.
  • Or fix the CPP localization/availability for one country.
  • Or pause conflicting ad groups so the ad serving decision is isolated.

Then wait for ~24h attribution resolution and review:

  • Tap → install conversion rate (conversion per tap)
  • CPT and CPA/CPI (auction/budget impact)
  • ROAS (revenue ÷ spend) after reporting settles

If the CPP is fixed, you should see the tap-to-install conversion shift first (sometimes revenue shifts later).

Common root causes (what to look for first)

In indie accounts, CPP issues usually come from a few patterns:

  • CPP exists in one country, but you’re running ads in another where it’s missing or not localized.
  • CPP is set at the ad group you thought you were targeting, but your query is actually matching via a different ad group (especially with broad/Search Match arrangements).
  • A recent app update or CPP edit caused one storefront to behave differently.
  • Multiple ad groups point to the same CPP, so the report can’t show any differentiation even if delivery is correct.

Closing takeaway

Custom Product Pages are powerful, but they’re also easy to misconfigure in ways Apple won’t loudly warn you about. The goal of this audit is simple: stop assuming the CPP is working—prove which page users see after tapping your ad, verify storefront availability, and only then adjust bids and budgets.

If you want a second set of eyes, AdsBuddy’s advisory workflow can read your ASA + revenue signals and return a short list of the highest-impact changes to approve—but you’ll still want to validate CPP serving as part of the diagnosis so you’re fixing the right problem.

Run Apple Ads with AdsBuddy

Start with 7 days free, connect Apple Ads and RevenueCat, then get a short prioritized list of changes to review and apply.

Start free trial
Get new posts in your inbox
Practical Apple Search Ads tactics for indie iOS devs. No spam, unsubscribe anytime.