{"id":1010,"date":"2026-09-01T13:39:34","date_gmt":"2026-09-01T17:39:34","guid":{"rendered":"https:\/\/thedoctorads.com\/blog\/google-ads-change-history-what-gets-changed"},"modified":"2026-09-14T10:53:55","modified_gmt":"2026-09-14T14:53:55","slug":"google-ads-change-history-what-gets-changed","status":"publish","type":"post","link":"https:\/\/thedoctorads.com\/blog\/google-ads-change-history-what-gets-changed","title":{"rendered":"What Actually Gets Changed in a Google Ads Account: 91.9% of 63,252 Edits Touched a Criterion"},"content":{"rendered":"<div class=\"tldr\">\n<p><strong>TL;DR abstract.<\/strong> Google keeps an audit log of every edit made to an advertising account, and exposes the last 30 days of it through an API. We pulled it for <strong>42<\/strong> managed accounts and read <strong>63,252<\/strong> changes made in the 28 days to 9 July 2026. As far as we can find, nobody has published a resource type census of this feed across a portfolio.<\/p>\n<p>Pooled, <strong>91.9%<\/strong> of those changes touched a criterion object: a keyword, a negative keyword, a location, an audience, or another targeting instruction. Ads and their variants took <strong>877<\/strong> changes, or <strong>1.4%<\/strong> of what this feed records. That pool is not a typical account, and the most important thing in the data is who produced it: <strong>63.6%<\/strong> of the events came from the API, automated rules, recommendations or an unclassified client, and those streams are <strong>98.6%<\/strong> criteria. The web interface, the closest thing to hands in this table, is <strong>80.5%<\/strong> criteria and <strong>3.6%<\/strong> ads. Either way the log is a list maintenance document. It is not a census of hours, it does not see Google Ads Editor, and it cannot tell you whether creative is the remaining performance lever.<\/p>\n<\/div>\n<aside class=\"key-stat\">\n<p><strong>91.9% of 63,252 logged changes touched a criterion object; in the median account, 90.5%. Ads took 1.4% of what this feed records, and the feed does not capture Google Ads Editor.<\/strong><\/p>\n<p class=\"source-line\">Method basis: Google Ads change_event feed, 12 June to 9 July 2026, 42 accounts under management. Source: Doctor Ads Profit Forensics.<\/p>\n<\/aside>\n<p><strong>Smart Bidding took the bid layer. The mutate traffic that was left <a href=\"https:\/\/thedoctorads.com\/blog\/google-ads-one-responsive-search-ad-per-group\">did not move to ads, and it did not move to budgets<\/a>. It stayed in the list.<\/strong><\/p>\n<p>There is a reasonable argument going around in modern paid search, and it is narrower than the slogan version. Bidding is automated, so the scarce human hours should go where the machine cannot help: offers, creative, landing pages, the business behind the ads. That is a claim about where attention <em>should<\/em> go, and it is a good one.<\/p>\n<p>It is also hard to check, because attention is not logged. What is logged is mutation. Every edit inside an account is written to a change log that the interface calls change history and the API calls <em>change_event<\/em>. It records what object was touched, when, whether the change created, updated or removed something, and which client it came from.<\/p>\n<p>So we read it: 42 accounts under active management, every change event the API would return, 28 days in June and July 2026. That is 63,252 individual mutations. This is what they touched, and, just as importantly, what produced them.<\/p>\n<h2>Nine changes in ten touched a criterion, not an ad<\/h2>\n<p>Group the 63,252 events by object and the distribution is not close. Campaign level criteria took 30,742 changes. Ad group level criteria took another 27,356. Together that is <strong>58,098 changes, 91.9% of everything in the feed for the month<\/strong>. Read that as the pool rather than the typical account: the per account picture, and the spread behind it, is two sections down.<\/p>\n<p>A criterion is the platform&#8217;s word for a targeting instruction: a keyword you bid on, a negative keyword you exclude, a location, an audience, a placement, an ad schedule. It is the account&#8217;s list layer. One caution that matters for everything below: this feed reports the criterion <em>bucket<\/em> and does not break it into subtypes, so we cannot tell you how much of the 91.9% is keywords, how much is negatives, and how much is geography or audiences.<\/p>\n<figure class=\"chart\"><img decoding=\"async\" src=\"https:\/\/thedoctorads.com\/blog\/wp-content\/uploads\/2026\/09\/tda-w7-where-changes-go.png\" alt=\"Of 63,252 change events logged across 42 Google Ads accounts in 28 days, 91.9% touched criteria such as keywords, negative keywords and targeting, while ads took 1.4%, assets 3.7% and budgets 0.5%.\" title=\"\"><figcaption><strong>Criteria took 91.9% of all logged changes; in the median account, 90.5%.<\/strong> Ads took 1.4% of what this feed records, and the feed does not capture Google Ads Editor. Bid adjustments took eight events in the whole portfolio, all of them in a single account. Source: Doctor Ads Profit Forensics.<\/figcaption><\/figure>\n<p>We are going to call this <strong>the Criterion Monoculture<\/strong>, and we are going to keep the name pinned to what it describes: the mutate log, not the working week.<\/p>\n<h2>Two thirds of the log did not come through the interface<\/h2>\n<p>This is the section that changes how every other number here should be read, and it comes from a field most analyses throw away: the client that submitted the change.<\/p>\n<p><strong>40,259 of the 63,252 events, or 63.6%, came from the API, automated rules, recommendations or an unclassified client.<\/strong> Those streams are <strong>98.6%<\/strong> criteria, and they touched 76 ads in the entire month. A bulk load of negative keywords produces one event per row in a few seconds, and a third party tool submitting a person&#8217;s decision arrives here as API traffic too. Either way, an event count is not a decision count.<\/p>\n<figure class=\"chart\"><img decoding=\"async\" src=\"https:\/\/thedoctorads.com\/blog\/wp-content\/uploads\/2026\/09\/tda-w7-who-changed-it.png\" alt=\"63.6% of 63,252 Google Ads change events came from the API, automated rules, recommendations or an unclassified client and are 98.6% criteria, while the 22,303 events from the web interface are 80.5% criteria and 3.6% ads.\" title=\"\"><figcaption><strong>Two thirds of the events arrived through the API, automated rules, recommendations or an unclassified client, and those are almost purely criteria.<\/strong> The web interface, the closest proxy for a person at a keyboard, is 80.5% criteria and 3.6% ads. Source: Doctor Ads Profit Forensics.<\/figcaption><\/figure>\n<p>Look only at the web interface, which is the closest this table gets to a person at a keyboard: <strong>22,303 events across 34 accounts, 80.5% criteria and 3.6% ads<\/strong>. That is roughly <strong>22 criterion mutations for every ad mutation<\/strong>, against 66 to 1 in the raw pool.<\/p>\n<p>So the honest version of the headline is not that humans ignore ads at 66 to 1. It is that both the machines and the people in these accounts spend most of their mutations in the list layer, and the machines do it almost exclusively.<\/p>\n<aside class=\"key-stat\">\n<p><strong>Two thirds of this change log arrived through the API, automated rules, recommendations or an unclassified client rather than the interface. Look only at interface events and it is still 80.5% targeting changes against 3.6% ad changes.<\/strong><\/p>\n<p class=\"source-line\">40,259 non interface events at 98.6% criteria; 22,303 web interface events across 34 accounts. Source: Doctor Ads Profit Forensics.<\/p>\n<\/aside>\n<h2>The median account is a list shop. A quarter of accounts are not.<\/h2>\n<p>A pooled percentage can be manufactured by one busy account, so we recomputed it one account at a time.<\/p>\n<p>Across the 30 accounts with at least 20 logged changes, <strong>the median account spent 90.5% of its changes on criteria<\/strong>. The middle half of accounts sat between <strong>45.5% and 99.3%<\/strong>.<\/p>\n<p>That spread is the part to keep. Closeness of the median to the pool is not closeness of accounts to each other. Eight of those 30 accounts are below 50% criteria, and two of them logged no criterion changes at all in the window. <strong>The monoculture is the middle and the pool, not a law that holds everywhere.<\/strong><\/p>\n<h2>More than half of all changes create something new<\/h2>\n<p>The second cut is about the verb rather than the object.<\/p>\n<p>Of the 63,252 events, <strong>35,278 were creations<\/strong>, which is <strong>55.8%<\/strong>. Removals came to 14,797, or 23.4%, and edits to something that already existed came to 13,177, or 20.8%.<\/p>\n<figure class=\"chart\"><img decoding=\"async\" src=\"https:\/\/thedoctorads.com\/blog\/wp-content\/uploads\/2026\/09\/tda-w7-create-vs-tune.png\" alt=\"Of 63,252 Google Ads change events, 55.8% created a new object, 23.4% removed one and 20.8% updated an existing one, showing that logged account work is mostly addition rather than refinement.\" title=\"\"><figcaption><strong>Only one logged change in five adjusts something that already exists.<\/strong> This is a mix of verbs in one 28 day window, not a measured net growth of account objects. Source: Doctor Ads Profit Forensics.<\/figcaption><\/figure>\n<p>Read carefully, that is a verb mix and not a growth rate. We are not measuring whether accounts got bigger, and a single scripted burst of creations moves this percentage. What it does say is that the dominant logged activity is adding a row rather than tuning one.<\/p>\n<h2>One documented reason the list layer stays manual<\/h2>\n<p>We can point at a mechanism that would keep part of the criterion bucket permanently hand fed, and we want to be exact about how much it explains, which is: some unknown share of it.<\/p>\n<p>Negative keywords do not behave like <a href=\"https:\/\/thedoctorads.com\/blog\/google-ads-keywords-zero-impressions\">the keywords you bid on<\/a>. Google&#8217;s help documentation is explicit that <a href=\"https:\/\/support.google.com\/google-ads\/answer\/2453972?hl=en\" rel=\"noopener\" target=\"_blank\">negative keywords do not match to close variants<\/a>. Casing and misspellings are handled for you. Plurals, singulars and synonyms are not, so each form has to be excluded by hand.<\/p>\n<p>Set that against a matching system built to find new phrasings, and the arithmetic only runs one way: variants arrive automatically, exclusions are added one literal string at a time.<\/p>\n<p>What we cannot do is tell you that this is what the 91.9% consists of. The feed does not split criterion subtypes, so the close variant rule is a documented contributor of unknown size, not the measured content of this log. The stock of negatives it produces is a separate measurement, and it is in the companion piece on <a href=\"https:\/\/thedoctorads.com\/blog\/google-ads-duplicate-negative-keywords\">duplicate negative keywords<\/a>: the median account carries 1,046 campaign level negatives, and about half of them are re-entries of a word the account already excludes elsewhere.<\/p>\n<h2>The spread: a quiet quarter at 12 changes, three accounts pinned at the API ceiling<\/h2>\n<p>The median account logged <strong>127 changes<\/strong> in the 28 days. The quieter quarter logged <strong>12 or fewer<\/strong>. The busier quarter logged <strong>732 or more<\/strong>, and three accounts came back at exactly 10,000, which is not a real count. It is the API&#8217;s row ceiling: <a href=\"https:\/\/developers.google.com\/google-ads\/api\/docs\/change-event\" rel=\"noopener\" target=\"_blank\">the change_event query is capped at 10,000 rows<\/a>.<\/p>\n<figure class=\"chart\"><img decoding=\"async\" src=\"https:\/\/thedoctorads.com\/blog\/wp-content\/uploads\/2026\/09\/tda-w7-events-per-account.png\" alt=\"Logged Google Ads changes per account over 28 days: median 127, lower quartile 12, upper quartile 732, with three accounts truncated at the API ceiling of 10,000 rows.\" title=\"\"><figcaption><strong>The median account logged 127 changes in 28 days; the quiet quarter logged 12 or fewer.<\/strong> The three highlighted bars stop at 10,000 because that is the API&#8217;s row limit, not because the accounts stopped there. Source: Doctor Ads Profit Forensics.<\/figcaption><\/figure>\n<p>Those three truncated accounts are the obvious way this could have been an artifact, so we removed them and recomputed across the remaining 39: the criterion share falls from 91.9% to <strong>88.4%<\/strong>. The pattern is not manufactured by the busiest accounts.<\/p>\n<h2>What this log does not show, stated plainly<\/h2>\n<p>Four limits, all of which cut against the finding rather than for it.<\/p>\n<p><strong>A change event is a mutation, not an hour.<\/strong> Bulk loading negatives produces one event per row in seconds. Rewriting a landing page, rebuilding a feed or arguing about an offer is zero events. Nothing in this design measures where human time went, and no count of rows can settle a claim about attention.<\/p>\n<p><strong>Google Ads Editor changes are missing.<\/strong> Google states that <a href=\"https:\/\/developers.google.com\/google-ads\/api\/docs\/change-event\" rel=\"noopener\" target=\"_blank\">fetching Editor changes through the change_event report is not supported<\/a>, and that the resource may not include every row the web interface shows. Bulk ad writing often happens in Editor, and so does bulk keyword loading, so the direction of that bias is unknown. The 1.4% for ads is 1.4% of what this feed records, and it should not be used as a fact about how much attention ads receive.<\/p>\n<p><strong>The criterion bucket is not decomposed.<\/strong> Keywords, negatives, locations, audiences, schedules and placements share two resource types. Any story that needs the split, including ours about exclusions, is a hypothesis here rather than a measurement.<\/p>\n<p><strong>The window is 28 days and these are managed accounts.<\/strong> The API requires the date filter to sit inside the last 30 days, so a quarterly creative refresh cannot appear. And this is an agency portfolio, where somebody is actively working, rather than a random sample of advertisers.<\/p>\n<h2>When this does not apply<\/h2>\n<p><strong>You run mostly Performance Max or Demand Gen.<\/strong> Those campaign types do not expose a keyword layer to maintain, and their work genuinely does sit in assets and feeds. If your spend is concentrated there, expect a different distribution and judge the campaigns on <a href=\"https:\/\/thedoctorads.com\/blog\/google-ads-other-search-terms-share\">what the reports actually return<\/a>.<\/p>\n<p><strong>Your account is new.<\/strong> While an account is still being built, heavy criterion creation is the build rather than a treadmill.<\/p>\n<p><strong>You are a single advertiser with one campaign and a tight brand term set.<\/strong> With a small surface, the variant queue never reaches the volume that makes this a management problem.<\/p>\n<h2>What to do with this on Monday<\/h2>\n<ol>\n<li><strong>Read your own log, split by client.<\/strong> Change history, last 30 days, and look at who made each change before you look at what changed. If most of your rows came from scripts or auto applied recommendations, you are reading a machine&#8217;s diary, not your team&#8217;s.<\/li>\n<li><strong>Put a cost on the human queue only.<\/strong> Take the web interface changes, multiply by the minutes each one takes end to end including the report that led to it. That number is your real cost of list work, and most owners have never seen it.<\/li>\n<li><strong>Attack duplication before volume.<\/strong> Adding negatives faster is not the fix. The same negative re entered in five campaigns is the measurable leak, and it is an afternoon&#8217;s work.<\/li>\n<li><strong>Do not read 91.9% as a pile of optional work.<\/strong> You cannot stop adding new variant negatives, because Google does not match negatives to close variants. That rule is in the help documentation, not in this log. You can stop duplicating them, which is the companion piece. And before you conclude that ads are neglected, open Editor and the asset library, because this feed will not settle it.<\/li>\n<\/ol>\n<h2>Key takeaways<\/h2>\n<ul>\n<li>Across 42 managed accounts and 63,252 logged changes in 28 days, <strong>91.9%<\/strong> touched a criterion object; in the median account, <strong>90.5%<\/strong>, with the middle half of accounts between 45.5% and 99.3%.<\/li>\n<li><strong>63.6%<\/strong> of the events came from the API, automated rules, recommendations or an unclassified client, and those streams are <strong>98.6%<\/strong> criteria. Most of the log did not come through the interface.<\/li>\n<li>On the web interface alone, criteria are <strong>80.5%<\/strong> and ads <strong>3.6%<\/strong>, about 22 to 1, against 66 to 1 in the raw pool.<\/li>\n<li><strong>55.8%<\/strong> of logged changes create a new object rather than adjust an existing one, which is a verb mix rather than a measured growth rate.<\/li>\n<li>A change event is a mutation and not an hour, Google Ads Editor is not captured, and the criterion bucket cannot be split into keywords, negatives and targeting in this feed.<\/li>\n<\/ul>\n<h2>Researcher&#8217;s take<\/h2>\n<p>My first draft of this study said the industry was wrong about automation, and the data did not support that sentence. What it supports is smaller and more useful. In this portfolio, 63.6% of logged events came through the API, automated rules, recommendations or an unclassified client, and those live almost entirely in the targeting layer. The interface remainder still spends four fifths of its edits there. That is not proof that nobody works on creative, because this feed cannot see creative work that happens outside it. It is proof that the list layer is where the mutations pile up, for people and scripts alike, and that anybody costing an account by counting changes is counting mostly API traffic, not hours.<\/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 <em>change_event<\/em> resource, pulled for 42 accounts in a managed portfolio, covering 12 June 2026 to 9 July 2026, a 28 day window set by the API&#8217;s own 30 day limit. Unit of analysis is one change event. Total events 63,252. Accounts are pseudonymised before analysis and no account, brand or vertical is named.<\/p>\n<p>Selection note. This is an agency managed portfolio, not a random sample of advertisers. Accounts arrive here because somebody chose to hire management for them, which skews the set toward larger spend and active work. Extrapolate to comparable managed accounts.<\/p>\n<p>Normalisation and weighting. Shares are reported pooled and as the median of per account shares with the interquartile range. Per account statistics use the 30 accounts with at least 20 logged events. Where the two views diverge we show both. Client type splits are reported separately rather than blended, because the pooled figure is dominated by API, rules, recommendations and unclassified clients.<\/p>\n<p>Robustness. The headline criterion share was tested by leaving one account out across the qualifying accounts, giving a per account median that stays between 89.0% and 91.9%. That upper bound coinciding with the pooled share is arithmetic coincidence, not a relationship between the two statistics. The counter hypothesis that the result is produced by the three accounts truncated at the API&#8217;s 10,000 row ceiling was tested by removing them, which gives 88.4%. The counter hypothesis that the criterion dominance is an artifact of automated clients was tested by isolating the web interface, which gives 80.5%.<\/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: what the list layer costs to maintain<\/a>, the direct companion to this piece.<\/li>\n<li><a href=\"https:\/\/thedoctorads.com\/blog\/google-ads-negative-keyword-conflicts-measured\">Bid and blocked<\/a>, on what happens when the exclusion pile collides with the keywords you pay for.<\/li>\n<li><a href=\"https:\/\/thedoctorads.com\/blog\/google-ads-audit-evidence-order\">The audit order that follows the money<\/a>, if you want to decide what to look at first.<\/li>\n<li><a href=\"https:\/\/thedoctorads.com\/blog\/google-ads-wasted-spend-concentration\">Where wasted spend actually concentrates<\/a>, and the wider <a href=\"https:\/\/thedoctorads.com\/blog\/wasted-spend\">wasted spend<\/a> file behind it.<\/li>\n<\/ul>\n","protected":false},"excerpt":{"rendered":"<p>A census of 63,252 change events across 42 managed accounts: 91.9% touched a keyword, negative or targeting setting, ads took 1.4%, and 63.6% of the log was written by scripts rather than people.<\/p>\n","protected":false},"author":0,"featured_media":1009,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[18],"tags":[],"class_list":["post-1010","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\/1010","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=1010"}],"version-history":[{"count":2,"href":"https:\/\/thedoctorads.com\/blog\/wp-json\/wp\/v2\/posts\/1010\/revisions"}],"predecessor-version":[{"id":1067,"href":"https:\/\/thedoctorads.com\/blog\/wp-json\/wp\/v2\/posts\/1010\/revisions\/1067"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/thedoctorads.com\/blog\/wp-json\/wp\/v2\/media\/1009"}],"wp:attachment":[{"href":"https:\/\/thedoctorads.com\/blog\/wp-json\/wp\/v2\/media?parent=1010"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/thedoctorads.com\/blog\/wp-json\/wp\/v2\/categories?post=1010"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/thedoctorads.com\/blog\/wp-json\/wp\/v2\/tags?post=1010"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}