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:

  1. Match type — phrase blocks any query containing the term in order; exact blocks only the literal phrase + close variants
  2. 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

  1. Open the campaign → Insights and Reports → Search Terms

  2. Filter date range to Yesterday only (or how-ever long since this was last done)

  3. Sort by Cost (descending) so the worst bleeders surface first

  4. For each search term, decide whether it should ever trigger again. Use the 7-pattern scan:

    #PatternExampleWhat to negate
    1Geographic mismatchplumber folsom when client serves Roseville onlyThe city name ("folsom")
    2Wrong service linecommercial plumbing for a residential-only clientThe service modifier ("commercial")
    3DIY / self-servicehow to unclog a drain, DIY plumbing"DIY", "how to", "yourself"
    4Job seekersplumber jobs, HVAC hiring near me, roofer salary"jobs", "hiring", "career", "salary"
    5Educational / wholesaleplumbing course, HVAC training, roofing supplier"course", "training", "school", "supplier"
    6Big-box / retailer hijackHome Depot plumbing, Lowe's roof, Costco HVAC"Home Depot", "Lowe's", "Costco"
    7Competitor brand namesRoto 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.

  5. For each bad term, pick the match type and level:

    ChoiceWhenNotation
    Phrase (default)The trigger word recurs across multiple bad searches (e.g., a city name in 5+ wrong queries)"keyword"
    ExactA one-off specific bad phrase that won’t recur in variations[keyword]
    Both phrase + exactHigh-stakes universal (competitor brand, DIY, jobs)both rows
    Campaign-level (default)Universal junk that should never trigger from any ad groupAdd at Campaign → Negative Keywords
    Ad-group-levelCross-ad-group routing: the term belongs in a DIFFERENT ad group in this campaignAdd at the specific Ad Group → Negative Keywords
  6. 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.