Why I stopped clicking through the Google Ads UI and started talking to an AI agent instead

Manage Google Ads entirely from the terminal using Claude Code and Playwright MCP. Works best for small advertisers (1-5 campaigns, $30-100/day). Handles campaign creation, performance reporting, negative keywords, and conversion tracking audits — all through natural language conversation instead of navigating the Google Ads UI.
Google Ads is one of those products that punishes you for not being a full-time specialist.
The UI has dozens of navigation items. Campaign settings are buried three clicks deep. You need to cross-reference GA4 data streams, conversion goals, audience segments, keyword planners, and bid strategies — each living in a different part of the interface. One misconfigured conversion goal and your entire campaign optimizes toward nothing.
I'm a developer, not a media buyer. But I need to run ads. So I found a different way.
I manage my Google Ads campaigns from the terminal using Claude Code.
For the uninitiated: Claude Code is Anthropic's CLI tool for Claude. It runs in your terminal, has access to your filesystem, can execute shell commands, and — critically — can control a browser through Playwright via the Model Context Protocol (MCP).
That last part changes everything.
It means Claude can navigate to ads.google.com, read your campaign dashboards, click through settings, fill forms, pull reports, and make changes. All while you describe what you want in plain English.
You talk. It clicks.
Here's what a typical session looks like. I open my terminal, launch Claude Code, and say something like:
"Check my Google Ads campaign performance for the last 7 days"
Claude opens a browser, navigates to Google Ads, reads the campaign overview, and comes back with a structured summary — impressions, clicks, CTR, cost, conversions, top keywords, search terms, device breakdown. All formatted in a clean table in my terminal.
No clicking through tabs. No squinting at charts. No accidentally changing a setting while trying to read a metric.
When I want to make changes, same flow:
"Add these negative keywords to the campaign: job seeker, career advice, resume template, free hiring"
Claude navigates to the negative keywords section, adds them one by one, saves. Done. What would take me 2-3 minutes of clicking takes one sentence.

Setting up a Google Ads campaign from scratch is where this really shines.
The traditional process involves at least 15 steps across multiple tools:
That's 14 steps across 4 different tools, and I'm being conservative.
With Claude Code, I did this conversationally:
Me: "I want to run a Search campaign targeting B2B buyers in the US. Set a daily budget, weekdays only, business hours."
Claude: Researches keywords, suggests groupings, writes ad copy, and presents a complete campaign structure for review — before touching the Google Ads UI.
Me: "Looks good. Exclude countries outside our target market. Add negative keywords for job seekers, students, and free tools."
Claude: Opens the browser, creates the campaign step by step, configures every setting, adds all negative keywords, sets up the schedule, publishes.
The entire campaign — from blank slate to live — took one conversation. Not one afternoon. One conversation.

Conversion tracking is where most non-specialists mess up Google Ads. It's also where Claude Code adds the most value.
The chain is: User clicks ad → lands on your site → performs an action (sign up, purchase, demo request) → that action fires a GA4 event → GA4 marks it as a key event → Google Ads imports it as a conversion → campaign optimizes toward it.
That's seven links, and every single one is a potential failure point. A mismatched measurement ID between your gtag.js snippet and your GA4 property. A key event that's marked correctly in GA4 but never imported into Google Ads. A cross-domain redirect that drops the gclid parameter. Google's own documentation on conversion tracking covers setup, but debugging a broken chain requires jumping between your codebase, GA4 admin, Google Ads settings, and browser dev tools.
If any link in that chain breaks, your campaign burns money optimizing toward nothing. And Google Ads won't clearly tell you which link is broken.
In my case, Claude Code helped me:
That last point is key. Claude Code can read your source code AND navigate the Google Ads UI in the same conversation. It bridges the gap between your codebase and your marketing platform. No other tool does this.
Every few days I run a status check. The conversation goes:
"Pull up the Google Ads campaign overview. Show me clicks, cost, CTR, top keywords, and search terms."
Claude opens the browser, navigates to the campaign, scrolls through the overview cards, and gives me a structured report:
| Metric | Value |
|---|---|
| Impressions | xxx |
| Clicks | xx |
| CTR | xx% |
| Cost | $xx.xx |
| Avg CPC | $x.xx |
| Conversions | x |
Plus keyword-level and search term breakdowns, device splits, location data.
From this, I can make quick decisions:
Each decision is a sentence. Claude executes it. No tab-switching, no "are you sure" modals, no accidentally clicking the wrong campaign.
Let's be honest about the limitations.
Snapshots can be huge. Google Ads pages are complex. Sometimes the page accessibility snapshot exceeds Claude's context limits. Screenshots help, but you lose the ability to interact with specific elements.
Ad blocker conflicts. If you have an ad blocker, Google Ads throws a persistent dialog that Claude needs to dismiss every time. Minor, but annoying.
Complex scrolling. Some Google Ads and GA4 pages have nested scrollable containers. Standard scroll commands don't work — you need to identify the specific scrollable div. Claude figures this out, but it takes a few attempts.
Speed. Browser automation is slower than direct API access. Each action takes a few seconds of navigation and rendering. For bulk operations across 50 campaigns — say, updating bids on 200 ad groups — you'd want the Google Ads API with proper scripting. For managing 1-5 campaigns with a handful of ad groups each, the browser approach is perfectly fine.
No real-time alerts. This is a pull model. You ask, Claude checks. It doesn't proactively notify you if your campaign runs out of budget or a keyword spikes in cost.
Fair question. Google provides a full REST API for programmatic campaign management. If you're an engineer, why not script everything directly?
Three reasons:
Setup overhead is significant. The Google Ads API requires OAuth 2.0 credentials, a developer token (which needs approval from Google), and linking a manager account. The authentication flow alone involves creating a Google Cloud project, configuring consent screens, and handling token refresh. For a developer running two campaigns, that's hours of setup for a workflow you'll use a few times a month.
The API has a steep learning curve. Google Ads uses GAQL (Google Ads Query Language) for data retrieval and has a deeply nested resource hierarchy — customers, campaigns, ad groups, ads, keywords, each with their own set of mutate operations. The SDK is powerful but verbose. A simple "pause this keyword" operation requires constructing a KeywordView resource name, building a GoogleAdsRow, and issuing a mutate request.
You lose the visual verification. With the browser approach, Claude can see exactly what the Google Ads UI shows — including warnings, recommendations, policy violations, and approval statuses that aren't always straightforward to query via API.
The browser approach trades raw speed for accessibility. For small advertisers, that's the right trade.
The Google Ads interface is designed for specialists who live in it 8 hours a day. It's optimized for power users who manage dozens of campaigns across multiple accounts.
Most founders, developers, and small teams don't need that. They need to run one or two campaigns well.
The traditional options are:
Claude Code is a fourth option: keep all the control of the native Google Ads UI, but interact with it through conversation instead of clicks. You make the strategic decisions. The AI handles the mechanical execution.
It's not replacing a media buyer for complex multi-million dollar accounts. But for a developer running $30-100/day in search ads? It's a better workflow than anything else I've tried.
If you want to try this:
npm install -g @anthropic-ai/claude-code.The barrier to entry is remarkably low. The value is remarkably high.

I spent years learning complex UIs because there was no alternative. Now I describe what I want in English and an AI agent handles the clicking. This isn't the future of marketing ops. It's already here.

AI Consultant. 9+ years building production AI. Previously Chief Data Scientist at recruitRyte. IIT Dhanbad.