How to Audit a Google Ads Account in 15 Minutes with Claude Code
Learn how to audit a Google Ads account in 15 minutes using Claude Code CLI and the Google Ads MCP server. Pull campaign data with GAQL queries, find wasted spend, identify negative keyword gaps, analyze Quality Scores, and generate optimization reports.
A Google Ads audit with Claude Code is the process of connecting an AI agent to your Google Ads account via the Model Context Protocol (MCP), pulling live campaign data using GAQL queries, and having the agent analyze wasted spend, negative keyword gaps, Quality Score distribution, conversion tracking health, and bid strategy alignment — all from your terminal in under 15 minutes. Traditional PPC audits take 4-8 hours of analyst time: exporting spreadsheets, building pivot tables, cross-referencing campaign settings, and writing recommendations. With Claude Code and the Google Ads MCP server, you can compress that process to a single conversation. According to WordStream's 2025 benchmarks, the average Google Ads account wastes 20-30% of its budget on irrelevant clicks, poor-performing keywords, and misaligned bid strategies. Finding and fixing these issues quickly is the difference between profitable and unprofitable paid search.
This guide walks through the exact workflow: connecting Claude Code to Google Ads, the GAQL queries that surface the highest-impact issues, what to look for in the output, and how to generate an actionable optimization report — step by step.
Why Audit Google Ads with Claude Code?
Most Google Ads audits follow the same pattern: export data, build spreadsheets, run filters, write findings. The bottleneck isn't analysis — it's data retrieval and formatting. Claude Code eliminates that bottleneck by querying your account directly and reasoning about the results in real time.
The Traditional Audit vs. Claude Code Audit
| Dimension | Traditional Audit | Claude Code Audit |
|---|---|---|
| Time to complete | 4-8 hours | 10-15 minutes |
| Data retrieval | Manual export from Google Ads UI | GAQL queries via MCP |
| Analysis method | Pivot tables, spreadsheet formulas | AI reasoning over live data |
| Consistency | Varies by analyst | Reproducible every time |
| Report generation | Manual write-up | Auto-generated markdown or PDF |
| Scalability | One account per session | Multiple accounts in sequence |
| Cost | $500-2,000 per audit (agency rates) | ~$5 in API and token costs |
The value proposition is straightforward: you get 80% of the insight in 5% of the time. The remaining 20% — competitive strategy, creative direction, landing page optimization — still benefits from human judgment. But the mechanical work of pulling numbers, spotting anomalies, and documenting findings is precisely what an AI agent excels at.
What You Need Before Starting
- Claude Code CLI installed and authenticated (
claudecommand available in your terminal) - Google Ads MCP server configured in your Claude Code settings (the
google-adsMCP plugin)
For access across the full Google marketing stack (Ads, Analytics, GTM, Search Console) from a single credential, see the ADC section at the end of this guide.
- Google Ads API access — a developer token and OAuth credentials linked to the accounts you want to audit
- Customer ID of the Google Ads account (format:
xxx-xxx-xxxx)
If you haven't set up the Google Ads MCP server yet, add it to your Claude Code MCP configuration:
{
"mcpServers": {
"google-ads": {
"command": "npx",
"args": ["-y", "@anthropic/google-ads-mcp"],
"env": {
"GOOGLE_ADS_DEVELOPER_TOKEN": "your-developer-token",
"GOOGLE_ADS_CLIENT_ID": "your-client-id",
"GOOGLE_ADS_CLIENT_SECRET": "your-client-secret",
"GOOGLE_ADS_REFRESH_TOKEN": "your-refresh-token"
}
}
}
}The 15-Minute Audit Workflow
The audit follows five phases, each taking 2-3 minutes. Run them sequentially in a single Claude Code conversation so the agent accumulates context.
Phase 1: Connect and Pull Account Overview (2 minutes)
Start by asking Claude Code to list your accessible accounts and pull top-level performance data.
Prompt:
List all Google Ads accounts I have access to, then for account 123-456-7890,
pull the last 90 days of campaign-level performance: spend, conversions,
cost per conversion, conversion rate, impression share, and ROAS.
Sort by spend descending.Claude Code will use the MCP tool to run a GAQL query like this:
SELECT
campaign.name,
campaign.status,
campaign.bidding_strategy_type,
metrics.cost_micros,
metrics.conversions,
metrics.cost_per_conversion,
metrics.conversions_from_interactions_rate,
metrics.search_impression_share,
metrics.conversions_value
FROM campaign
WHERE segments.date DURING LAST_90_DAYS
AND campaign.status != 'REMOVED'
ORDER BY metrics.cost_micros DESCWhat to look for in the output:
- Campaigns spending with zero conversions. Any campaign that has spent more than $500 in 90 days with zero conversions is a red flag. This is pure waste.
- Campaigns with cost per conversion more than 3x the account average. These are dragging down overall ROAS.
- Low impression share on high-performing campaigns. If your best campaign has 40% impression share, you're leaving money on the table — budget or bid constraints are limiting your best performers.
- Mismatched bid strategies. Manual CPC on campaigns with enough conversion data for Target CPA, or Target ROAS on campaigns with fewer than 30 conversions per month.
Phase 2: Wasted Spend Analysis (3 minutes)
This is where most accounts leak money. Ask Claude Code to find the biggest sources of waste.
Prompt:
For the same account and date range, run a search terms report. Find:
1. Search terms that triggered ads but have zero conversions and spent > $50
2. Search terms with CTR below 1% and more than 500 impressions
3. The top 20 search terms by spend that aren't exact-match keywords
Then calculate total wasted spend on non-converting search terms.The underlying GAQL query:
SELECT
search_term_view.search_term,
search_term_view.status,
campaign.name,
ad_group.name,
metrics.impressions,
metrics.clicks,
metrics.cost_micros,
metrics.conversions,
metrics.ctr
FROM search_term_view
WHERE segments.date DURING LAST_90_DAYS
AND metrics.cost_micros > 0
ORDER BY metrics.cost_micros DESC
LIMIT 500What to look for:
- Irrelevant search terms eating budget. In B2B accounts, this often includes job-seeker queries ("Google Ads jobs," "PPC manager salary"), educational queries ("what is PPC"), and competitor brand terms you didn't intend to bid on.
- Total waste calculation. In a typical $10,000/month account, $1,500-3,000 is spent on non-converting search terms. That's 15-30% of budget — recoverable through negative keywords.
- Pattern recognition. Claude Code can identify clusters: "All terms containing 'free' have zero conversions," or "All terms containing 'jobs' are irrelevant." This turns hundreds of individual search terms into 5-10 negative keyword themes.
Follow-up prompt:
Based on the non-converting and irrelevant search terms, generate a negative
keyword list grouped by theme. Format as a table with columns:
theme, negative keywords, match type recommendation, estimated monthly savings.Phase 3: Quality Score Analysis (3 minutes)
Quality Score directly impacts your cost per click. A Quality Score of 3 means you pay roughly 3x more per click than a competitor with a Quality Score of 10 for the same keyword.
Prompt:
Pull all keywords with their Quality Scores, expected CTR, ad relevance,
and landing page experience. Group by Quality Score bucket (1-3, 4-6, 7-10)
and show the spend distribution. Flag any keywords with Quality Score
below 5 that are spending more than $100/month.GAQL query:
SELECT
campaign.name,
ad_group.name,
ad_group_criterion.keyword.text,
ad_group_criterion.keyword.match_type,
ad_group_criterion.quality_info.quality_score,
ad_group_criterion.quality_info.creative_relevance,
ad_group_criterion.quality_info.search_predicted_ctr,
ad_group_criterion.quality_info.post_click_quality_score,
metrics.cost_micros,
metrics.impressions,
metrics.conversions
FROM keyword_view
WHERE segments.date DURING LAST_90_DAYS
AND ad_group_criterion.status != 'REMOVED'
AND metrics.impressions > 0
ORDER BY metrics.cost_micros DESCWhat to look for:
| Quality Score Range | Typical Action | Priority |
|---|---|---|
| 1-3 | Pause or restructure. Landing page and ad copy misalignment. | Critical — these keywords are costing 2-4x what they should |
| 4-6 | Optimize ad copy relevance and landing page. Test new headlines. | High — significant CPC reduction possible |
| 7-10 | Maintain. Expand with similar keywords. Increase budget. | Low — already performing well |
The key insight: Most accounts have 30-50% of their spend on keywords with Quality Score 6 or below. Improving Quality Score from 5 to 7 reduces CPC by approximately 28%. On a $10,000/month account, that's $1,400/month in savings — without changing your bids.
Phase 4: Conversion Tracking Health Check (3 minutes)
Broken or misconfigured conversion tracking is the silent killer of Google Ads performance. If conversions aren't tracked correctly, every optimization decision is based on flawed data.
Prompt:
Check the conversion tracking setup for this account:
1. List all conversion actions with their status, type, and count
2. Flag any conversion actions with zero conversions in 90 days
3. Check if enhanced conversions is enabled
4. Look for duplicate conversion counting
5. Compare conversion lag — are most conversions happening within
the attribution window?GAQL query for conversion actions:
SELECT
conversion_action.name,
conversion_action.type,
conversion_action.status,
conversion_action.category,
conversion_action.counting_type,
conversion_action.include_in_conversions_metric,
metrics.conversions,
metrics.all_conversions,
metrics.conversions_value
FROM conversion_action
WHERE segments.date DURING LAST_90_DAYSWhat to look for:
- Duplicate conversions. If you see both a Google Ads tag and a GA4 imported conversion tracking the same action, conversions are being double-counted. This inflates ROAS and distorts bid strategy performance.
- Micro-conversions included in primary. Page views, time-on-site, or scroll depth tracked as primary conversions dilute your conversion data. Smart Bidding optimizes toward these low-value events instead of actual leads or purchases.
- Zero-conversion actions still active. Legacy conversion actions that no longer fire but remain active can confuse Smart Bidding algorithms.
- Missing enhanced conversions. Google's enhanced conversions use first-party data to improve attribution accuracy by 5-15%. If it's not enabled, your conversion data is less accurate than it could be.
Phase 5: Generate the Optimization Report (4 minutes)
Now ask Claude Code to synthesize everything into an actionable report.
Prompt:
Generate a complete Google Ads audit report in markdown format with:
1. Executive summary (3 sentences)
2. Account health scorecard (grade A-F for each dimension)
3. Top 5 issues ranked by estimated monthly impact in dollars
4. Specific action items for each issue with priority (critical/high/medium)
5. Negative keyword list to implement immediately
6. Budget reallocation recommendations
7. 30-day optimization plan
Include the actual numbers from the data we pulled.
Format it so I can share it with a client or stakeholder.Claude Code will produce a structured report pulling from all the data gathered across phases 1-4. Because the agent has accumulated context throughout the conversation, the report connects insights: "Campaign X has low Quality Score keywords AND is bidding on irrelevant search terms, suggesting an ad group restructure rather than incremental fixes."
What You Can Find in 15 Minutes: Common Issues
Based on auditing hundreds of Google Ads accounts, here are the most common issues this workflow surfaces — and how frequently we see them.
| Issue | Frequency | Typical Impact | Fix Difficulty |
|---|---|---|---|
| Missing negative keywords | 90% of accounts | 15-30% wasted spend | Easy — add negatives |
| Low Quality Score keywords consuming budget | 75% of accounts | 20-40% CPC premium | Medium — requires ad copy and landing page work |
| Wrong bid strategy for campaign maturity | 60% of accounts | 10-25% efficiency loss | Easy — switch bid strategy |
| Duplicate conversion tracking | 45% of accounts | Inflated ROAS by 30-100% | Medium — requires tag audit |
| Budget-constrained top performers | 55% of accounts | Missing 30-60% of available conversions | Easy — reallocate budget |
| Broad match keywords without Smart Bidding | 40% of accounts | 25-50% irrelevant clicks | Easy — change match type or enable Smart Bidding |
| No audience exclusions | 50% of accounts | 5-15% wasted spend on existing customers | Easy — add exclusions |
| Ad copy not testing variations | 65% of accounts | 10-20% CTR improvement available | Medium — write and test new ads |
The 80/20 rule applies: fixing missing negative keywords and reallocating budget from low-performing to high-performing campaigns typically recovers 50-70% of the total waste identified.
Advanced: Multi-Account Audits
If you manage multiple Google Ads accounts (agency or in-house with multiple brands), you can script this workflow.
Prompt for multi-account audit:
I manage 5 Google Ads accounts. For each of these customer IDs:
[123-456-7890, 234-567-8901, 345-678-9012, 456-789-0123, 567-890-1234]
Run the following analysis and produce a comparison table:
1. Total spend last 90 days
2. Overall conversion rate
3. Average Quality Score (weighted by spend)
4. Estimated wasted spend (non-converting search terms)
5. Impression share on top campaigns
6. Number of conversion actions (flag duplicates)
Rank the accounts from most to least efficient.This cross-account view reveals which accounts need attention first and where the biggest optimization opportunities exist. For agencies managing 20+ accounts, running this monthly creates a prioritized audit backlog that maximizes the impact of your optimization time.
GAQL Query Reference
For those who want to customize their audits, here are additional GAQL queries you can ask Claude Code to run.
Device Performance Breakdown
SELECT
campaign.name,
segments.device,
metrics.cost_micros,
metrics.conversions,
metrics.cost_per_conversion,
metrics.ctr
FROM campaign
WHERE segments.date DURING LAST_90_DAYS
AND campaign.status = 'ENABLED'This surfaces device-level waste. Many B2B accounts find that mobile traffic converts at 50-70% lower rates than desktop, yet receive equal budget allocation.
Geographic Performance
SELECT
campaign.name,
geographic_view.country_criterion_id,
geographic_view.location_type,
metrics.cost_micros,
metrics.conversions,
metrics.cost_per_conversion
FROM geographic_view
WHERE segments.date DURING LAST_90_DAYS
ORDER BY metrics.cost_micros DESC
LIMIT 50Look for locations where you're spending but not converting. Common finding: "Presence or interest" location targeting (the default) shows ads to people "interested in" your target location but not physically there.
Ad Schedule Performance
SELECT
campaign.name,
segments.hour,
segments.day_of_week,
metrics.cost_micros,
metrics.conversions,
metrics.cost_per_conversion
FROM campaign
WHERE segments.date DURING LAST_90_DAYS
AND campaign.status = 'ENABLED'B2B accounts often waste budget on weekends and evenings. If your sales team doesn't work Saturdays, running ads on Saturday generates leads that go stale before Monday morning follow-up.
Asset (Ad Extension) Performance
SELECT
asset.name,
asset.type,
campaign.name,
metrics.impressions,
metrics.clicks,
metrics.ctr,
metrics.conversions
FROM asset_group_asset
WHERE segments.date DURING LAST_90_DAYS
ORDER BY metrics.impressions DESCMany accounts have sitelinks, callouts, and structured snippets that haven't been updated in months. Assets with low CTR drag down overall ad rank.
Tips for Getting the Most Out of Claude Code Audits
Be Specific About Date Ranges
Always specify the date range in your prompts. "Last 90 days" gives enough data for statistical significance while being recent enough to reflect current performance. For seasonal businesses, compare year-over-year: "Compare Q1 2026 to Q1 2025."
Ask for Context, Not Just Numbers
Instead of "show me campaign performance," ask "show me campaign performance and flag anything unusual." Claude Code will apply judgment: "Campaign X has a 0.3% conversion rate while the account average is 2.1% — this is underperforming by 7x."
Save Your Prompts as Templates
Create a text file with your standard audit prompts. Copy them into each new Claude Code conversation. Over time, refine the prompts based on what surfaces the most actionable insights.
Export Reports for Stakeholders
Ask Claude Code to format the report as markdown with tables. You can convert this to PDF using any markdown-to-PDF tool, or paste it into Google Docs for client-facing reports. Include the specific numbers — stakeholders respond to "$2,400/month in wasted spend on irrelevant search terms" more than "there's some wasted spend."
Run Monthly Audits
The first audit finds the big issues. Monthly follow-up audits (which take 5-7 minutes once you have the prompts) track whether fixes are working and catch new issues before they compound.
Real-World Example: $12,000/Month B2B SaaS Account
To make this concrete, here's a summary of an actual audit we ran using this workflow for a B2B SaaS company spending $12,000/month on Google Ads.
Time spent: 14 minutes (including report generation)
Findings:
- $3,200/month in wasted search terms — 847 search terms with spend but zero conversions. Biggest theme: "free" and "open source" queries. Immediate fix: add 23 negative keywords.
- Duplicate conversion tracking inflating reported ROAS by 67%. Both a Google Ads tag and GA4 import were counting the same demo request. Actual ROAS was 2.1x, not the reported 3.5x.
- $2,100/month on Quality Score 3-4 keywords. Three ad groups had landing pages pointing to the homepage instead of relevant product pages. CPC was $14.20 vs. the account average of $8.50.
- Top-performing campaign at 38% impression share due to a $150/day budget cap. This campaign had a 4.2x ROAS — the highest in the account — but was running out of budget by 2pm daily.
- Weekend spend of $1,800/month with 0.4% conversion rate vs. weekday conversion rate of 2.8%. No ad scheduling was configured.
Estimated monthly savings from implementing recommendations: $4,800 (40% of total spend)
Estimated monthly revenue increase from budget reallocation: $6,200 (shifting budget from waste to the top-performing campaign)
Limitations and When You Still Need a Human
Claude Code audits are powerful but not complete replacements for expert PPC management.
What Claude Code does well:
- Data retrieval and pattern recognition
- Identifying obvious waste (non-converting terms, budget misallocation)
- Quality Score analysis and conversion tracking health checks
- Generating structured reports with specific numbers
- Cross-account comparison and prioritization
What still requires human judgment:
- Competitive strategy — Understanding why a competitor is bidding on certain terms requires market knowledge
- Creative direction — Writing compelling ad copy that resonates with your specific audience
- Landing page optimization — Evaluating UX, messaging hierarchy, and trust signals
- Attribution modeling — Deciding whether view-through conversions, cross-device conversions, and assisted conversions should influence bidding
- Business context — A campaign with high CPA might be acceptable if those leads have high lifetime value
The best workflow: use Claude Code for the analytical heavy lifting, then apply human strategy to the findings.
Frequently Asked Questions
How do I set up the Google Ads MCP server for Claude Code?
You need a Google Ads developer token (apply via your Google Ads manager account), OAuth 2.0 credentials (client ID and secret from Google Cloud Console), and a refresh token. Add these to your Claude Code MCP configuration file (typically ~/.claude/mcp.json or your project's .mcp.json). The MCP server handles authentication and translates Claude Code's tool calls into Google Ads API requests. Setup takes 15-30 minutes if you already have API access.
What Google Ads API access level do I need?
Basic access is sufficient for auditing. You need read-only access to campaign, ad group, keyword, search term, and conversion data. You don't need write access unless you want Claude Code to implement changes (like adding negative keywords) directly. Most agencies already have the required API access through their MCP accounts.
Can Claude Code make changes to my Google Ads account?
Yes, the Google Ads MCP server supports write operations. However, for audits, we recommend read-only access. Use Claude Code to identify issues and generate the action plan, then implement changes through the Google Ads UI or Editor where you can review each change before it goes live. For experienced users who trust the recommendations, you can ask Claude Code to add negative keywords or adjust bids directly.
How accurate is Claude Code's analysis compared to a human PPC specialist?
For data-driven analysis (identifying waste, Quality Score issues, conversion tracking problems), Claude Code is as accurate as a specialist — often more thorough because it checks every keyword and search term rather than sampling. For strategic recommendations (bid strategy selection, audience targeting, competitive positioning), a specialist adds context that the data alone doesn't reveal. Think of it as: Claude Code finds the problems, a specialist prioritizes the solutions.
Can I audit a competitor's Google Ads account?
No. The Google Ads API only provides access to accounts you manage. For competitive analysis, you'd use tools like SpyFu, SEMrush, or Auction Insights data (which Claude Code can pull from your own account). Claude Code can analyze your Auction Insights data to show which competitors you're losing impression share to and on which campaigns.
What's the minimum spend level where this audit is worthwhile?
Any account spending more than $1,000/month benefits from this audit. At that level, even a 15% waste reduction saves $150/month — and the audit takes 15 minutes. For accounts spending less than $1,000/month, the same principles apply but the dollar impact is smaller. For accounts above $50,000/month, this audit should be run weekly.
Key Takeaways
- A 15-minute Claude Code audit surfaces 80% of what an 8-hour manual audit finds. The mechanical work of data retrieval, pattern matching, and report generation is precisely what AI agents excel at.
- The average Google Ads account wastes 20-30% of budget. Missing negative keywords, low Quality Score terms, and budget-constrained top performers are the three most common — and most fixable — issues.
- Conversion tracking problems are more common than you think. 45% of accounts have duplicate or misconfigured conversion tracking, which means every optimization decision is based on wrong data.
- Monthly audits compound. The first audit finds the big issues. Monthly follow-ups (5-7 minutes each) catch new problems early and verify that fixes are working.
- The workflow is reproducible. Save your prompts, run them monthly, and build an optimization cadence that scales across accounts.
Taking it further: Full Google stack access with ADC
The MCP approach works well for single-tool audits. Each Google marketing tool — Ads, GTM, Analytics, Search Console — has its own MCP server and requires its own OAuth configuration. That is manageable for one tool. As your agent sessions expand to span multiple Google products, the credential overhead compounds.
Application Default Credentials (ADC) solve this at the OS level. After two commands, every Google API call from your machine inherits the credential automatically — no developer token per service, no per-tool OAuth flows. Claude Code picks up ADC transparently: the same terminal session that just audited your Google Ads account can immediately query Search Console for keyword overlap, read a GTM container state, or pull GA4 event definitions.
gcloud auth login
gcloud auth application-default loginThat is the entire one-time setup. After that, any Claude Code session on the machine has access to all four platforms simultaneously. What ADC unlocks across the Google marketing stack:
- Google Ads — everything in this guide, plus multi-account manager (MCC) access
- Google Analytics 4 — session and event data, audience exports, funnel analysis
- Google Tag Manager — container state, tag audit, trigger and variable inspection
- Google Search Console — query performance, index coverage, Core Web Vitals by page
The full setup — scopes, service accounts for CI environments, multi-account access patterns, and worked examples across every Google marketing platform — is covered in a dedicated guide: Google ADC: the fastest way to make your Google stack agentic.
Further Reading
- The AI-Powered GTM Stack: Tools, Workflows, and Architecture for 2026
- Agentic AI for B2B Marketing: From Copilot to Autonomous Campaigns
- Agent-Led Growth: The GTM Operating Model for the Next Five Years
- RevOps Framework Guide: Building Revenue Operations from Scratch
Pascal is the founder of Ryzo, an AI-driven GTM and RevOps agency that helps B2B companies build agent-led growth systems. He uses Claude Code daily to audit, optimize, and manage performance marketing campaigns for Ryzo's clients — compressing days of manual analysis into minutes of AI-assisted workflows. Connect with him on LinkedIn.