N-gram mining of twelve months of query data against stated negation thresholds, plus a negative list structure your team can maintain.
About this service
In the accounts we inherit, twenty to thirty percent of search spend sits on query patterns nobody at the company would approve if they read them line by line. This engagement finds those patterns, negates them against a stated evidence threshold, and leaves behind a negative list structure your team can maintain without us.
What we actually do:
We pull search_term_view and campaign_search_term_insight from the Google Ads API into BigQuery, twelve months back, joined to conversions at the same grain. Then we tokenize every query into unigrams, bigrams and trigrams and aggregate spend, conversions and conversion value at the n-gram level. Judgment happens there, not at the query level. The long tail is single-impression queries; scoring them individually is reading noise and calling it insight.
An n-gram gets negated when it has spent at least two and a half times target CPA with zero conversions, or when it holds a CPA above three times target across thirty clicks or more. Anything below those thresholds goes on a watchlist and is re-scored the following cycle. We do not negate on gut, on brand discomfort, or on one expensive click, and we will say no when asked to.
The blind spot we tell you about:
Google withholds queries below its privacy threshold. In most accounts that is fifteen to twenty-five percent of search spend with no query attached to it. We reconcile what we can against the categorised insights view and report the unattributable portion as a number rather than pretending the report is complete. Anyone showing you a search term analysis that covers one hundred percent of spend is showing you the wrong report.
The list architecture:
Shared negative lists split by intent class — employment, instructional and DIY, free and pirated, competitor brand, adjacent-but-wrong vertical, out-of-market geography, unsafe. One owner per list, a changelog in Sheets, and every entry timestamped with the evidence that justified it, so that in eight months somebody can find out why a term was blocked instead of guessing.
Account-level negatives now reach Performance Max and Demand Gen, which changes the blast radius. We keep the account level to a short set of categorical exclusions and do the surgical work at campaign level. Single-word broad negatives get a matched-query check before they go anywhere near a live account; most of the damage we clean up in takeovers came from one word added in a hurry.
Mining runs in both directions. N-grams that convert well enough to deserve their own ad group, their own copy angle or a dedicated page get handed over as a promoted-terms list with the volume and CPA that make the case.
Category patterns we already know: cross-species leakage in pet accounts, where broad match on one animal reliably serves the other. Used, repair, plans and assembly queries in furniture. Free, open source, tutorial, salary and jobs in B2B software, where the jobs cluster is usually the largest single wasted line in the account.
Not included:
Bid management, budget changes, landing page work, Shopping feed diagnostics, and keyword expansion beyond the promoted-terms list. We do not restructure campaigns inside this engagement. If the analysis shows the structure is the problem, we say so and quote that separately.
Who this is not for:
Accounts under forty thousand dollars a month in search spend — the arithmetic does not work for either of us. Accounts running only Performance Max with no search campaigns. And anyone who wants five thousand negatives delivered as a CSV. That request is almost always a match-type problem wearing a negative keyword costume, and we would rather fix the match types.