Work Pricing FAQ Blog Jobs Trending Book the AI Audit

HomeBlogHow to Automate Google Ads Reporting with Claude Code

How to Automate Google Ads Reporting with Claude Code

I spend a lot of time managing Google Ads campaigns for clients in Vancouver. The campaigns run themselves reasonably well once they're dialed in, but the weekly reporting was killing me. Logging into each account, pulling performance data, formatting it into something a client can actually use, flagging anything that needs attention — six hours every Monday morning, like clockwork.

A few months ago I automated most of that process with Claude Code. Now it takes about 45 minutes to review what the system generates, add a few notes, and send. The data is cleaner, the format is more consistent, and I catch budget issues faster than I used to when I was doing it manually. Here's how I built it and how you can do the same thing.

What I'm Automating with Claude Code

Before I get into the technical setup, it's worth clarifying what parts of Google Ads reporting I actually automated. I'm not talking about campaign optimization or ad copy testing — those still require judgment. What I automated is the data extraction and report formatting layer.

The system does three things:

  • Pulls performance data from the Google Ads API — impressions, clicks, conversions, cost, CTR, CPC, conversion rate, for each campaign and ad group
  • Formats that data into a client-ready report — organized by campaign, with week-over-week comparisons and visual highlights
  • Flags anomalies automatically — overspend vs. budget, sudden drop in CTR, campaigns with zero conversions, ad groups burning budget with no results

The output is a PDF I can review, annotate with strategic recommendations, and send. Clients get the same level of detail they always did, but now I'm spending my time on analysis instead of data wrangling.

Step 1: Setting Up Google Ads API Access

The first piece is getting API access. Google's documentation for this is about as user-friendly as a tax form, but once you've done it once it's straightforward to replicate.

You need a Google Ads developer token (you request this from your Google Ads account — it takes a few days to get approved if you don't have one). Then you need OAuth2 credentials from the Google Cloud Console. Claude Code can't do this part for you; you have to click through the setup flow yourself.

Once you have the token and credentials, the actual API calls are where Claude Code comes in. The Google Ads API has a query language called GAQL (Google Ads Query Language) that looks like SQL. You write queries to pull the metrics you want, and the API returns JSON.

Here's an example query I use to pull campaign-level performance for the last 7 days:

SELECT
  campaign.name,
  metrics.impressions,
  metrics.clicks,
  metrics.conversions,
  metrics.cost_micros
FROM campaign
WHERE segments.date DURING LAST_7_DAYS
ORDER BY metrics.cost_micros DESC

Claude Code writes these queries for me. I just tell it what metrics I need and for what time period, and it outputs the GAQL. Then it handles the API call, authenticates with the OAuth credentials, and parses the JSON response into a clean data structure.

Step 2: Formatting the Report

Once I have the raw data, the next step is turning it into something a client can read. This is where most of the time savings come from.

I used to do this in Google Sheets. Copy-paste the data, add formulas for week-over-week changes, format the cells, export to PDF. It was mechanical work, but it still took 20–30 minutes per client.

Now Claude Code does it programmatically. I give it a template structure — campaign name in the first column, impressions, clicks, conversions, cost, CTR, CPC in the next columns, then a column for the percentage change vs. last week — and it outputs a formatted HTML table. I can convert that to PDF with a headless browser script (I use Playwright for this), or just send the HTML directly if the client prefers.

The formatting isn't just cosmetic. Clients pay more attention to reports that look intentional. A well-structured table with consistent visual hierarchy makes the data easier to scan and the insights easier to act on.

I also have Claude Code add conditional formatting: campaigns that are overspending get highlighted in red, campaigns with a CTR drop of more than 15% get flagged in yellow, anything with zero conversions gets a warning icon. These visual cues make it obvious where to focus attention.

Step 3: Anomaly Detection and Alerts

The third piece — and the one that's saved me the most stress — is automated anomaly detection. This is where Claude Code really earns its keep.

Before I had this system, I'd catch budget overruns or performance drops eventually, but not always in time to fix them before the client noticed. Now the system flags issues as soon as they show up in the data.

Here's what it checks for:

  • Budget pacing — is the campaign on track to hit its monthly budget, or is it burning through too fast?
  • CTR drops — has click-through rate fallen more than 20% week-over-week?
  • Zero-conversion campaigns — any campaign that spent more than $200 in the last week with zero conversions
  • Cost-per-conversion spikes — conversion cost increasing by more than 30% vs. the prior period

Claude Code runs these checks and outputs a separate "Alerts" section at the top of the report. This is what I look at first. If there are no alerts, I know the campaigns are running clean and I can skim the rest. If there are alerts, I dig into those specific campaigns and figure out what's happening.

This alone has probably saved two clients from wasting a combined $3,000 on underperforming campaigns that I would have caught a week later if I'd been doing the manual review process.

How Long This Took to Build

The entire system — API setup, data pull script, report formatter, anomaly detection logic — took about four days of focused work to build. Most of that was iterating on the report template until it matched what clients were used to seeing.

If you're doing this for the first time and you're not familiar with the Google Ads API, add another day or two for the learning curve. But once it's working, it's basically maintenance-free. I've been running this for six months and I've only had to tweak it twice, both times to add new metrics a client requested.

What This Looks Like in Practice

Every Monday morning, I run the script for each active client. It takes about 90 seconds per account to pull the data and generate the report. I review the alerts first, then skim the campaign-level data to see if anything else stands out. If a campaign needs strategic changes, I add those notes manually. Then I send the PDF.

The whole process, from opening my laptop to sending the last report, takes 45 minutes for five clients. It used to take six hours. That's five hours back every week that I can spend on higher-value work — campaign optimization, new client outreach, or building systems like this for other parts of my workflow.

Could You Do This Yourself?

If you manage Google Ads for clients and you're comfortable with basic scripting concepts, yes. You don't need to be a developer — Claude Code writes most of the code for you. You just need to know enough to describe what you want and to review the output to make sure it's working.

The hardest part is the initial Google Ads API setup, which is entirely Google's fault. The actual automation logic is straightforward once you have API access.

If you want help setting this up or you want to see if it makes sense for your specific reporting workflow, I'm happy to walk through it on a call. And if you're wondering whether automation like this is overkill for your client load, the FAQ page covers that question in more depth.

The ROI on this was obvious for me within the first month. If you're spending more than three hours a week on Google Ads reporting, it'll probably be obvious for you too.

Work with me

Want this kind of automation for your agency?

Start with the AI Audit — $1,500. One focused engagement. The 3 highest-ROI opportunities in your business, ranked. A working proof-of-concept of the #1. Credited toward your build if we go forward.

Book the AI Audit → Read the FAQ
← All posts Book the AI Audit →