The Hidden ROAS Killer: Overlapping Keywords Across Campaigns (and How to Fix It)
Running Apple Search Ads is mostly about steering a CPT auction with the right keywords and the right page. But one problem quietly punches holes in ROAS for a lot of indie teams: you’re competing with yourself.
When the same keyword (or very close match) exists across multiple campaigns/ad groups, you can end up paying for the same query intent twice, fragmenting learning, and making it harder to attribute which structure is actually working. This doesn’t show up as a warning in the UI—it shows up in your metrics: higher CPT, weaker conversion rate, and “I swear we used to be better” ROAS.
Below is a concrete way to audit overlap and fix it.
Why overlapping keywords can hurt ASA ROAS
Apple Search Ads uses a cost-per-tap auction where keywords are the entry ticket to showing. If two different ad units are eligible for the same user query, you’re effectively splitting your control.
Common failure modes:
- Internal competition: Two campaigns (or two ad groups) both target the same query intent. Each one may bid up to its max CPT, inflating your average CPT.
- Learning fragmentation: If installs/conversions are split across campaigns, you lose statistical confidence when you try to optimize (lowering bids “because ROAS is bad” may actually be the wrong lever).
- Mismatch between “who should win” and “who is bidding”: If one campaign is designed for high-intent traffic (exact keywords) but another is broad/automatic trying to discover, overlap can drag discovery traffic into the same pockets you hoped to reserve.
- Harder attribution debugging: Apple attribution resolves within ~24h, but if you’re mapping installs/revenue back to campaigns, overlap makes it harder to decide whether the product page, the keyword, or the auction behavior caused the result.
The key idea: you want one place in your account to own each intent level (discovery vs high-intent), and you want one bidding strategy per intent.
Step 1: Build a “keyword ownership” map (per country)
Apple Search Ads campaigns are country-scoped (one campaign targets one country/region). Do your audit separately for each country you advertise in.
Create a simple spreadsheet with columns like:
- Campaign name
- Ad group name
- Keyword text
- Match type (Exact / Broad)
- Max CPT bid
- Ad type (Search Results keyword vs Search Match automatic in its ad group)
Then, scan for overlaps:
What counts as overlap?
Treat these as overlap risk:
- Same keyword text in multiple places (e.g., the exact keyword “budget planner” appears in two ad groups).
- Near-identical phrases where match types make them mutually eligible:
- Exact keyword “meal tracker” + Exact keyword “food tracker” might not overlap perfectly, but if your app’s conversion is driven by the same underlying intent, you’re still competing for the same “slot” in user behavior.
- Exact + Broad pairing: Even if the exact keyword is “specific,” a broad keyword elsewhere can still trigger on queries that also would match your exact term.
Important: Apple doesn’t give you “per-keyword revenue,” so overlap hurts because it changes which ad unit wins the tap—not because Apple will tell you which keyword made the purchase.
Step 2: Use Search Terms reports to detect real query overlap
A keyword list overlap audit is necessary, but it’s not sufficient. You need to validate overlap at the query level.
In Apple Search Ads, use your Search Terms view (for Search Results placements). Look for:
- The same search query appearing under multiple ad groups/campaigns.
- The same query being responsible for both good and bad ROAS outcomes depending on which ad group/campaign caught it.
If you see the same query intent showing up in multiple places, you’ve found your conflict.
Quick test
Pick 10–20 queries that:
- Spend meaningfully (not just a one-off click)
- Drive installs (or at least taps)
- Appear under more than one ad group/campaign
For those queries, identify:
- Which keyword(s) were responsible in each ad unit
- Whether the winning ad unit (by taps) changed over time as bids fluctuated
That volatility is often “internal competition.”
Step 3: Consolidate ownership: one intent → one ad unit
Now the fix: you want to consolidate so that each intent bucket has a single home.
A practical pattern that works well for many indie accounts:
Intent buckets
- High-intent (exact keywords): Own the keywords you already know convert (brand terms and very specific problem/feature terms).
- Discovery (broad and/or Search Match): Use discovery to expand coverage, but keep it from doubling on the same intent.
- Separate discovery from high-intent structurally: Especially avoid having broad keywords in multiple campaigns bidding against the same exact terms.
What to change in practice
- Pick one campaign to own each exact keyword. Remove duplicates from other campaigns/ad groups.
- If you use multiple campaigns for the same country, prefer:
- One campaign for “exact high-intent”
- One campaign for “discovery”
If you already have “discovery” and “exact” campaigns, do this audit to ensure discovery broad terms aren’t recreating the same coverage as your exact set.
Step 4: Rationalize bids once you’ve removed duplicates
After consolidation, you’ll want bids to reflect intent level—not historical noise from a fragmented structure.
Do this:
- For the ad unit that now owns a keyword intent, set the max CPT bid based on the performance you observed from that intent, not from the previous messy split.
- Then adjust only one lever per iteration (commonly: bid changes, not keyword moves and bid changes in the same day).
Why? Because overlapping keywords create “who won the auction” effects. Once removed, your metrics will become more interpretable.
Step 5: Re-run the overlap check after edits
ASA structure changes take time to settle as auctions re-optimize.
A good workflow:
- Make consolidation changes.
- Give it at least several days (or enough taps to be less noisy) before judging ROAS.
- Then re-check Search Terms:
- Are the previous “same query in multiple places” patterns gone?
- Does the new structure show a clearer mapping between intent and performance?
Where this goes wrong (common traps)
Here are mistakes that make people think overlap isn’t the issue:
- Over-fixing based on total ROAS only. If clicks decrease after consolidation, ROAS might change temporarily. Use CPT, TTR, and conversion rate to understand what happened.
- Changing creatives/pages at the same time. ASA doesn’t have a “creative auction edge,” but your product page can still affect conversion rate after the click.
- Treating Search Match like it’s the same as a keyword list. Search Match is automatic matching in its own ad group, but it can still overlap your keyword intent. If you isolate it, do so carefully and keep it from duplicating your exact coverage.
A simple “account hygiene” checklist
Use this before making big ASA changes:
- For each country, every exact keyword exists in only one ad unit.
- Broad keywords are not recreating the same coverage as your exact set (especially across campaigns).
- Search Terms show “one main owner” per meaningful query.
- You can explain, in plain language, what each campaign/ad group is trying to do.
How AdsBuddy fits (lightly)
If you’re already pulling ASA + revenue data into a workflow (RevenueCat or similar), tools can help spot keyword overlap patterns and performance mismatches faster. AdsBuddy reads your Apple Search Ads + revenue and gives you a short, prioritized list of changes to approve—especially useful when the problem is structural, not a simple bid tweak.
Takeaway
Overlapping keywords across Apple Search Ads campaigns is a silent ROAS killer because it turns your auction into internal competition and makes your optimization decisions noisy.
If you do only one thing: consolidate keyword ownership so each meaningful intent has one ad unit (per country), then verify the fix by re-checking Search Terms for the same queries appearing under multiple owners.
Once your structure matches your strategy, your CPT→conversion path becomes much easier to debug—and your ROAS decisions stop feeling like guesswork.