Axer
The Ledger: Entry 01

The Ledger 01: Negative Keyword DisciplineThe click you didn't choose is still on the invoice.

One real, anonymized B2B SaaS account. The most expensive search term in the report wasn't a typo or a DIY query. It arrived through a matching mechanism nobody had audited, and it teaches the rule for where a negative keyword actually belongs.

Part of The Ledger
Entry 01: Negative Keyword Discipline

"We reduced wasted spend" sounds like a mechanism. Usually it's a headline standing in for a finding nobody has actually walked through.

This is the first entry in The Ledger, a series where we walk one real, anonymized account through exactly that: the finding, dated, sourced, and explained.

Every entry in this series trades a named receipt for a working mechanism. No client name, no login, no dollar figure precise enough to trace back to a real business, ever. That's a contract requirement first. It's also the more useful trade: a number from someone else's account tells you what happened to them. A mechanism tells you what to check in yours: which report, which column, which cadence, which scope.

Ask any paid search operator whether they run negative keywords and the answer is always yes. Ask them to produce one real example, dated, sourced, and explained, and the room gets quiet. That gap is the whole reason this series exists.

The real seed is often a matching source you never audited, quietly harvesting an entire category of waste one plausible-sounding query at a time.

Part One

The Find

The account is B2B SaaS. The review that matters here started the way most good ones do: not an alert, not a dashboard flashing red, but a scheduled pass through the Search Terms report, sorted by cost, descending.

The single most expensive search term in the account was a competitor's brand name. One click. The cost ran several times higher than the account's average CPC. Zero conversions attached.

That alone is a familiar story. Competitor-name leakage happens. What made this one worth writing about is how the term got in. It hadn't come through a keyword at all. Pulling the Dynamic Search Ads search terms report, a separate report from the standard one, and adding the Page URL column showed which page-feed URL had actually matched the query. Google's own content-matching had read the site's pages and decided a competitor search was topically close enough to serve. Nobody had bid on that name. Nobody had typed it into a keyword list. The algorithm inferred the association on its own.

That detail turns a single bad click into a seed. Once the Page URL column flagged the mechanism, not just the term, the next move was to check that same column against every high-impression, low-click term in the account. It surfaced a small cluster of adjacent competitor names, plus a second, quieter pattern: aspirational and adjacent-category names that shared enough surface vocabulary with the account's own positioning that the same content-matching mechanism kept pulling them in too.

1
Single most expensive term in the account: a competitor's name, zero conversions
0
Keywords that actually triggered it, it arrived via URL-inclusion matching instead
2
Part fix required: block the names found, then disable the mechanism finding new ones

The fix ran in two parts, because either one alone leaves the leak open.

A Second, Quieter Seed: Right Category, Wrong Population

Not every seed is a term that's obviously off-topic. Some of the most expensive ones are hiding inside language that looks exactly like your own.

B2B categories routinely borrow words that also describe a completely unrelated consumer problem, searched by a population that outnumbers the real buyer by orders of magnitude.

"Protection": enterprise security software, or a home alarm, a personal safety app, a bodyguard service
Same root word. Three of those four searchers will never be your buyer, and none of them are shopping for what you sell.
"Backup": an enterprise disaster-recovery platform, or someone trying to save the photos off a cracked phone
Same word. Completely different population, completely different intent, completely different budget.

This category doesn't announce itself the way a competitor's brand name does. It rarely tops a cost-sorted list, because an individual consumer who lands on a B2B ad by accident often doesn't click, and almost never converts. What it produces instead is impression volume that dwarfs everything else in the ad group, paired with a click-through rate that never quite makes sense for how "on-topic" the keyword looks on paper.

Deep impressions, weak engagement, a term that reads like the ICP's language but is actually being typed by several different populations who all happen to use the same word for entirely different problems.

The teaching point: don't only sort by cost. Sort by impression volume against click-through rate, and for the highest-volume terms that look obviously relevant, ask who else in the world searches that exact phrase, and what they're actually trying to do.

The Structure

Where a Negative Actually Belongs

Every negative keyword decision runs through the same test: would this be bad everywhere the account will ever run, bad only inside one campaign's context, or is it genuinely ambiguous and needs the narrowest possible scope? Click a tier to see where it fits.

The Three-Tier Structure  |  Account → Campaign → Ad Group
Campaign
Legitimate elsewhere, over-matched in this one context
Ad Group
Genuinely ambiguous, keep the decision reversible
Part Two

The Rhythm

The honest answer on cadence: it isn't a fixed calendar event, and treating it like one is itself a mistake.

The baseline for this account was a full search-term review roughly every two weeks. That's the backbone rhythm. Layered on top of it, when something specific got flagged mid-cycle, an interim check ran early rather than waiting for the next scheduled pass. Scheduled is the default posture. Ad hoc is the exception that fires when a signal is already visible, not the primary rhythm. An account run entirely on ad hoc reviews is an account that's always reacting, and reactive is a losing posture in an auction that updates in real time.

