Search Term Cannibalization
Finds queries served by two or more campaigns in the same period, with the cost/CPA split per campaign — so the right owner is obvious and the negatives to add elsewhere follow directly.
by Dmytro Tonkikh·chiliad.io
Overview
When multiple campaigns can serve the same query, Google routes the traffic by Ad Rank — not by your structure — and the same query can cost wildly different amounts depending on which campaign catches it. Search Term Cannibalization groups all search terms by query and reports every query that served from two or more campaigns, ranked by combined cost, with each campaign's cost, clicks, conversions and CPA. The campaign with the best numbers is marked as the natural owner.
Setup
- 1Open your Google Ads account and go to Tools → Bulk Actions → Scripts.
- 2Click the + button to create a new script and paste the code below.
- 3Adjust MIN_COMBINED_COST so trivial overlaps don't clutter the report.
- 4Set EMAIL_ADDRESS to receive the report; leave blank for logs only.
- 5Preview once to verify, then schedule monthly.
Configuration Variables
| Variable | Default |
|---|---|
DATE_RANGE | LAST_30_DAYS |
MIN_COMBINED_COST | 10 |
TOP_N | 30 |
EMAIL_ADDRESS | (empty) |
Expected Output
=== Search Term Cannibalization (LAST_30_DAYS) ===
Queries analyzed: 18342 Served by 2+ campaigns (cost >= 10): 4
"running shoes sale" combined cost: 312.40 campaigns: 2
[MAIN] Shoes — Generic cost: 240.10 clicks: 198 conversions: 11.0 CPA: 21.83
Sneakers — Promotions cost: 72.30 clicks: 61 conversions: 1.0 CPA: 72.30
"trail shoes waterproof" combined cost: 120.85 campaigns: 2
[MAIN] Shoes — Generic cost: 98.20 clicks: 84 conversions: 4.0 CPA: 24.55
Generic — Broad cost: 22.65 clicks: 19 conversions: 0.0 CPA: -
Email sent to you@example.comNotes
Some overlap is intentional (e.g. a high/low priority split or geo-separated campaigns) — check settings before adding negatives. For genuine cannibalization the fix is one negative per losing campaign: give the query to the campaign with the better CPA or the tighter theme.