Search Term Match Source in Google Ads, and Its Limits

In a Search campaign, the search terms report gives you two pieces of match source: the keyword that matched the query, and the match type of that match. Both are useful for deciding where to put a negative and how wide to make it. Neither is available in Performance Max, and the matched keyword is empty in Shopping, because those campaigns have no keywords to match.
The common mistake is reading the match type column as "the match type of my keyword". It is not. It describes how the query matched, close variants included, and the API even splits out near-exact and near-phrase where the interface does not. If you write negatives based on that column alone, you will block wider than you meant to.
What the search term match source is, and where it exists
Open the search terms report on a Search campaign and you get, next to each query, the keyword that matched it and the match type of that match. That pairing is the match source. It answers the only question that matters when you are about to write a negative: which part of my account paid for this?
In the API, the ad-group-level search term resource carries the matched keyword as a segment — the keyword text and the ad group criterion behind it — plus a match type field. The campaign-level resource, campaign_search_term_view, is the one that covers Search, Shopping and Performance Max together. It gives you the query and the spend. It does not give you a keyword, because for two of those three campaign types there is no keyword to give.
So the honest scope of the field is narrower than people assume:
- Search: matched keyword and match type, both populated.
- Standard Shopping: search terms, no matched keyword. Shopping matches on the product feed, not on keywords you wrote.
- Performance Max: search terms in the API, no keyword, no asset group attribution, no signal about what triggered the match.
- Display, Video, App: no search terms at all. There is nothing to attribute.
That last line surprises people who go looking for a Display search terms report. It does not exist, and no tool can build one. If you are trying to account for every dollar in the account, start with the campaigns that actually report queries and treat the rest separately.
The match type column is not your keyword's match type
This is the single biggest misreading of the field. The match type column tells you how the query matched the keyword. It does not tell you how the keyword is configured, and the two diverge constantly because of close variants.
A row that says "exact match" does not mean the user typed your keyword. It means the query matched an exact keyword — including as a close variant. Plurals, misspellings, reordered words, implied intent. Your exact keyword [emergency plumber] can appear in that report next to emergency plumbers near me, labelled exact match. Nothing is broken. That is how exact has worked for years.
The API is slightly more honest than the interface here. The match type enum returns NEAR_EXACT and NEAR_PHRASE alongside EXACT, PHRASE and BROAD. If you pull the report through the API or a script, you can separate "the user typed my keyword" from "Google decided this was the same thing". If you only ever look at the interface, you cannot — those near-variants are folded into the plain labels.
That distinction is worth pulling once, even if you never automate it. In the accounts we audit, a meaningful slice of the spend sitting under exact-match rows is near-exact, not exact — often a fifth to a third of it in accounts with long-tail keywords. It is not waste by default. But it is the part of your "tightly controlled exact match campaign" that Google is controlling, not you. Why Google shows you search terms you never asked for goes further into the mechanics.
Why one search term appears three times with three different keywords
A single query can be matched by several keywords in several ad groups, sometimes in several campaigns. The report gives you one row per keyword-and-ad-group pairing. So the same term appears more than once, each row with its own cost, and the number you see in any single row is not what the term cost you.
Here is a shape we see constantly. The query free crm software in a B2B account over 30 days:
- broad
crm software, Ad group A — $150, 0 conversions - phrase
"crm software", Ad group B — $60, 0 conversions - broad
sales crm, Ad group C — $30, 0 conversions
The term cost $240. If you sort the report by cost and look at the top row, you see $150 and file it under "annoying but small". Deduplicate first, and it jumps to the top of your list.
This also changes what you do next. Three matched keywords in three ad groups means an ad-group negative fixes a third of the problem. You need the campaign level, or a shared list across the campaigns involved. The match source is what tells you that — it is the only field in the report that shows you the spread.
The practical version: export the search terms report, pivot cost and conversions by query, and keep the matched keyword as a secondary column so you can see how many distinct keywords each query is hanging off. Terms attached to one keyword are a keyword problem. Terms attached to five are a theme problem, and they deserve a campaign-level or list-level negative. Our audit checklist has this as one of the hour-long passes.
Shopping and Performance Max have no matched keyword at all
For Standard Shopping, the matched keyword column is empty and always will be. Shopping campaigns have no positive keywords. Google matches the query against your product data — title, description, attributes, category. So the "source" of a Shopping search term is a product, not a keyword, and the report does not name it either.
You still get the query and the cost, and Shopping accepts negative keywords and shared negative lists exactly like Search does. What changes is the diagnosis. When nike running shoes size 11 is burning budget in a Shopping campaign, you cannot pause a keyword. You either add a negative or fix the feed. Shopping negatives behave differently enough that it is worth reading before you bulk-apply a list built for Search.
Performance Max is the harder case. campaign_search_term_view does report Performance Max search terms — that is real, and it is more than the interface gives you, which groups queries into categories rather than listing them. But the row is the query and the metrics. No keyword. No asset group. No indication of whether the query came from your search themes, your feed, your final URLs or your audience signals. Google does not expose that field to anyone, through any surface.
Which means the whole workflow you use in Search — see the matched keyword, judge whether the keyword is the problem, decide between tightening the keyword or adding a negative — collapses to one option in Performance Max. You add the negative, or you live with the term. Nothing else. That is also why the 10,000 campaign-level negative cap and the absence of shared lists matter more than they sound: every Performance Max campaign has to carry its own list, and you cannot economise by attributing waste to one asset group and fixing it there. If you want the wider picture, where Performance Max wasted spend hides covers the parts of the campaign that report nothing at all.
What the matched keyword changes about the negative you write
The match source answers two decisions: where the negative goes, and how wide it should be.
Where. If one keyword in one ad group is pulling the term, an ad-group negative is the surgical fix and it leaves the rest of the account alone. That matters when the same word is valuable elsewhere. free is poison in an ad group selling paid licences and perfectly fine in the ad group for your free trial. Push it to the campaign and you break the trial ad group. The matched keyword is what tells you the difference.
If the term matched keywords across three ad groups, go campaign level. If it matched across campaigns, use a shared list — except for Performance Max, which does not accept shared lists and needs the negative added campaign by campaign.
How wide. The matched keyword tells you which word did the damage. emergency plumber matched plumber salary? The keyword is doing its job; the query is a job search. Block the word salary as a phrase negative and you clear a whole family of queries — plumber salary uk, average plumber salary, plumber salary per hour — in one line. Job seeker traffic is one of the cleanest wins in most service accounts precisely because the vocabulary is so consistent.
But match the negative's match type to what you actually know. Exact negatives block one query and nothing else. Phrase negatives block the phrase in order. Broad negatives block any query containing all the words in any order, and they behave unpredictably once you mix them with your positive match types — a broad negative can knock out traffic you never intended to touch. Negative match types do not mirror positive match types, and the difference bites hardest when you are working fast from a search terms export.
A rule that holds up: if the matched keyword was broad, you are probably looking at a theme and a phrase negative is right. If the matched keyword was exact and the query was a near-exact variant, an exact negative on that one variant is usually enough — widening it will cut into the keyword you are still paying for on purpose.
Where the match source quietly misleads you
Three places.
It only covers the queries Google shows you. The search terms report is filtered. Queries under a privacy threshold do not appear, and the unattributed spend sits in a gap between your campaign totals and the sum of your search terms rows. So the match source is accurate about the terms you can see and silent about the ones you cannot. In the accounts we audit, the share of Search spend with no visible query is commonly in the low double digits as a percentage, and higher in small or new accounts. What the search terms report hides is the longer version.
It tempts you to blame the keyword. A broad keyword that produced twenty bad queries looks like the villain. Sometimes it is. Often it also produced the account's cheapest conversions, and pausing it costs more than the twenty negatives would have. The match source tells you what matched. It does not tell you whether the keyword is net positive. Check the keyword's own cost and conversions before you touch it, not just the rows you are annoyed about.
It makes competitor terms look like a keyword problem. Your keyword matched [competitor name] alternative — fine, but the decision about whether to keep bidding on that is a strategy decision, not a match-source decision. Competitor searches are worth a separate call rather than a reflex negative.
And one thing the field genuinely cannot do: explain Performance Max. No amount of staring at campaign_search_term_view will tell you why a PMax campaign decided your ad belonged on plumber training course. You can only see that it did, and how much it cost.
How to use the field in a routine, and where PPCleaner uses it
Weekly is enough for most accounts, daily for accounts spending over a few thousand dollars a day. The cadence question has an honest answer and it is not "every morning" for everyone.
The pass itself, in order:
- Pull the last 30 days of search terms, all Search and Shopping campaigns, with matched keyword, match type, cost and conversions.
- Pivot by query. Sum the cost across matched keywords. Sort by cost, zero conversions first.
- For each term above your threshold — roughly one to two times your target cost per acquisition is a reasonable line — look at the matched keyword count. One keyword, one ad group: ad-group negative. Several: campaign or shared list.
- Write the negative at the narrowest match type that covers the family of queries you actually want gone.
- Do Performance Max separately, from the API, and add negatives at campaign level because there is no other option.
That is three to five hours a month on a mid-sized account, and it is real work with real judgement in it. Whether that is your time or someone else's is a separate calculation.
PPCleaner reads campaign_search_term_view nightly, so it sees the same Search, Shopping and Performance Max terms you would. Where a matched keyword exists, it uses it — to decide whether a negative belongs at ad group or campaign level, and to avoid writing a negative that would cancel out a keyword still producing conversions. Where no matched keyword exists, which is every Shopping and every Performance Max row, it works from the query, the spend and the conversion history alone, and it places the negative at campaign level because that is the only level available.
Two limits worth stating plainly. PPCleaner never blocks a term that converted in the last 90 days, matched keyword or not — so a query that looks irrelevant but quietly pays will stay. And it cannot see what it is not shown: the terms below Google's reporting threshold are as invisible to us as they are to you. It reads search terms and writes negatives. It does not touch budgets, bids, ads or keywords, and every block can be reversed in one click for 90 days.
If you want to know what the whole exercise is worth before you start, work out the wasted spend number honestly rather than taking the sum of every zero-conversion row as gospel. And keep an eye on the size of the list you are building — there is a point where more negatives start costing you.
Frequently asked
Why is the matched keyword column blank for some of my search terms?
Because the campaign has no keywords. Standard Shopping matches queries against your product feed, and Performance Max matches on assets, feed, search themes and audience signals. Both report search terms, neither reports a keyword. The column is only populated for Search campaigns.
Does the match type column show my keyword's match type?
No. It shows how the query matched. An exact keyword can produce rows labelled exact match for queries that are close variants, not the keyword itself. The API splits these out as NEAR_EXACT and NEAR_PHRASE; the Google Ads interface folds them into the plain labels.
Can I find out which search theme or asset triggered a Performance Max search term?
No. Google does not expose that attribution through the interface or the API. You get the query and its metrics from campaign_search_term_view, and nothing about what caused the match. The only lever is a campaign-level negative keyword, up to the 10,000 cap, since Performance Max does not accept shared negative lists.
Should I put the negative in the ad group with the matched keyword, or at campaign level?
Ad group if one keyword in one ad group produced the term and the word is valuable elsewhere in the campaign. Campaign level if several ad groups matched the same query, or if the word has no legitimate use anywhere in that campaign. The matched keyword column is what tells you which case you are in.
Why does the same search term appear several times in my export?
One row per matched keyword and ad group. A query matched by three keywords appears three times, each with a share of the cost. Always pivot by query and sum the cost before you decide whether a term is worth acting on — the top row alone understates it.
Does PPCleaner use the matched keyword when it writes negatives?
Where one exists, yes — to choose the level at which the negative is added and to avoid cancelling a keyword that still converts. For Shopping and Performance Max there is no matched keyword, so it works from the query, the spend and the conversion history, and adds at campaign level. Any block can be undone in one click for 90 days.
Clean your search terms. Save time and money.
Every night, PPCleaner reviews the searches your campaigns actually paid for, groups them by intent, and excludes the ones that never convert. No spend threshold to wait for, nothing touched but negatives — and one click undoes any of it.
Start 7 days freeSearch, Shopping and Performance Max · Cancel in one click
Related articles

Google Ads Search Terms Hidden by Privacy, and What to Do
Part of every search campaign's spend goes to queries Google never shows you. Here is how to measure that gap in your own account, and how negatives built from the terms you can see still cut waste in the ones you can't.

Close Variants in Google Ads and Why Exact Isn't Exact
Most close variants are harmless plurals and typos, but a few quietly swap your buyer for someone else. This guide shows how to spot those few and whether each needs a negative keyword or a keyword change.

E-commerce Google Ads Search Terms That Drain Budget
Online retail attracts a very specific kind of bad traffic: people researching, people hunting a spare part you don't stock, people who already bought. Here is how each pattern shows up in the search terms report, and what to do about it.
