{"id":1016,"date":"2026-09-01T13:44:21","date_gmt":"2026-09-01T17:44:21","guid":{"rendered":"https:\/\/thedoctorads.com\/blog\/google-ads-negative-keyword-conflicts-measured"},"modified":"2026-09-01T13:44:21","modified_gmt":"2026-09-01T17:44:21","slug":"google-ads-negative-keyword-conflicts-measured","status":"publish","type":"post","link":"https:\/\/thedoctorads.com\/blog\/google-ads-negative-keyword-conflicts-measured","title":{"rendered":"Bid and Blocked: 31 of 91 Accounts Target and Exclude the Same Search"},"content":{"rendered":"<div class=\"tldr\">\n<p><strong>TL;DR abstract.<\/strong> The idea is old and well-tooled. Negative keyword conflicts, where an account targets a search and blocks it at the same time, have their own scripts and audit checks, and <a href=\"https:\/\/adalysis.com\/blog\/find-fix-common-negative-keyword-problems-ppc-accounts\/\" rel=\"noopener\" target=\"_blank\">Adalysis was writing up how to find them in 2017<\/a>. What none of that comes with is a rate: nobody has published how often it actually happens. Google labels the situation itself: in the search terms report, a term carries a targeting status whose value means, in Google&#8217;s own words, that the term &#8220;has been both added and excluded&#8221;.<\/p>\n<p>We read <strong>9,193,221<\/strong> search term rows across <strong>91<\/strong> accounts and counted that label. It sits on <strong>2,212<\/strong> rows, which collapse to <strong>1,490<\/strong> distinct term and ad group cases, in <strong>31 of the 91 accounts<\/strong>. Those rows carry <strong>$33,931<\/strong> of recorded spend, but the file mixes reporting windows: <strong>$20,494 of that money is from the 2023 window<\/strong>, and in the most recent window it is <strong>12 accounts and $1,662<\/strong>. Read the headline as &#8220;at least once in the file&#8221;, not as &#8220;a third of accounts are on fire today&#8221;. The count is also a floor, because a negative that works perfectly keeps its search out of the report entirely.<\/p>\n<\/div>\n<aside class=\"key-stat\">\n<p><strong>31 of 91 accounts have at least one search term Google flagged as both added and excluded. In the most recent reporting window it is 12 accounts of the 63 with data, on $1,662 of spend.<\/strong><\/p>\n<p class=\"source-line\">Method basis: 2,212 flagged rows, 1,490 distinct term and ad group cases, from 9,193,221 search term rows across reporting windows 2023 to 2026H1, snapshot July 2026. Source: Doctor Ads Profit Forensics.<\/p>\n<\/aside>\n<p><strong>The search terms report has a column that flags a search added as a keyword and excluded as a negative. Almost nobody sorts by it.<\/strong><\/p>\n<h2>Google marks it for you, in one field<\/h2>\n<p>The search terms report carries a status on every row saying whether the term is one you target, one you exclude, both, or neither. In the API the field is <em>search_term_targeting_status<\/em>, and its values are documented plainly: added means the term is a keyword, excluded means it matches a negative keyword, and <a href=\"https:\/\/developers.google.com\/google-ads\/api\/reference\/rpc\/v20\/SearchTermTargetingStatusEnum.SearchTermTargetingStatus\" rel=\"noopener\" target=\"_blank\">added and excluded means the term &#8220;has been both added and excluded&#8221;<\/a>.<\/p>\n<p>The flag is first party and it is old. What has been missing is not the column, it is the prevalence. Conflict checkers infer collisions by comparing your keyword list against your negative list. We are not inferring: we are counting rows where the platform itself recorded both states on a search that actually ran.<\/p>\n<h2>A third of accounts, at least once, and 17 rows in a typical one<\/h2>\n<p>Across 91 accounts and 9,193,221 search term rows, the label appears on <strong>2,212<\/strong> rows in <strong>31<\/strong> accounts, which is <strong>34.1%<\/strong> of the portfolio.<\/p>\n<p>Two corrections to that number before anybody quotes it. First, rows are not cases: the same term in the same ad group appears once per reporting window and per matched keyword, so the 2,212 rows collapse to <strong>1,490<\/strong> distinct term and ad group cases across 204 campaigns, or 1,153 if you ignore the window entirely. Second, &#8220;has this&#8221; is doing a lot of work: <strong>9 of the 31 affected accounts have one or two flagged rows in total<\/strong>, across three and a half years of reporting windows. For them this is a curiosity, not a condition.<\/p>\n<p>Inside an affected account the median is <strong>17<\/strong> rows, with the middle half between 2 and 46, and one account holding <strong>1,165<\/strong>.<\/p>\n<figure class=\"chart\"><img decoding=\"async\" src=\"https:\/\/thedoctorads.com\/blog\/wp-content\/uploads\/2026\/09\/tda-w7-bid-and-blocked.png\" alt=\"In 31 of 91 Google Ads accounts, search terms are flagged by Google as both added as a keyword and excluded by a negative: median 17 such rows per affected account, middle half between 2 and 46, maximum 1,165.\" title=\"\"><figcaption><strong>31 of 91 accounts carry at least one search flagged as both targeted and excluded.<\/strong> Nine of those 31 have one or two rows in the whole file; the median affected account has 17. Source: Doctor Ads Profit Forensics.<\/figcaption><\/figure>\n<h2>The money, and which year it belongs to<\/h2>\n<p>The flagged rows carry <strong>$33,931<\/strong> of recorded spend and <strong>2,744.7<\/strong> conversions. That total is a lifetime in the file rather than a current bill, and the split matters more than the sum.<\/p>\n<table>\n<thead>\n<tr>\n<th>Reporting window<\/th>\n<th>Flagged rows<\/th>\n<th>Accounts flagged<\/th>\n<th>Accounts with any data<\/th>\n<th>Recorded spend<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td>2023<\/td>\n<td>728<\/td>\n<td>15<\/td>\n<td>48<\/td>\n<td>$20,494<\/td>\n<\/tr>\n<tr>\n<td>2024<\/td>\n<td>468<\/td>\n<td>16<\/td>\n<td>61<\/td>\n<td>$7,448<\/td>\n<\/tr>\n<tr>\n<td>2025<\/td>\n<td>738<\/td>\n<td>14<\/td>\n<td>72<\/td>\n<td>$4,327<\/td>\n<\/tr>\n<tr>\n<td>2026H1<\/td>\n<td>278<\/td>\n<td>12<\/td>\n<td>63<\/td>\n<td>$1,662<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p>Sixty percent of the money sits in the 2023 window. In the most recent window the flag appears in <strong>12 of the 63<\/strong> accounts that have rows there, on <strong>$1,662<\/strong>. Whether that decline is accounts getting tidier, or reporting windows getting shorter, this snapshot cannot say.<\/p>\n<p>Widen the class by one step and the numbers grow: search terms that are excluded now and converted while they ran come to <strong>3,795<\/strong> rows across <strong>41<\/strong> accounts, carrying <strong>$58,621<\/strong> of spend, <strong>9,688<\/strong> conversions and <strong>$134,295<\/strong> of conversion value.<\/p>\n<p>Neither figure is a loss estimate, and we are not going to dress it as one. What these rows are is a set of places where two instructions coexist in the same ad group. Whether that was a routing choice, a shared list applied across a campaign that also holds the keyword, or a leftover after a cleanup, is not in the flag.<\/p>\n<h2>Why this count is a floor, and why the tense matters<\/h2>\n<p>Two limits that belong in the body rather than a footnote, because both change what the number means.<\/p>\n<p><strong>The report only contains searches that served.<\/strong> A negative keyword that is working perfectly stops the search before it happens, so the term never reaches the report and is never counted here. Every collision we can see is one where the block did not stop that serving. The true number of keyword and negative collisions is higher than 1,490, and no report will show it directly.<\/p>\n<p><strong>The status is current, the metrics are historical.<\/strong> The flag describes the account as it stands at the pull. The clicks, cost and conversions on the row describe when the search ran, and this file mixes reporting windows from 2023 to the first half of 2026. So we cannot say the negative was live at the moment of the click. Some of these rows are a live collision. Some are a later exclusion sitting on older results. The table does not separate them, so no claim on this page is made about the two instructions being live at the same moment.<\/p>\n<h2>When this does not apply<\/h2>\n<p><strong>You deliberately route traffic between campaigns.<\/strong> Adding a term as a keyword in one campaign and excluding it in another is a legitimate technique. It is also not what this flag catches: at the grain of this data, that arrangement produces an added row in one campaign and an excluded row in the other, not a single row carrying both. Sculpting inside a campaign is a different matter and can produce a flagged row on purpose, so check a sample by hand before acting on a count.<\/p>\n<p><strong>You just added a batch of negatives.<\/strong> Right after a cleanup, historical rows carry the excluded flag for terms that ran before it. That is the system working, not a conflict.<\/p>\n<p><strong>Your account is mostly Performance Max or Shopping.<\/strong> The keyword and negative relationship works differently there, and the search terms available to you are already partial, which is a separate problem covered in our piece on <a href=\"https:\/\/thedoctorads.com\/blog\/google-ads-other-search-terms-share\">the unnamed row in the search categories report<\/a>.<\/p>\n<h2>How to find yours in about five minutes<\/h2>\n<ol>\n<li>Open the search terms report and set the date range to <strong>start after your last batch of negative keywords<\/strong>. This is the step that separates a live collision from a tidy up you already did.<\/li>\n<li>Add the column that shows whether a term was added or excluded, then filter it to the value that means both.<\/li>\n<li>Sort by cost. Spend inside that window is a live disagreement. Spend before your last cleanup is not.<\/li>\n<li>For each row, decide which instruction you meant, and remove the other. Do not leave both in place because one of them &#8220;is not doing any harm&#8221;.<\/li>\n<\/ol>\n<h2>Key takeaways<\/h2>\n<ul>\n<li>Google flags the contradiction itself: a search term status meaning the term &#8220;has been both added and excluded&#8221;.<\/li>\n<li>It appears in <strong>31 of 91<\/strong> accounts, <strong>34.1%<\/strong>, on <strong>2,212<\/strong> rows that collapse to <strong>1,490<\/strong> distinct term and ad group cases.<\/li>\n<li>Read that as &#8220;at least once in the file&#8221;: <strong>9 of the 31<\/strong> affected accounts have one or two rows in total.<\/li>\n<li>The <strong>$33,931<\/strong> of recorded spend is a lifetime figure, <strong>$20,494<\/strong> of it in the 2023 window; the most recent window shows <strong>12 accounts and $1,662<\/strong>.<\/li>\n<li>The count is a floor, because a negative that blocks a search completely keeps that search out of the report.<\/li>\n<\/ul>\n<h2>Researcher&#8217;s take<\/h2>\n<p>My first version of this piece said a third of accounts are paying for searches they block, in the present tense, and the data would not carry that sentence. Sixty percent of the money is from 2023, and nine of those 31 accounts have one or two rows in the whole file. What survives is smaller and still worth your afternoon: in a professionally managed portfolio, a third of accounts have at least once ended up targeting and excluding the same search, and the largest affected account runs to 1,165 rows. The flag has been sitting in the report the entire time. What was missing was anybody sorting by it and saying out loud how common it is.<\/p>\n<p><em>Igor Ivitskiy, Doctor Ads<\/em><\/p>\n<h2>Method<\/h2>\n<p>Data statement v.2026.09. Source: the Google Ads search terms report for 91 accounts in a managed portfolio, covering reporting windows from 2023 to the first half of 2026, taken from one snapshot dated 10 July 2026. Unit of analysis is one search term row within its reporting window, campaign and ad group context. Total rows 9,193,221. Accounts are pseudonymised and no search term text, account, brand or vertical is published.<\/p>\n<p>Definition. A row counts as flagged when the platform&#8217;s own targeting status field records the term as both added and excluded. We did not reconstruct match logic and did not compare keyword lists against negative lists, so no inference of ours enters the count. Because the same term and ad group can appear in more than one reporting window and against more than one matched keyword, we report both the raw row count (2,212) and the distinct term and ad group case count (1,490 with window, 1,153 without).<\/p>\n<p>Selection note. This is an agency managed portfolio, not a random sample of advertisers. If anything it should understate the problem relative to unmanaged accounts, since somebody is actively working on these.<\/p>\n<p>Limitations. Three, all cutting against the finding, and all stated in the body rather than hidden here: the report contains only searches that served, so effective blocks are invisible and the count is a lower bound; the status is current while the metrics are historical across mixed windows; and the flag cannot separate deliberate ad group sculpting from accidental collision without opening individual rows.<\/p>\n<p>Changelog. First published September 2026. Recomputed quarterly against the live claim registry.<\/p>\n<h2>What to read next<\/h2>\n<ul>\n<li><a href=\"https:\/\/thedoctorads.com\/blog\/google-ads-duplicate-negative-keywords\">Duplicate negative keywords<\/a>, on why the exclusion pile gets big enough for collisions to happen.<\/li>\n<li><a href=\"https:\/\/thedoctorads.com\/blog\/google-ads-change-history-what-gets-changed\">What actually gets changed in a Google Ads account<\/a>, the census this pack came from.<\/li>\n<li><a href=\"https:\/\/thedoctorads.com\/blog\/broad-match-vs-exact-match-cost-per-conversion\">Broad match against exact match on cost per conversion<\/a>, if you are reviewing match types at the same time.<\/li>\n<li>The wider <a href=\"https:\/\/thedoctorads.com\/blog\/wasted-spend\">wasted spend<\/a> file.<\/li>\n<\/ul>\n","protected":false},"excerpt":{"rendered":"<p>Google flags search terms that are both added as a keyword and excluded by a negative. Across 9,193,221 rows in 91 accounts the flag appears in 31 of them, on 1,490 distinct cases.<\/p>\n","protected":false},"author":0,"featured_media":1015,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[18],"tags":[],"class_list":["post-1016","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-account-management","generate-columns","tablet-grid-50","mobile-grid-100","grid-parent","grid-33"],"_links":{"self":[{"href":"https:\/\/thedoctorads.com\/blog\/wp-json\/wp\/v2\/posts\/1016","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/thedoctorads.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/thedoctorads.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"replies":[{"embeddable":true,"href":"https:\/\/thedoctorads.com\/blog\/wp-json\/wp\/v2\/comments?post=1016"}],"version-history":[{"count":0,"href":"https:\/\/thedoctorads.com\/blog\/wp-json\/wp\/v2\/posts\/1016\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/thedoctorads.com\/blog\/wp-json\/wp\/v2\/media\/1015"}],"wp:attachment":[{"href":"https:\/\/thedoctorads.com\/blog\/wp-json\/wp\/v2\/media?parent=1016"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/thedoctorads.com\/blog\/wp-json\/wp\/v2\/categories?post=1016"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/thedoctorads.com\/blog\/wp-json\/wp\/v2\/tags?post=1016"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}