Google Ads
Google Ads close variants put 67% of a competitor campaign's conversions on brand terms
We audited a campaign called Competitor (Exact) – Metro. It ran on Target CPA. Over the analysis window it recorded 286 conversions at a blended cost per lead of $144, which in a residential solar account is respectable. On the campaign overview it looked like one of the better performers in the account: a well-structured, exact-match, competitor-conquesting campaign doing exactly what it was built for.
Then we pulled the search terms.
192.6 of those 286 conversions, 67%, came from queries containing the advertiser's own brand name. Those brand queries converted at $64 per lead. The actual competitor queries, the ones the campaign existed to capture, converted at $336.
It was not a competitor campaign. It was a brand campaign with a competitor campaign bolted on, and the brand half was quietly paying for the rest.
What the campaign actually contained
Query type | Conversions | Share | Cost per lead |
|---|---|---|---|
Own-brand queries | 192.6 | 67% | $64 |
Genuine competitor queries | 93.4 | 33% | $336 |
Blended (what the dashboard showed) | 286.0 | 100% | $144 |
The blended figure isn't wrong, exactly. It's arithmetically true. But it describes a campaign that doesn't exist. Nobody was making decisions about a "$144 competitor campaign". They were making decisions about a $64 brand campaign and a $336 competitor campaign, and calling the average a strategy.
If you'd been asked "should we scale this campaign?" on the strength of $144, you'd have said yes. If you'd been asked with the split in front of you, you'd have asked a very different question: why are we spending $336 to steal a competitor's customer when we could spend $64 to keep our own?
Why exact match doesn't stop it
The campaign was built with exact-match keywords. Ten years ago that would have been enough: [sunboost] matched "sunboost" and nothing else. It hasn't worked that way since 2018, when Google expanded exact match to include what it calls "close variants": queries that share the same meaning or intent, as judged by the platform.
In practice, that means a keyword like [rival brand] will match:
Query | Matches | Why |
|---|---|---|
| Yes | Exact |
| Yes | Same intent, added modifier |
| Yes | Contains the keyword, comparative intent |
| Yes | Same as above |
| Yes | Comparative |
| Usually no | Different entity, but see below |
The comparative queries are where the leak starts. Someone typing "your brand vs rival brand" is, from Google's point of view, expressing interest in both. The competitor campaign catches it. And someone typing that query is very often an existing customer or a warm prospect who has already heard of you, which is why it converts at $64 rather than $336.
Then it compounds. Once a handful of those comparative queries convert cheaply inside the campaign, the bid strategy notices. Target CPA doesn't know the difference between "brand query" and "competitor query". It knows this campaign produces conversions at well under target. So it bids more aggressively across the campaign, which means it bids more aggressively on the $336 competitor traffic too, because that's what's left once the cheap conversions are absorbed.
The bid strategy was learning from the wrong signal
This is the part that does the real damage, and it's worth being precise about.
Target CPA sets bids to hit a target cost per conversion across the campaign. It learns from the conversions the campaign has produced. If two-thirds of those conversions came from a population that converts at $64, the algorithm's model of "what this campaign can do" is built on that population.
What the algorithm sees | What is actually true |
|---|---|
Campaign CPL: $144 | Two populations: $64 and $336 |
Campaign CVR: healthy | Brand CVR high; competitor CVR low |
Room to bid up | Bidding up buys more $336 traffic |
Target achievable | Target achievable only while brand subsidises |
Every bid decision on a genuine competitor query was informed by a conversion history that was mostly not competitor queries. The campaign was, functionally, a brand campaign that had been told to go buy competitor traffic with its surplus.
How widespread it was
We ran the same split across every enabled campaign in the account for the period 1 June to 24 August. Most were clean. One was not.
Campaign | Total conv | Brand conv | Brand share |
|---|---|---|---|
| 286.0 | 192.6 | 67% |
Every other non-brand campaign | n/a | n/a | 0–10% |
Account-wide over the same window:
Spend share | Conversions | Conv share | Cost per lead | |
|---|---|---|---|---|
Brand queries | 16% | 918 | 30% | $90 |
Non-brand queries | 84% | 2,140 | 70% | $199 |
Brand was 30% of the account's conversions on 16% of its spend, and a substantial fraction of that brand volume was sitting inside campaigns with other names on them.
The lifetime version
Pull the same split across the account's entire history (nine years, $25.7M of search spend), and the pattern is the same, just bigger:
Search, lifetime | Spend | Share | Conversions | Share | CPL | CVR |
|---|---|---|---|---|---|---|
Non-brand | $23,093,887 | 90% | 151,975 | 74% | $152 | 7.6% |
Brand | $2,646,839 | 10% | 52,779 | 26% | $50 | 17.1% |
Brand converts at more than twice the rate and costs a third as much per lead, consistently, across 204,000 conversions. That is not a sampling artefact. It is the structural shape of paid search for any business that has a name people already know.
And it means the blended CPL of any account with a brand campaign is flattered. Two accounts both reporting $128 blended CPL can be running non-brand at $150 and $300 respectively, depending on how much brand is in the mix. You cannot compare accounts, campaigns, or time periods on blended CPL without knowing the brand share.
What happened when we fixed it
The fix was structural: consolidate every own-brand keyword into a single dedicated brand campaign, and add brand terms as negatives everywhere else.
Before | After |
|---|---|
Brand keywords scattered across 44 paused ad groups plus leaks into non-brand campaigns | One brand campaign, one ad group, 56 exact-match keywords |
| Brand campaign reporting $9 CPL on its own traffic |
Non-brand campaigns carrying 0–67% brand contamination | Non-brand campaigns at 0% brand, ten days after |
The ten-day search terms report after consolidation:
Campaign | Total conv | Brand conv | Brand share |
|---|---|---|---|
| 3.0 | 3.0 | 100% |
| 24.4 | 0.0 | 0% |
| 18.3 | 0.0 | 0% |
| 11.0 | 0.0 | 0% |
| 8.5 | 0.0 | 0% |
Every other enabled campaign | n/a | 0.0 | 0% |
Clean. Brand goes to brand. Everything else reports what it actually is.
The consequence nobody warns you about
When you do this, the formerly contaminated campaign's CPL will jump. In this account the competitor campaign was already paused for other reasons, but had it been live, its reported cost per lead would have gone from $144 to something close to $336 overnight, not because anything got worse, but because the subsidy was removed.
Someone will look at that and conclude the consolidation "broke" the competitor campaign. It didn't. It revealed it. The $336 was always the real number.
Stage | Competitor campaign CPL | What it means |
|---|---|---|
Before consolidation | $144 | Brand subsidy hiding the real cost |
After consolidation | ~$336 | The real cost, now visible |
Correct interpretation | n/a | The campaign was never profitable at its stated purpose |
Have that conversation with the client before you make the change, not after the dashboard turns red.
How to check your own account
This takes about ten minutes and requires nothing beyond the standard interface.
Search terms report, widest date range you trust: 60 to 90 days is usually enough.
Filter to search terms containing your brand name. Include misspellings. In this account that meant the brand name, the brand name without a space, two common typos, and the name of the company's celebrity ambassador.
Segment by campaign. You now have a table of brand conversions per campaign.
Divide by each campaign's total conversions. That's the brand share.
Brand share | What it means | What to do |
|---|---|---|
0–5% | Clean, or close enough | Add brand negatives anyway as insurance |
5–15% | Leaking | Add brand negatives now; recalculate the campaign's true CPL |
15–40% | Contaminated | The campaign's reported performance is unreliable; the bid strategy is learning from the wrong signal |
40%+ | It's a brand campaign | Rename it or restructure it; nothing it reports about non-brand is trustworthy |
The fix, in order
Step | Action | Why this order |
|---|---|---|
1 | Build a shared negative keyword list containing every brand term and variant | One list, applied everywhere, maintained in one place |
2 | Apply it to every non-brand campaign | Stops the leak immediately |
3 | Make sure a dedicated brand campaign exists and is enabled | The brand traffic needs somewhere to go |
4 | Move any brand keywords found elsewhere into it, exact match only | Phrase and broad on brand terms invite the same problem in reverse |
5 | Wait a week, re-run the search terms check | Confirm the share dropped to near zero |
6 | Recalculate historical CPL for the formerly contaminated campaigns, brand excluded | So the "after" numbers aren't compared against a flattered "before" |
Step 6 is the one everyone skips, and it's the one that saves the conversation with the client.
The wider principle
The specific finding here is about brand. The general finding is that a campaign's name tells you what someone intended it to do, not what it does. The search terms report tells you what it does. If the two disagree, every metric on the campaign overview is describing the intention rather than the reality, and the bid strategy is optimising toward the reality, whatever you've called it.
Check the search terms. Then decide what the campaign is.
Related services
Filed under