The account also ran on a second platform, and that platform got its own, slower cadence, not a mirror of the first. The reasoning was explicit at the time: lower edit velocity on that platform meant a weekly pass would have been overkill, so the review shifted to roughly every two to three weeks instead. Negatives found on one platform were never assumed to translate directly to the other. Different platform, different audience behavior, different close-variant logic, a separate look.

~2wk
Backbone review cadence on the primary platform
2–3wk
Slower cadence on a secondary platform with lower edit velocity
Flex
Interim checks fire on signal, not on the calendar

Session length varied more than the cadence did. A pass that's pure maintenance, checking what leaked through since the last cleanup, runs short, because most of the obvious waste categories are already blocked and the job is spotting what's new. A session that bundles structural work alongside the audit, a campaign rebuild, a new ad group, a landing page test, runs long, because the negative-keyword pass is one line item inside a bigger sitting, not the whole session.

Cadence should flex with spend velocity, not sit on a fixed day on the calendar. A slow account reviewed weekly generates noise faster than signal. A fast account reviewed only when someone remembers is an account bleeding budget between glances.

Part Three

The Scope Decision, With Real Cases

This is the question most operators skip, and it's the one that separates discipline from a spreadsheet full of blocked terms nobody can explain.

LevelReal caseWhy this scope
The competitor-brand cluster from Part One, added to a shared listBad in every campaign this account will ever run, including ones that don't exist yet. Zero false-negative risk.
CampaignA term central to the account's own vocabulary, over-matched by one campaign's broad targeting configurationThe same term is a real product elsewhere in the account. Blocking it account-wide would cut real buyer traffic.
Ad GroupA term that named a real competitor's product and described a use case this account genuinely supportsGenuinely ambiguous until intent is confirmed. Narrowest scope keeps the call reversible without collateral damage.

Account-level, in full. The competitor-brand cluster went onto a shared, account-wide negative list. Add a new product line's campaign next quarter and it inherits the same protection automatically, no re-work required. There's no legitimate scenario in which a customer searching a competitor's exact brand name is a buyer here. Maximum leverage, done once.

Campaign-level, in full. A Dynamic Search Ad configuration inside one specific campaign was crawling the whole site and matching on a bare term regardless of context, a term that's literally what the account sells elsewhere in the portfolio. The negative went in scoped to the one campaign where the matching mechanism was misbehaving, and nowhere else.

Ad-group-level, the hard case. A term surfaced that was simultaneously the name of a real competitor's product and a legitimate, actively-supported use case, customers migrating a specific function off that competitor's tool and onto this one. The first read was to block it as competitor noise. The correct read, once intent was confirmed, was closer to the opposite: on-target buyer traffic that happened to share a name with a competitor. Scoping to a single ad group meant the call could be reversed the moment real intent was confirmed, without cutting a legitimate segment everywhere else in the meantime.

The teaching point: the default instinct to scope broad "to be safe" is backwards. The safest scope is the narrowest one that still solves the problem you can actually prove exists. Account-level is a policy decision. Ad-group-level is a reversible hypothesis. Confusing the two is how legitimate traffic gets cut by accident.
Try It

Negative Keyword Starter Pack

Pick the vertical closest to your account. Every entry is tagged with the tier it belongs at and why, using the same logic from Part Three. Nothing here is a client's real list. It's a defensible starting point, not a finished audit.

Interactive Artifact
Build your starter list
Choose a vertical to see a seeded negative keyword list with suggested level, match type, and reasoning for each term.
TermLevelMatch typeReason
Part Four

What Actually Changed

No dollar figures here, on purpose. Directional framing, because the shape of the outcome is more honest than a number that can be reverse-engineered to an account.

2
Budget got redirected toward a segment that was actually working
A competitor-adjacent audience that could have been blanket-excluded got a dedicated landing page built for exactly that intent instead. Separately, once a comparison across platforms showed one channel converting while the other wasn't in a comparable window, budget shifted toward the channel already showing signal.
3
The conversion-rate story stayed honest, which means it stayed complicated
Several windows right after negatives went live still showed no conversions, which is exactly why the underlying measurement setup stayed a live, separately-tracked suspect rather than getting waved off. This discipline is necessary triage that kept recurring waste from re-accumulating, full stop. A conversion problem with its own, different root cause got its own, separate track.
One validation layer this account hadn't leaned on yet: on-site behavior. Search-term and Quality Score signals show what happened in the auction, whether a term got clicked and at what cost. They don't show what happened after the click landed. A term that clears every paid-search filter can still send visitors who leave immediately or never engage, the same population-mismatch problem this piece keeps circling back to, just visible from the other side of the click. Google Analytics engagement rate and bounce rate are the on-site half of that same question, and they're substantial enough to earn their own entry in this series rather than a paragraph here.

The Finding Nobody Shows You.

"We reduced wasted spend" summarizes a finding without ever showing it. The actual finding is a mechanism: which term, sourced how, caught on what cadence, scoped at which level, and changed what, specifically, when you looked again. Pick your own account's Dynamic Search Ads search terms report, or the equivalent in Performance Max, and add the Page URL column before you look at cost. That's usually where the real seed is hiding.

ShareLinkedIn X