AI ads infrastructure

Claude Search Terms Report Analysis (Tutorial)

Use Claude to analyze your Google Ads search terms report. Group bad terms, find conversion patterns, and add negatives in one conversation.

NotFair Team|

The search terms report is the highest-ROI section of any Google Ads account. It's also the most painful to analyze manually — hundreds of rows, judgment calls on every term. Claude can pull the report, group bad terms by intent, and propose negative keyword lists in 60 seconds. This page shows the exact workflow.

The prompt

You: "Pull last 30 days of search terms with $50+ spend or 5+ clicks. Group them by intent: irrelevant (block), informational (review), competitor terms (decide), and converting (expand). For irrelevant ones, propose a phrase-match negative keyword list grouped by theme."

What Claude does under the hood

  • Calls runScript with a GAQL query joining search_term_view to ad group and campaign with the spend/clicks filter.
  • Groups terms in-script by intent using semantic clustering (the model reads the terms; it doesn't need a separate ML system).
  • Cross-references with conversion data to confirm "converting" buckets aren't misclassified.
  • Generates a negative keyword list with match types, ready to apply via addNegativeKeyword or addKeywordToNegativeList.

Sample output

Claude: "Pulled 247 search terms matching the filter.

**Irrelevant (block):** 73 terms, $623 spend, 0 conversions. Themes: jobs/careers (12 terms), free/adoption (18 terms), DIY/recipes (9 terms), competitor brand variants (14 terms), unrelated locations (20 terms).

**Informational (review):** 28 terms, $401 spend, 4 conversions. Mostly 'how to' and 'what is' queries — low intent but some converted.

**Competitor:** 19 terms, $312 spend, 7 conversions. Decision: keep — 8% conv rate is profitable.

**Converting:** 41 terms, $1,847 spend, 67 conversions. Top: 'overnight pet boarding near me', 'cage-free dog daycare', '24 hour pet hotel'.

Proposed negatives (phrase match): 'jobs', 'careers', 'free', 'adoption', 'DIY', 'how to make', plus 14 specific competitor variants. Want me to apply?"

Approve and apply

Once you say "apply," Claude calls addNegativeKeyword (or createNegativeKeywordList for a shared list across campaigns) with the proposed terms. The MCP server logs every addition with a change ID. If a negative kills delivery on something you didn't expect, undo with one call: "undo the last negative keyword change."

What about the converting terms?

  • Promote them as exact-match keywords with their own ad groupsget more control over bid and copy for each.
  • Find adjacent variants"give me 20 keyword ideas similar to 'overnight pet boarding near me' with monthly search volume" → Claude calls getKeywordIdeas.
  • Tighten match typesif a converting term is currently matching via broad, switch to phrase or exact to reduce wasted impressions on adjacent queries.

How often should you run this?

Weekly for accounts spending $5K+/month. Bi-weekly for smaller accounts. The compounding gains come from running it consistently — each cycle catches new wasteful queries before they accumulate spend.

FAQ

Try MCP with Google Ads

Connect your Google Ads account to NotFair in 30 seconds and start querying campaigns from Claude.

Connect Google Ads

FAQ

Common questions about Model Context Protocol.

Can Claude tell the difference between converting and non-converting search terms?

Yes — the GAQL query pulls conversions per search term, so Claude has the data directly. The model also adds intent classification on top, which catches cases where a term hasn't converted yet but obviously should be blocked (job-seeker queries, etc.).

Does this work for shopping campaigns?

Yes. Shopping campaigns have search term reports too. The analysis works the same way; Claude pulls shopping_performance_view instead of search_term_view.

How does Claude know which terms are competitor names?

It reads the term and recognizes brand-shaped tokens. If your industry has obscure competitor names, give Claude a hint in the prompt: "competitors are X, Y, Z — flag any variants." The model picks them up correctly.

Can Claude add negatives to a shared negative list?

Yes — addKeywordToNegativeList. Claude can create a new shared list (createNegativeKeywordList), populate it, and link it to specific campaigns (linkNegativeListToCampaign) in one conversation.