How to track Google Ads changes automatically (and what each method misses)

The Changeline team · Published · 8 min read

You can track Google Ads changes automatically in four ways: read change history in the interface (past 2 years), schedule a Google Ads script that writes change_event rows to a sheet, query the Google Ads API change_event resource (past 30 days, 10,000 rows per query), or connect a tool that imports changes into a shared timeline on its own.

How can you track Google Ads changes automatically?

Google Ads already records most edits for you. The question is where that record lives, how long you can reach it, and whether anyone sees it next to the other changes that move your results. There are four practical options, from zero setup to fully automatic.

MethodHow far backSetupBest forMain gap
Change history in the interfacePast 2 yearsNoneAd hoc checks on one accountManual review, one account at a time, no context outside Google Ads
Google Ads script writing to a sheetPast 30 days per run (change_event)Paste and schedule a scriptA daily log or alert for a few accountsYou maintain the code; runs are capped at 30 minutes
Google Ads API change_eventPast 30 daysDeveloper token, code, storageTeams with engineers and a data warehouse10,000 rows per query; Google Ads Editor edits are not returned
Change log tool with an importDepends on the toolConnect the accountAgencies and teams that need one shared timelineCovers only the platforms the tool integrates

The rest of this article covers what each method records, where it stops, and how to use the result when a metric moves. If you only need to read the change history screen, the Google Ads change history guide walks through it step by step.

What does Google Ads change history record on its own?

Change history lists the changes made to your account, campaigns and ad groups over the past 2 years; older data is not available. You open it from "Change history" in the "Campaigns" menu, or from a single campaign or ad group.

  • Who: the "User" column shows the e-mail of the person who made the change in the interface. Automated or internal Google systems can appear as "ads-dartsearch-budget" or "Google Ads system", and API changes as "Google Ads API" or the name of the tool.
  • What: you can filter by type of change, such as budget adjustments or keyword edits, and see each change on a timeline mapped against impressions, clicks, conversions, CTR and cost.
  • Detail limit: Google limits the details shown per entry and recommends changes that affect fewer than 2,000 entities if you want to see full details.

It is automatic in the sense that nobody has to log anything. It is not automatic in the sense that someone still has to open each account, set a date range and read through the rows, and it says nothing about your website, tags or CRM.

How do I log Google Ads changes to a sheet with a script?

A Google Ads script can query the change_event resource every day and append the rows to a Google Sheet, which gives you a running log without any engineering setup. Scripts support Google Ads Query Language (GAQL) through AdsApp.search() and AdsApp.report().

  1. In Google Ads, click the Tools icon, open the "Bulk actions" drop-down and choose "Scripts".
  2. Create a script that runs a query such as SELECT change_event.change_date_time, change_event.user_email, change_event.client_type, change_event.change_resource_type, change_event.changed_fields FROM change_event WHERE change_event.change_date_time >= '2026-10-06' AND change_event.change_date_time <= '2026-10-07' ORDER BY change_event.change_date_time LIMIT 10000 and writes each row to a sheet.
  3. Preview it, authorize it, then set the frequency. Google's help page lists once, daily, weekly or monthly at a time you choose.
  4. Optionally send an e-mail when a change comes from someone outside an approved list. Practitioner scripts such as Nils Rooijmans' change history alert do exactly this and let you ignore trusted users.

Limits to plan for: a script for an advertiser account can run for 30 minutes at most (60 minutes for some manager account scripts that process accounts in parallel), the query window cannot go past 30 days, and you own the code when Google changes the API. For a handful of accounts this is the cheapest automatic log you can build.

What does the Google Ads API change_event resource give you?

change_event is the API view of change history: one row per change, with the old and new values. It is what scripts and most third-party tools read under the hood.

  • Fields: change_date_time, user_email, client_type (for example Google Ads web client or Google Ads API), change_resource_type, resource_change_operation (create, update, remove), changed_fields, old_resource and new_resource.
  • Window: the date range must be within the past 30 days, and a filter on change_date_time is required.
  • Volume: each query needs a LIMIT of at most 10,000 rows, so busy accounts need several queries split by date.
  • Latency: a change can take up to three minutes to appear.
  • Blind spots: Google notes that not every change shows up in change_event, and that Google Ads Editor changes cannot be retrieved through it.

Because of the 30-day window, anything built on change_event has to run regularly and store the rows somewhere else. If it stops for five weeks, the gap is permanent in that store, even though the interface still shows the past 2 years.

What does a change log tool with a Google Ads import add?

