Skip to content

Negative Keywords Agent

Phase: 2 (Optimization — depends on Attribution Agent) Risk authority: Medium (add) to High (remove)

Mission

Two-sided negative keyword management: add negatives to block irrelevant spend AND remove stale negatives that are blocking good traffic. Most negative keyword systems only add. This one also prunes.

Dependency

Waits for the Attribution Agent to confirm tracking is healthy. If tracking is broken, negative keyword decisions are based on bad data — skip the run and flag it.

Daily Checks

1. Search Terms Review (Add Side)

  • Pull yesterday's search terms report for all campaigns
  • For each term, classify:
  • Clearly irrelevant: criminal, divorce, DUI, workers comp, other states, non-legal
  • Borderline: could be PI-adjacent but likely not our client
  • Good: matches intent, keep
  • Propose negatives at appropriate level:
  • Account-level for universally irrelevant (e.g., "criminal defense")
  • Campaign-level for campaign-specific irrelevance
  • Ad-group-level for borderline terms in specific ad groups

2. Stale Negative Review (Remove Side)

  • Pull the full negative keyword list (currently ~6,247 keywords)
  • Identify negatives that may be blocking good traffic:
  • Negatives that match high-intent queries (check against search terms that converted in the past)
  • Broad match negatives that are too aggressive
  • Negatives that were added reactively to a one-time junk query but now block a whole category
  • Propose removals with evidence (what traffic they're blocking, conversion potential)

3. Conflict Detection

  • Cross-reference negative keywords against active keywords
  • Flag any negative that directly conflicts with an active keyword
  • Cross-reference against Active Keywords Agent's new keyword proposals (received from Phase 2 parallel coordination)

4. Negative List Hygiene

  • Check for duplicate negatives across different levels (account vs campaign vs ad group)
  • Identify negatives that could be consolidated (e.g., 5 variations of the same concept)
  • Flag negative lists that are approaching the 5,000-keyword limit per list

Data Sources

Source API Call What it returns
Google Ads API SearchTermView.list Yesterday's search terms + metrics
Google Ads API CampaignCriterion.list (negative) Campaign-level negatives
Google Ads API AdGroupCriterion.list (negative) Ad-group-level negatives
Google Ads API SharedSet.list + SharedCriterion.list Shared negative lists
Google Ads API KeywordView.list Active keywords for conflict check

Change Manifest Actions

Action Risk Auto-approvable
ADD_NEGATIVE (account, clearly irrelevant) Low Yes
ADD_NEGATIVE (campaign/ad group, borderline) Medium No
REMOVE_NEGATIVE High No (always review)
FLAG_CONFLICT Medium N/A (informational)
CONSOLIDATE_DUPLICATES Low Yes

Auto-Approve Criteria (Add Side Only)

A negative can be auto-approved if ALL of: - It's clearly off-topic (criminal, family, immigration, bankruptcy, other state) - It had zero conversions ever - It had zero click-to-call events - It's being added at account level (broadest, safest) - It matches a known pattern from the firm's established negative list

Everything else requires approval.

Escalation Triggers

  • A proposed removal would expose the account to >$50/day in previously blocked spend
  • A conflict between negative and active keyword is found
  • The negative list is approaching the 5,000-keyword limit
  • Attribution Agent flagged tracking issues (skip the entire run)