CPT→CPA Decomposition: When Apple Search Ads ROAS Is Bad, Decide Whether to Touch Bids or Your Product Page
Running Apple Search Ads and seeing ROAS that’s “meh” is normal. What’s not normal is changing everything at once and later not knowing why. The fix is to stop treating ROAS as a single number and instead decompose it into two levers:
- Auction cost per tap (CPT) — how expensive your taps are.
- Landing conversion rate (CVR) — how efficiently those taps become installs.
Once you separate those, you can decide whether to touch bids/keywords or your product page + offer.
Below is a practical method you can run for each ad group (or keyword cluster) using only Apple Search Ads metrics.
The Funnel Model: ROAS Comes from CPT and CVR
For Apple Search Ads, the metrics line up like this:
- CPT = spend ÷ taps (cost per tap)
- CVR (install conversion rate) = installs ÷ taps
- CPA/CPI (in installs) = spend ÷ installs
And CPI is mathematically:
CPI ≈ CPT ÷ CVR
Revenue-side ROAS adds another layer (installs → payers → revenue), but the first-order question is always the same:
- Are you paying too much per tap? (auction problem)
- Or are you getting cheap taps but they don’t convert? (product page / relevance problem)
When you know which one is failing, you avoid the classic trap: lowering bids while your product page is the real bottleneck, or rewriting product page copy while your bids are too aggressive.
Step 1: Pull Metrics by Ad Group (Not the Whole Campaign)
Start with the smallest unit that’s still decision-relevant: ad group.
For each ad group, capture over the same time window:
- Impressions
- Taps
- TTR (taps ÷ impressions)
- CPT
- Installs
- Conversion rate (installs ÷ taps)
- Spend
If you only have “good” data for one side (for example, you have taps but almost no installs), widen the window slightly—just don’t average over a period where you made major changes.
Why ad group level matters
Bid changes and keyword mix are typically managed at the ad group level (one country/region per campaign; ad groups contain keywords and bids). If you roll everything up, you’ll bury the one bad keyword cluster inside the performance of another.
Step 2: Compute the Two Diagnoses (CPT vs CVR)
You’re looking for patterns. Here are the simplest buckets.
A) High CPT, Normal/Good CVR → Auction is expensive
Symptoms (typical):
- CPT is high relative to your other ad groups
- TTR is not catastrophically low
- Installs per tap (CVR) is okay
- CPI is worse mainly because taps cost too much
What to do first
- Lower max CPT bids for the keywords causing the spend
- Consider tightening match types:
- For Search Results keywords where you’re currently broad/Discovery, shift budget into exact for proven queries
- If the ad group has both “sometimes-relevant” and “high-intent” terms, split them (so you’re not forcing one bid across the entire mix)
What not to do yet
- Don’t redesign screenshots immediately. If CVR is fine, the landing page is already doing its part.
B) Normal/Low CPT, Low CVR → Click quality or landing conversion is broken
Symptoms:
- CPT is reasonable
- TTR may be mediocre or even fine (people click)
- But installs/taps is low
This usually indicates one of these:
- The ad is pulling in users whose intent doesn’t match the app
- The product page (or the specific page you’re sending to via custom product pages) doesn’t convert for ASA traffic
- Offer/price/feature expectations don’t line up with what users see
What to do first
- Use your Search Terms report to identify queries you’re showing on that don’t convert
- Add negative keywords for “high tap, low install” patterns (more on this workflow below)
- Review your app store page relevance to match the promise your ad implies (what users think they’re getting after the tap)
- If you use custom product pages, confirm the page you intended is truly the one being served for those taps
What not to do yet
- Don’t keep cutting bids aggressively if you’re not improving CVR. You’ll just buy fewer of the same low-quality traffic.
C) Low TTR and/or Low impressions, Unclear CPT → Visibility/eligibility issue
Sometimes ROAS looks bad because you’re losing the auction (or failing to qualify for enough queries).
Clues:
- Low impressions share or low TTR compared to your baseline
- Fewer taps, inconsistent performance
What to do first
- Check match type mix (exact vs broad/Discovery)
- Verify the keyword relevance to your app (and your product page for that app)
- Avoid changing creatives (Apple Search Ads has no “creative auction advantage” you can count on). Focus on keyword intent and bids.
Step 3: Decompose ROAS with a Simple Decision Rule
Create a quick decision rule you can apply every time you review performance.
- Compare CPT to your other ad groups running the same time window.
- If CPT is the outlier high → treat it as an auction issue.
- Compare CVR (installs/taps) to your other ad groups.
- If CVR is the outlier low → treat it as a conversion/relevance issue.
- If both are weak:
- Split the problem. First reduce CPT pressure (bid/keyword tightening) while simultaneously filtering obviously bad queries with negatives.
This doesn’t require perfect attribution, because you’re diagnosing at the tap → install stage. Apple doesn’t give per-keyword revenue; attribution maps via install→purchase reporting, so you want to fix the funnel before you interpret revenue.
Step 4: Turn Diagnosis into Specific Actions
Here’s what “specific” looks like.
If it’s an Auction (High CPT) problem
Start with the ad group/keyword set that’s generating most spend.
- Reduce max CPT bids in small steps (so you can observe impact without starving the ad immediately)
- For Search Results keywords, shift budget toward:
- Exact queries you’ve already proven to convert
- Keep broader/Discovery for discovery, but don’t let it own the majority of spend until it earns it
- If you’re using Search Match in its own ad group, compare it to your exact/broad ad groups separately. Don’t average them together.
If it’s CVR (Low conversion) problem
Your goal is to improve who clicks and what they see after clicking.
- Add negatives based on Search Terms, but do it carefully:
- Use a “high taps, low installs” threshold for the time window (even a crude one is better than random negatives)
- Add negatives in batches so you don’t accidentally remove your future winners
- Audit your app store page match:
- Are the screenshots/features clearly aligned with the intent implied by the query?
- Is the offer (free vs subscription, trial, etc.) understandable within the product page context?
- If you use custom product pages:
- Re-check that the mapping is correct and that you’re not sending ASA traffic to a page that doesn’t convert for the app’s current value proposition
If it’s both (CPT high + CVR low)
You don’t need a redesign campaign first—you need traffic discipline.
- Tighten keywords/match types and reduce bids for the worst offenders
- Simultaneously filter out query patterns that show taps but low installs
- Only after CPT/CVR stabilize, revisit product page improvements as the next lever
Step 5: Avoid the “Revenue Confuses the Diagnosis” Trap
Revenue reporting delays, refunds, trials, and net vs gross effects can make ROAS look noisy.
That’s why this method focuses on the tap → install stage:
- CPT and CVR are immediate and directly tied to ASA decisions.
- Revenue is downstream. It will lag and can wobble depending on subscription timing.
Once CPI stabilizes (or improves), then it becomes much easier to evaluate revenue/ROAS without chasing noise.
Where This Fits with Daily Optimization (and Tools)
If you’re managing spend daily, you want a prioritized change list you can actually execute. This CPT→CPA decomposition is a good way to generate that list:
- Auction symptoms → bid/keyword changes first
- Conversion symptoms → negatives + product page relevance changes first
Tools like AdsBuddy can read your ASA performance alongside the revenue you track (e.g., via RevenueCat mapping) and produce a short prioritized set of changes. The useful part is that the underlying logic should still start with auction vs landing conversion—because that’s where your next action should be anchored.
Closing Takeaway
When Apple Search Ads ROAS is bad, don’t treat it like a mystery number. Break the funnel into CPT (auction price) and CVR (landing conversion). Then your fixes become obvious: auction problems want bid/keyword changes; conversion problems want query filtering and product page relevance. Do that, and your optimizations stop feeling random—because they’re grounded in where the failure actually happens.