A change log tool does the scheduling and storage for you and puts Google Ads changes next to the changes that happen outside Google Ads. That second part is what makes the record useful when you have to explain a result.

In Changeline, for example, you connect a Google Ads account with a read-only connection. The first connection brings in the last 30 days, then changes sync every 6 hours, with an "Update now" button when you need them sooner. Each imported item shows what changed (before → after), who changed it and the source: interface, API, scripts, automated rules or recommendations. Imported and logged changes are kept for as long as the project exists, so you can look at what was changed in the same weeks last year. Meta Ads and other integrations are coming soon; today your team logs those changes by hand on the same timeline.

Whatever tool you look at, ask three questions: does it keep history after the platform's API window, does it show the source of each change, and can the team add the changes it cannot import.

Which changes does automatic tracking miss?

Every automatic method sees only what happens inside Google Ads, and even there it has gaps. The changes most likely to explain a drop are often outside the ad account.

  • Google Ads Editor uploads: not returned by change_event, so check the interface for those dates or log bulk uploads by hand.
  • Website and landing pages: a new form, a price change, a checkout release, a slower page.
  • Tracking: a tag edited in Google Tag Manager, a consent banner update, a conversion action set to primary or secondary.
  • CRM and sales: new lead qualification rules, offline conversion uploads paused, a change in follow-up speed.
  • Other channels: Meta Ads, email, organic and partner activity that shifts demand.
  • The reason: no system records why a budget was raised or what the team expected to happen.

That is why a marketing change log mixes imported changes with ones the team logs, each with a date, owner and reason. A shared change log template is enough to start if you have no tool yet.

How do I use tracked changes to find what moved a metric?

Put every change from the days before the shift on one timeline, rule out tracking first, then test one hypothesis at a time. Automatic tracking only pays off if you use it this way.

  1. Mark the date the metric moved and the 7 to 14 days before it.
  2. Pull every change in that window: your team's Google Ads edits, platform automations (auto-applied recommendations, automated rules, scripts), site, tracking and CRM changes, and external events such as a competitor promotion or a holiday.
  3. Rule out tracking first. If conversions fell but sessions, leads in the CRM or orders did not, the problem is measurement, not performance.
  4. Test one hypothesis at a time. Check whether the drop is limited to the campaigns, devices or conversion actions the change touched.
  5. Write down the result on the same timeline so the next person does not start from zero.

Example (illustrative): CPA rises 30% on a Tuesday. The imported Google Ads changes show a target CPA lowered on Friday and a recommendation that added broad match keywords on Saturday; the team log shows a new landing page on Monday. Conversions in the CRM are flat, so tracking is fine. The new keywords' search terms carry most of the extra cost, so you test that first. For the full method see marketing root cause analysis, how auto-applied recommendations change accounts, and the guide on how to explain a conversion drop to a client.

FAQ

Can Google Ads send an alert when someone changes my account?

Google Ads change history does not send alerts on its own. The common workaround is a Google Ads script that queries change_event every day, writes the rows to a Google Sheet and e-mails you when a change comes from a user who is not on your approved list.

How far back can I see Google Ads changes?

In the interface, change history lists changes from the past 2 years; older data is not available. Through the Google Ads API change_event resource, and therefore through scripts that use it, you can only query the past 30 days, so a tool has to run regularly and store rows to keep a longer record.

Do Google Ads Editor changes show up in the API?

No. Google's change_event documentation states that Google Ads Editor changes cannot be retrieved through change_event, even though Editor appears as a client type. Check change history in the interface for those dates, or log bulk Editor uploads by hand with a date and a reason.

How do I see who made a change in Google Ads?

In change history, the "User" column shows the e-mail address of the person who made the change in the interface. Automated systems appear under names such as "Google Ads system", and API changes as "Google Ads API" or the tool's name. In the API, the same information is in user_email and client_type.

Is a Google Ads script enough to track changes for an agency?

For a few accounts, a daily script that logs change_event to a sheet works. With many clients it gets harder: each script runs for 30 minutes at most, someone maintains the code, and the sheet holds no site, tracking or CRM changes, which are often what explains a drop.

Sources

  1. About change history – Google Ads Help
  2. Change Event – Google Ads API
  3. Using scripts to make automated changes – Google Ads Help
  4. Limits – Google Ads scripts
  5. Reports – Google Ads scripts
  6. Google Ads Script – Change History Alerts – Nils Rooijmans

Keep every change on one timeline

Changeline is a marketing change log for agencies and growth teams. Log a change in seconds and see it next to every other channel. Free while in early access.

Start now, free