Purpose of this document:
To explain how to find search terms that shouldn’t trigger ads, decide the right match type and level for each, and add them as negative keywords.
Why this procedure exists
Google expands keywords semantically. Even on phrase-match, a plumber Roseville keyword can trigger on how to plumb yourself, plumber jobs Sacramento, Roto Rooter near me, and Home Depot plumbing. Most expansions are waste — they spend budget without producing real leads.
The search-terms report exposes the actual queries Google triggered ads on yesterday. Scanning it daily and adding the bad terms as negatives catches them in 24 hours instead of 3–7 days. One bad term running for a week often costs more than a full week of 5-minute daily reviews.
When this step doesn’t apply
Don’t negate aggressively in the first 48 hours of a new campaign. Some seemingly-irrelevant terms turn out to convert. Clear off-pattern terms (geo mismatch, DIY, obvious job seekers) still get same-day treatment; borderline terms wait until cost exceeds target CPA without converting.
How it works
A negative keyword tells Google “don’t show ads when the search query contains this.” Two decisions per negative:
- Match type — phrase blocks any query containing the term in order; exact blocks only the literal phrase + close variants
- Level — campaign-level blocks across every ad group; ad-group-level blocks in just one ad group
The default for local lead-gen: phrase match, campaign-level. That blocks universally bad terms across the whole campaign in one row. Exact-match and ad-group-level are special cases for one-off phrases and cross-ad-group routing.
Never use broad-match negatives. They can accidentally block converting traffic. Phrase + exact only.
The Process
-
Open the campaign → Insights and Reports → Search Terms
-
Filter date range to Yesterday only (or how-ever long since this was last done)
-
Sort by Cost (descending) so the worst bleeders surface first
-
For each search term, decide whether it should ever trigger again. Use the 7-pattern scan:
# Pattern Example What to negate 1 Geographic mismatch plumber folsomwhen client serves Roseville onlyThe city name ( "folsom")2 Wrong service line commercial plumbingfor a residential-only clientThe service modifier ( "commercial")3 DIY / self-service how to unclog a drain,DIY plumbing"DIY","how to","yourself"4 Job seekers plumber jobs,HVAC hiring near me,roofer salary"jobs","hiring","career","salary"5 Educational / wholesale plumbing course,HVAC training,roofing supplier"course","training","school","supplier"6 Big-box / retailer hijack Home Depot plumbing,Lowe's roof,Costco HVAC"Home Depot","Lowe's","Costco"7 Competitor brand names Roto Rooter near me,Mr Rooter SacramentoThe competitor’s brand If the term doesn’t match one of these patterns and you’re unsure, wait. Don’t negate borderline terms in the first 48 hours.
-
For each bad term, pick the match type and level:
Choice When Notation Phrase (default) The trigger word recurs across multiple bad searches (e.g., a city name in 5+ wrong queries) "keyword"Exact A one-off specific bad phrase that won’t recur in variations [keyword]Both phrase + exact High-stakes universal (competitor brand, DIY, jobs) both rows Campaign-level (default) Universal junk that should never trigger from any ad group Add at Campaign → Negative Keywords Ad-group-level Cross-ad-group routing: the term belongs in a DIFFERENT ad group in this campaign Add at the specific Ad Group → Negative Keywords -
Add the negatives in Google Ads:
- Campaign-level: Campaign → Keywords → Negative Keywords → + → paste with notation, one per line, save
- Ad-group-level: specific ad group → Keywords → Negative Keywords → + → paste with notation, save
Edge cases
Edge case 1: campaign is brand-new (first 48 hours)
Only negate clear off-pattern terms (geo mismatch, DIY, obvious job seekers). Borderline terms (slightly off-target service modifiers, ambiguous category words) get a 48-hour grace period — let the data show whether they convert.
Edge case 2: skipped 3+ days of daily review
The report has 72+ hours of mixed signal. Two options: (a) work through each day separately if there’s time, or (b) do a single deep weekly review with a Last-7-Days filter and reset. Don’t pile up indefinitely — at 5+ days the daily framework breaks.
Edge case 3: the bad term is “stealing” from another ad group
A [tree service near me] triggering from the “Tree Service” ad group when you’d rather it route to the “Tree Removal” ad group. Add [tree service near me] as an ad-group-level negative on Tree Service, NOT a campaign-level negative. That redirects the term rather than killing it. Skip ad-group-level routing in the first 30–60 days — let the algorithm learn before applying surgical restrictions.
Edge case 4: the term contains “free”
free quote is high-intent and should NOT be negated. free service is bad and SHOULD be negated. Phrase-match "free service" is safer than phrase-match "free" alone — never blanket-negate the word “free”.
Edge case 5: campaign is on Smart Bidding
The daily search-terms scan still runs. Smart Bidding doesn’t add negatives for you — it bids algorithmically given the keywords and negatives you’ve configured. A bad term running on Smart Bidding wastes the algorithm’s budget AND feeds it noisy training data, making the next bidding decision worse. Daily negation is arguably MORE important on Smart Bidding, not less.

