/google-ads-audit
Comprehensive Google Ads account audit — campaign structure, budget pacing, conversion tracking, wasted spend — across every campaign type, ranked by estimated $ impact
$ npx -y skills add cognyai/claude-code-marketing-skills --skill google-ads-audit --agent claude-codeHow it fires
How this skill gets triggered: by you, by Claude, or both.
- Fires itselfAuto-invocation. Claude auto-loads it when your prompt matches the work.Auto-invocation is when the right skill fires by itself at the right moment, driven by a FLOW.md router and a hook, instead of you invoking it by name. It is the difference between a skill being installed and a skill actually getting used.Read the full definition →
- You can call itInvoke it directly when you want it.
- Slash command
/google-ads-audit
Context preview
The summary Claude sees to decide when to auto-load this skill.
Comprehensive Google Ads account audit — campaign structure, budget pacing, conversion tracking, wasted spend — across every campaign type, ranked by estimated $ impact
SKILL.md
google-ads-audit.SKILL.mdname: google-ads-audit
description: Comprehensive Google Ads account audit — campaign structure, budget pacing, conversion tracking, wasted spend — across every campaign type, ranked by estimated $ impact
version: "1.0.0"
author: Cogny AI
requires: cogny-mcp
platforms: [google-ads]
user-invocable: true
argument-hint: "[full|campaigns|budget|tracking|negatives]"
allowed-tools:
- mcp__cogny__google_ads__tool_list_accessible_accounts
- mcp__cogny__google_ads__tool_execute_gaql
- mcp__cogny__google_ads__tool_get_gaql_doc
- mcp__cogny__google_ads__tool_get_reporting_view_doc
- mcp__cogny__create_finding
- WebFetch
- WebSearch
Google Ads Audit
A one-time, account-wide Google Ads health audit using live data via Cogny's MCP server. Covers every campaign type, scores the account out of 100, and routes you to the right campaign-type skill for deeper drill-down.
**Requires:** Cogny Agent subscription ($9/mo) — [Sign up](https://cogny.com/agent)
Prerequisites Check
Verify Google Ads MCP tools are available. If `mcp__cogny__google_ads__tool_execute_gaql` is not available:
This skill requires Cogny's Google Ads MCP server.
1. Sign up at https://cogny.com/agent
2. Connect your Google Ads account
3. Add Cogny to your .mcp.json (see the repo README)
4. Restart Claude Code
Stop here if the tools are missing — do not guess at numbers.
Usage
`/google-ads-audit` — full account audit `/google-ads-audit campaigns` — campaign structure + performance only `/google-ads-audit budget` — budget pacing only `/google-ads-audit tracking` — conversion tracking sanity only `/google-ads-audit negatives` — account negatives + exclusions only
Approach
This is the **account-level** audit — it finds structural problems and wasted spend across the whole account. For campaign-type depth (asset groups, keywords, feeds, audiences) it points you to `/pmax-audit`, `/search-campaign-audit`, `/shopping-campaign-audit`, or `/demand-gen-audit`.
All money fields come back in micros — divide `cost_micros` etc. by 1,000,000.
Steps
1. Account discovery
tool_list_accessible_accounts
If multiple accounts are accessible, list them and ask which to audit. Confirm the account name and currency before continuing.
2. Campaign overview by channel type (last 30 days)
SELECT campaign.name, campaign.status, campaign.advertising_channel_type,
campaign.bidding_strategy_type, campaign_budget.amount_micros,
metrics.cost_micros, metrics.conversions, metrics.conversions_value,
metrics.clicks, metrics.impressions
FROM campaign
WHERE segments.date DURING LAST_30_DAYS
ORDER BY metrics.cost_micros DESC
Build a per-channel-type summary (Search / Performance Max / Shopping / Display / Video / Demand Gen): total spend, conversions, CPA, ROAS (`conversions_value / cost`).
Flag:
- Campaigns spending >5% of account budget with **zero conversions**
- `MAXIMIZE_CONVERSIONS` / `TARGET_CPA` campaigns with <15 conversions/30d (too little
data for the bidding strategy to learn)
- Multiple campaigns of the same type competing for the same theme (self-competition)
- Enabled campaigns with zero spend (broken, or budget/targeting starved)
3. Conversion tracking sanity
**You must run BOTH queries below before flagging anything in this section.** Structure alone (which actions exist, which are `primary_for_goal`) tells you nothing about what is actually driving the bidding signal. A "Primary" action with zero recent volume is harmless; a "Secondary" action can be a deliberate dedup choice. Always cross-reference the structure against actual conversion volume per action.
**3a. Structure — which conversion actions exist:**
SELECT conversion_action.name, conversion_action.status, conversion_action.type,
conversion_action.category, conversion_action.counting_type,
conversion_action.primary_for_goal, conversion_action.include_in_conversions_metric
FROM conversion_action
**3b. Volume — which actions are actually firing (last 30 days):**
SELECT segments.conversion_action_name, segments.conversion_action_category,
metrics.all_conversions, metrics.all_conversions_value,
metrics.conversions, metrics.conversions_value
FROM customer
WHERE segments.date DURING LAST_30_DAYS
Then join: for every conversion action with non-trivial volume, note whether it is Primary or Secondary, and whether `metrics.conversions` (the bidding signal) or only `metrics.all_conversions` (the reporting signal) is counting it.
**3c. Reconcile against account totals.** Pull account-level `metrics.conversions` and `metrics.conversions_value` for the same window — the sum across Primary actions in 3b should match (within rounding). If it does, the `metrics.conversions` figure is the real booking/purchase/lead action and bidding is grounded in real value. **State this explicitly in the report before making any tracking claim.**
Flag (each must be backed by a number from 3b, not a guess from 3a):
- **No primary action has volume in the last 30 days** — bidding really is flying
blind. (Note: a Primary action with zero recent volume is harmless, not broken.)
- A high-volume real revenue action (purchase, booking, qualified lead) is Secondary
while a low-value proxy (page view, "Lokala åtgärder", "Detail product page view") is the only Primary — *that* is the "bidding on page views" pattern.
- `MANY_PER_CLICK` counting on a lead-gen action with meaningful volume (double-counts
leads; usually should be `ONE_PER_CLICK`).
- Two near-duplicate Primary actions both firing on the same event (e.g. on-site
booking + GA4 booking both Primary → double-counted bid signal).
- `REMOVED` / `HIDDEN` actions still receiving conversions.
**Do NOT flag:**
- A gap between `all_conversions` and `conversions`, by itself. That gap is just the
pile of Secondary actions (store visits, GA4 echoes of an on-site action, local actions, contacts, etc.) — it is often correct and intentional. Only
Read more
name: google-ads-audit description: Comprehensive Google Ads account audit — campaign structure, budget pacing, conversion tracking, wasted spend — across every campaign type, ranked by estimated $ impact version: "1.0.0" author: Cogny AI requires: cogny-mcp platforms: [google-ads] user-invocable: true argument-hint: "[full|campaigns|budget|tracking|negatives]" allowed-tools: - mcp__cogny__google_ads__tool_list_accessible_accounts - mcp__cogny__google_ads__tool_execute_gaql - mcp__cogny__google_ads__tool_get_gaql_doc - mcp__cogny__google_ads__tool_get_reporting_view_doc - mcp__cogny__create_finding - WebFetch - WebSearch
Google Ads Audit
A one-time, account-wide Google Ads health audit using live data via Cogny's MCP server. Covers every campaign type, scores the account out of 100, and routes you to the right campaign-type skill for deeper drill-down.
**Requires:** Cogny Agent subscription ($9/mo) — [Sign up](https://cogny.com/agent)
Prerequisites Check
Verify Google Ads MCP tools are available. If `mcp__cogny__google_ads__tool_execute_gaql` is not available:
This skill requires Cogny's Google Ads MCP server. 1. Sign up at https://cogny.com/agent 2. Connect your Google Ads account 3. Add Cogny to your .mcp.json (see the repo README) 4. Restart Claude Code
Stop here if the tools are missing — do not guess at numbers.
Usage
`/google-ads-audit` — full account audit `/google-ads-audit campaigns` — campaign structure + performance only `/google-ads-audit budget` — budget pacing only `/google-ads-audit tracking` — conversion tracking sanity only `/google-ads-audit negatives` — account negatives + exclusions only
Approach
This is the **account-level** audit — it finds structural problems and wasted spend across the whole account. For campaign-type depth (asset groups, keywords, feeds, audiences) it points you to `/pmax-audit`, `/search-campaign-audit`, `/shopping-campaign-audit`, or `/demand-gen-audit`.
All money fields come back in micros — divide `cost_micros` etc. by 1,000,000.
Steps
1. Account discovery
tool_list_accessible_accounts
If multiple accounts are accessible, list them and ask which to audit. Confirm the account name and currency before continuing.
2. Campaign overview by channel type (last 30 days)
SELECT campaign.name, campaign.status, campaign.advertising_channel_type, campaign.bidding_strategy_type, campaign_budget.amount_micros, metrics.cost_micros, metrics.conversions, metrics.conversions_value, metrics.clicks, metrics.impressions FROM campaign WHERE segments.date DURING LAST_30_DAYS ORDER BY metrics.cost_micros DESC
Build a per-channel-type summary (Search / Performance Max / Shopping / Display / Video / Demand Gen): total spend, conversions, CPA, ROAS (`conversions_value / cost`).
Flag:
- Campaigns spending >5% of account budget with **zero conversions**
- `MAXIMIZE_CONVERSIONS` / `TARGET_CPA` campaigns with <15 conversions/30d (too little
data for the bidding strategy to learn)
- Multiple campaigns of the same type competing for the same theme (self-competition)
- Enabled campaigns with zero spend (broken, or budget/targeting starved)
3. Conversion tracking sanity
**You must run BOTH queries below before flagging anything in this section.** Structure alone (which actions exist, which are `primary_for_goal`) tells you nothing about what is actually driving the bidding signal. A "Primary" action with zero recent volume is harmless; a "Secondary" action can be a deliberate dedup choice. Always cross-reference the structure against actual conversion volume per action.
**3a. Structure — which conversion actions exist:**
SELECT conversion_action.name, conversion_action.status, conversion_action.type, conversion_action.category, conversion_action.counting_type, conversion_action.primary_for_goal, conversion_action.include_in_conversions_metric FROM conversion_action
**3b. Volume — which actions are actually firing (last 30 days):**
SELECT segments.conversion_action_name, segments.conversion_action_category, metrics.all_conversions, metrics.all_conversions_value, metrics.conversions, metrics.conversions_value FROM customer WHERE segments.date DURING LAST_30_DAYS
Then join: for every conversion action with non-trivial volume, note whether it is Primary or Secondary, and whether `metrics.conversions` (the bidding signal) or only `metrics.all_conversions` (the reporting signal) is counting it.
**3c. Reconcile against account totals.** Pull account-level `metrics.conversions` and `metrics.conversions_value` for the same window — the sum across Primary actions in 3b should match (within rounding). If it does, the `metrics.conversions` figure is the real booking/purchase/lead action and bidding is grounded in real value. **State this explicitly in the report before making any tracking claim.**
Flag (each must be backed by a number from 3b, not a guess from 3a):
- **No primary action has volume in the last 30 days** — bidding really is flying
blind. (Note: a Primary action with zero recent volume is harmless, not broken.)
- A high-volume real revenue action (purchase, booking, qualified lead) is Secondary
while a low-value proxy (page view, "Lokala åtgärder", "Detail product page view") is the only Primary — *that* is the "bidding on page views" pattern.
- `MANY_PER_CLICK` counting on a lead-gen action with meaningful volume (double-counts
leads; usually should be `ONE_PER_CLICK`).
- Two near-duplicate Primary actions both firing on the same event (e.g. on-site
booking + GA4 booking both Primary → double-counted bid signal).
- `REMOVED` / `HIDDEN` actions still receiving conversions.
**Do NOT flag:**
- A gap between `all_conversions` and `conversions`, by itself. That gap is just the
pile of Secondary actions (store visits, GA4 echoes of an on-site action, local actions, contacts, etc.) — it is often correct and intentional. Only
AI marketing skills for Claude Code, Cursor, Windsurf, and other AI coding tools. Audit SEO, analyze ads, research competitors, qualify leads — all from your terminal. Free skills need no account. Premium skills connect your real data for $9/mo.
Repo: cognyai/claude-code-marketing-skills
Other skills on claude-code-marketing-skills.
brand-kit
Build a portable brand-kit.json for the user's product — colors, typography, voice — that other skills (video, ad creative, landing page) can consume. Multiple…
cogny
Run Cogny marketing analysis tasks — fetch scheduled tasks, analyze ad accounts via MCP, report findings
community-pulse
Weekly read on Discord community health — joins, active channels, top contributors, themes, and unanswered questions
conversion-debug
Conversion Tracking Debugger — diagnose discrepancies across GTM, GA4, Google Ads & Meta Pixel with live API access, BigQuery validation queries, and…

