Duplicate Keywords Finder
Finds identical keywords (same text and match type) active in multiple ad groups or campaigns, with per-instance performance so the keeper is obvious — ending the internal competition that splits history and muddies results.
by Karooya & Pemavor (concept), chiliad (rewrite)·chiliad.io
Overview
Duplicate Keywords Finder groups every active keyword by text plus match type and reports each set that exists in more than one place. Duplicates enter the same auctions, split their performance history, and leave the choice of which instance serves to Google. Each duplicate set is ranked by combined spend and lists every instance with its cost, clicks and conversions — the leading instance is marked as the natural keeper.
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.
- 3Set INCLUDE_PAUSED = true if you also want paused keywords considered.
- 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 |
INCLUDE_PAUSED | false |
TOP_N | 50 |
EMAIL_ADDRESS | (empty) |
Expected Output
=== Duplicate Keywords (same text + match type in multiple places) ===
Keywords scanned: 1844 Duplicate sets: 3
"running shoes" (PHRASE) - 2 instances, combined cost 684.20
[KEEP?] Shoes — Generic > Running cost: 512.40 clicks: 410 conversions: 12.0
Sneakers > All Products cost: 171.80 clicks: 155 conversions: 2.0
"buy sneakers online" (EXACT) - 2 instances, combined cost 241.10
[KEEP?] Sneakers > Purchase Intent cost: 201.55 clicks: 168 conversions: 9.0
Shoes — Generic > Generic cost: 39.55 clicks: 30 conversions: 0.0
Email sent to you@example.comNotes
Cross-campaign duplicates can be intentional when the campaigns target different locations, languages or devices — check settings before pausing. Only keywords that served in the window appear with stats; a duplicate with zero traffic still shows with zeros. Keyword text comparison is case-insensitive.