Branded Search Bleed Audit
The report that tells you what percentage of your 'Google Ads revenue' is actually branded search.
Who this is for
- Founders sceptical of their dashboard ROAS
- CFOs asking about incremental revenue
- New operators inheriting an account with high reported ROAS
Why this exists
Most ecom accounts report a healthy ROAS that quietly hides the fact that 60-80% of clicks come from people typing the brand name. This audit splits brand from non-brand cleanly so you can see what your ad spend is actually buying you.
Read this first
If your dashboard says 6x ROAS and your bank balance disagrees, the gap is almost always branded search. The buyer who Googles your brand name was already going to convert; routing them through paid ads buys traffic you would have captured organically and reports it as paid revenue. This audit splits the two streams so you can see what your spend is actually doing.
How to run the audit
Pull the search-terms report for every Search and PMax campaign
Trailing 28 days minimum, 60 if you have the volume. Export to a sheet. PMax doesn't expose all search terms; for PMax, export the search-themes performance and the asset-group-level conversions instead. The headline number you want is the share of conversions tied to queries that contain your brand name or any close variant.
Tag every query as brand or non-brand
Build a brand list: exact brand, brand variants, common misspellings (pull from Search Console top queries), brand+product combos, brand+location, branded competitor terms (competitor + alternative). Tag any query that contains any term from the list as brand. Everything else is non-brand. The split is now cleanly visible at row level.
Compute true non-brand ROAS
Sum revenue and spend for the non-brand rows only. Divide. That's the number your CFO actually wants. Compare to the dashboard ROAS Google reports. The gap is your branded-search bleed.
Decide on structure: separate, exclude, or split campaign
If branded share is below 25% of total clicks: leave it alone, the bleed is small enough to ignore. 25-50%: carve branded into a dedicated low-budget Search campaign so non-brand campaigns optimise against incremental traffic. Above 50%: full structural split is mandatory, plus brand exclusions across PMax / AI Max so they don't re-acquire the brand stream you just isolated.
Brand-share thresholds and the structural fix
Working benchmarks across the ecom accounts Ad-Lab audits. Calibrate against your own attribution stack before acting on the boundary cases.
| Branded share of revenue | What it means | Structural fix |
|---|---|---|
| Below 25% | Healthy. Your non-brand engine is doing the work. Branded keywords are a small protective layer. | Leave structure alone. Set a low daily cap on the branded campaign and watch monthly. |
| 25-50% | Common in mid-stage ecom. The dashboard inflates non-brand performance by ~1.3-1.6x. | Carve branded into a dedicated low-budget Search campaign. Add brand exclusions to PMax / AI Max so they stop eating brand traffic. |
| 50-75% | The brand is doing the heavy lifting. Most paid revenue would have happened organically. | Full split. Branded campaign capped tight. PMax / AI Max with hard brand exclusions. Re-baseline non-brand ROAS targets to match the new ground truth. |
| Above 75% | Your dashboard is mostly a brand-search reporter. Real non-brand acquisition is small. | Same as 50-75% plus consider if paid is even needed. Geo-holdout test the brand layer to confirm it's not pure cannibalisation of organic traffic. |
True non-brand ROAS calculator (sheet formula)
Drop into a Google Sheet alongside your search-terms export. Tag column already populated with brand / non-brand from step 2.
# Inputs (per row of the search-terms export)
A = query string
B = clicks
C = cost (spend)
D = conversions
E = conversion value (revenue)
F = brand_or_nonbrand (set in step 2)
# Pivot summary
brand_spend = SUMIF(F:F, "brand", C:C)
brand_revenue = SUMIF(F:F, "brand", E:E)
brand_conv = SUMIF(F:F, "brand", D:D)
nonbrand_spend = SUMIF(F:F, "nonbrand", C:C)
nonbrand_rev = SUMIF(F:F, "nonbrand", E:E)
nonbrand_conv = SUMIF(F:F, "nonbrand", D:D)
# Headline metrics
dashboard_roas = (brand_revenue + nonbrand_rev) / (brand_spend + nonbrand_spend)
true_nonbrand_roas = nonbrand_rev / nonbrand_spend
bleed_factor = dashboard_roas / true_nonbrand_roas
# bleed_factor of 1.0 = no bleed (you're seeing the truth)
# bleed_factor of 1.4 = dashboard overstates non-brand ROAS by 40%
# bleed_factor of 2.0+ = your reported ROAS is mostly brand searchBrand-exclusion list to deploy alongside the audit
- Exact brand term plus all common spellings
- Brand-plus-domain variants (yourbrand.com, yourbrand.io, www.yourbrand.com)
- Brand misspellings pulled from Search Console top 1,000 queries
- Brand-plus-product combos for every flagship SKU
- Brand-plus-location terms (yourbrand uae, yourbrand london, yourbrand near me)
- Branded competitor terms (competitor + alternative, competitor vs yourbrand)
- Brand-plus-review intent (yourbrand reviews, yourbrand worth it, yourbrand vs)
- Brand-plus-buy intent (buy yourbrand, yourbrand discount, yourbrand promo code)
What good looks like after the fix
Branded campaign is isolated and capped at the budget needed to defend the SERP. Non-brand campaigns report their true ROAS and optimise against incremental traffic only. PMax / AI Max have brand exclusions populated so the bleed doesn't return through the side door. Your reported channel ROAS goes down on paper. Your blended MER stays flat. The CFO is happy because the numbers now reconcile.
External resources
Authoritative references we link to alongside the template. Read them before running the audit.
- Google Ads, search-terms reportReference for the search-terms export the audit reads from.
- Google Ads, brand exclusions in Performance MaxHow to apply the exclusion list from this audit at the PMax level.
- Google Search Console, top queries reportSource for branded misspellings + branded query coverage.
- Search Engine Land, brand vs non-brand coverageTopic index covering branded-traffic measurement debates over time.
- PPC Hero, branded search measurement archiveOperator-level treatments of brand-vs-non-brand splits in real accounts.
Want this run for you?
