Claude Ads is a free, open-source Google Ads audit tool that runs inside Claude Code. You install the plugin, provide authorized evidence (exports, screenshots, or authenticated reads, no API access required), run /ads audit scoped to Google, and get a deterministic 0 to 100 health score published next to evidence coverage. The whole run is read-only: proposed changes surface as drafts and never touch the account.
That is the short answer. The rest of this post walks through the process the way I actually run it for a new account, including the two areas where the tool behaves differently from most audit scripts: negative keywords and Performance Max.
The Google Ads audit checklist: what gets evaluated
The Google worker evaluates applicable controls across nine areas: measurement, search terms and waste, account structure, keywords, creative assets, bidding and budgets, settings, eligibility, and policy. Each control resolves to one of four results: pass, fail, unknown, or not_applicable. Every finding also carries a severity (critical, high, medium, info) and a confidence level (high, medium, low, none), so a shaky diagnosis cannot masquerade as a solid one. A sample of what those controls cover:
| Area | Example checks |
|---|---|
| Conversion tracking | Conversion actions defined, enhanced conversions status, no duplicate counting, GA4 linked, Google Tag firing |
| Search terms and waste | Search term audit recency, material irrelevant spend, broad-match control, close variant pollution, zero-conversion keywords |
| Account structure | Brand vs non-brand separation, campaign fragmentation, ad-group theme coherence |
| Performance Max | Applicability, Search and PMax overlap, asset coverage, audience signals, brand incrementality review |
| Creative assets | RSA counts, Ad Strength, pinning strategy, ad freshness, extensions |
| Bidding and budgets | Smart bidding strategy, target reasonableness, learning phase status, budget-constrained campaigns |
Two things distinguish this from a checklist tool. First, a control only affects the health score when current account evidence, owner-defined economics, and an applicable official source establish the expectation. There are no fixed platform-wide thresholds baked in, and no benchmark is applied without checking objective, geography, methodology, sample size, conversion lag, and account maturity. Second, optional and beta features (AI Max for Search, Demand Gen feature stacks, new bidding betas) are never scored. They land in an unscored opportunity list with an eligibility check, so an account is never penalized for not adopting something it may not even have access to. The audit areas and guardrails are summarized on the Google platform page.
Step 1: Install and set up
Two commands in Claude Code:
/plugin marketplace add AgriciDaniel/claude-ads
/plugin install claude-ads@ai-marketing-hub-claude-ads
One naming note: plugin installs namespace commands, so /ads setup is typed /claude-ads:ads setup. Standalone installs from a local clone use the bare /ads form, which this guide uses throughout.
Then run /ads setup once to build the client profile the audit reuses: objective, conversion taxonomy, geography, economics and targets, active platforms, date and time conventions, and which data sources you can provide. Skipping it means more unknown results later, because controls that depend on your economics stay unknown instead of being guessed.
Step 2: Gather evidence
You do not need API access. The audit accepts authorized exports, screenshots, manual metrics, and authenticated reads, and it records exactly which source backed each finding. For a Google run, the inputs that cover the most controls are:
- A search terms report for the date window you care about
- Campaign and ad group exports with spend, conversions, and settings
- A look at the conversion actions screen and Google Tag status
- Asset group detail for any Performance Max campaigns
Everything you supply is normalized into an account snapshot with source lineage preserved and missing fields marked. Missing evidence does not get papered over: unknown controls reduce evidence coverage instead of silently shifting the health score.
Step 3: Run the Google Ads audit
For a Google-only pass, invoke the platform skill directly. For the full pipeline with cross-platform workers and scoring, run the audit command scoped to Google:
/ads google
/ads audit google
Either way, the audit command machinery does the heavy lifting: it creates a run manifest, dispatches the Google worker (plus cross-platform workers for tracking, creative, budget, and policy when their inputs exist), validates every finding against a common schema, and scores deterministically in code, never in the prompt. The output is one atomic run bundle: manifest.json, account-snapshot.json, audit.json, action-plan.json, and a rendered report.md, with optional HTML and PDF.
The search terms review and the negatives evidence rule
The search terms section checks how recently anyone actually reviewed the report, whether material spend is going to irrelevant queries, how broad match is being controlled, whether close variants are polluting exact-intent ad groups, and whether account-level negatives exist and are governed.
Here is the behavior that surprises people: Claude Ads will not generate a negative keyword list without evidence. The Google skill has a hard boundary on this. It never suggests or illustrates specific negatives without a search terms report plus a business-relevance and overblocking review, and it will not substitute a generic "starter" or "commonly excluded" list as a workaround. If you have ever inherited an account where a template negative list blocked a profitable product line, you know why this rule exists. The tool asks for the report instead of inventing exclusions.
When the evidence is there, proposed negatives arrive as drafts. Nothing is applied to the account until you explicitly approve it through the mutation gate.
Performance Max checks
PMax gets its own control set because it hides so much. The worker evaluates whether PMax is applicable to the objective at all, whether it overlaps with existing Search campaigns, whether asset groups have full coverage including video, whether audience signals and search themes are configured, whether final URL expansion matches intent, and whether anyone has reviewed how much PMax volume is actually incremental versus captured brand demand. PMax negative keyword handling is checked for applicability against the account's current access rather than assumed.
Conversion tracking
Measurement controls sit at the top of the control registry because nothing downstream is trustworthy without them: conversion actions defined and separated into micro versus macro, enhanced conversions applicability, server-side tracking where relevant, consent signals for regulated regions, conversion window fit, attribution model, value assignment, duplicate counting, GA4 linkage, and Google Tag firing. If tracking findings come back fail at high severity, treat everything else in the report as provisional until they are fixed.
How to read your Google Ads audit results
The bundle keeps health and evidence coverage separate. Coverage is graded at 80 percent or better, provisional between 60 and 79 percent, and insufficient below 60 percent, in which case you get "insufficient evidence" rather than an invented grade. There are no letter grades and no universal rules: every recommendation names the observed evidence, the baseline it was judged against, the expected mechanism, a reversible next step, a measurement window, and a rollback condition.
What it will not do: apply changes for you without approval, score betas you cannot access, or hand you a negative list it cannot defend. Those limits are the point.
Try it
Install is two commands inside Claude Code, and the tool is free and open source under the MIT License. Full instructions are on the install page.
/plugin marketplace add AgriciDaniel/claude-ads
/plugin install claude-ads@ai-marketing-hub-claude-ads
Run /ads setup, hand it a search terms report, and see what an evidence-graded audit says about an account you think you already know.