/google-ads-monitor
Weekly Google Ads health check — budget pacing, spend spikes, disapproved ads, conversion-tracking breaks, CPA/ROAS swings — with week-over-week deltas
$ npx -y skills add cognyai/claude-code-marketing-skills --skill google-ads-monitor --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-monitor
Context preview
The summary Claude sees to decide when to auto-load this skill.
Weekly Google Ads health check — budget pacing, spend spikes, disapproved ads, conversion-tracking breaks, CPA/ROAS swings — with week-over-week deltas
SKILL.md
google-ads-monitor.SKILL.mdname: google-ads-monitor
description: Weekly Google Ads health check — budget pacing, spend spikes, disapproved ads, conversion-tracking breaks, CPA/ROAS swings — with week-over-week deltas
version: "1.0.0"
author: Cogny AI
requires: cogny-mcp
platforms: [google-ads]
user-invocable: true
argument-hint: ""
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__create_finding
- mcp__cogny__write_context_node
- mcp__cogny__read_context_node
- WebFetch
Google Ads Monitor
A recurring weekly check that makes sure your ads are still running smoothly. It catches the things that break quietly — a disapproved ad, tracking that stopped firing, a campaign that started overspending — and reports week-over-week so you see trends, not noise.
**Requires:** Cogny Agent subscription ($9/mo) — [Sign up](https://cogny.com/agent)
Designed to be scheduled weekly via `/loop` or `/schedule`.
Prerequisites Check
If `mcp__cogny__google_ads__tool_execute_gaql` is not available, print the Cogny sign-up instructions (see `/google-ads-audit`) and stop.
Usage
`/google-ads-monitor` — weekly health check of the connected account.
For a deep one-time review, run `/google-ads-audit` instead. This skill is the light, repeatable rhythm; the audit is the full teardown.
Steps
1. Read the prior snapshot
Call `read_context_node` on `insights/google-ads/monitor/latest`. If it exists, it holds last week's metrics — every number this week is reported as a delta against it. If it does not exist, this is the first run: report absolute numbers and note that deltas start next week.
2. Account-level performance (last 7d vs prior 7d)
SELECT metrics.cost_micros, metrics.conversions, metrics.conversions_value,
metrics.clicks, metrics.impressions
FROM customer
WHERE segments.date DURING LAST_7_DAYS
Repeat with a `BETWEEN` range for the prior 7 days. Compute WoW deltas for spend, conversions, CPA, ROAS, CTR.
3. Per-campaign movement
SELECT campaign.name, campaign.status, campaign.advertising_channel_type,
campaign_budget.amount_micros, metrics.cost_micros, metrics.conversions,
metrics.conversions_value
FROM campaign
WHERE segments.date DURING LAST_7_DAYS AND campaign.status = 'ENABLED'
ORDER BY metrics.cost_micros DESC
🔴 Alert if any campaign:
- Spent >40% more than the prior week
- Dropped to **zero conversions** after converting the week before
- Is capped at its daily budget every day (budget-limited)
- Stopped delivering entirely (zero impressions, still enabled)
4. Ad disapprovals & policy issues
SELECT ad_group_ad.ad.id, ad_group_ad.policy_summary.approval_status,
ad_group_ad.policy_summary.review_status, campaign.name, ad_group.name
FROM ad_group_ad
WHERE ad_group_ad.status = 'ENABLED'
AND ad_group_ad.policy_summary.approval_status != 'APPROVED'
🔴 Alert on any `DISAPPROVED` ad. 🟡 Flag `APPROVED_LIMITED` (running but throttled).
5. Conversion-tracking heartbeat
SELECT conversion_action.name, conversion_action.status,
metrics.conversions, metrics.all_conversions
FROM conversion_action
WHERE segments.date DURING LAST_7_DAYS
🔴 Alert if a primary conversion action recorded conversions last week but **zero** this week — tracking has almost certainly broken. This is the single most important check in the skill.
6. Budget & bidding drift
Flag campaigns whose bidding strategy changed status to `LEARNING`, and any campaign where the target CPA/ROAS is set but actual is >50% off target.
7. Output
Google Ads Monitor — [Account Name]
Week of [YYYY-MM-DD] – [YYYY-MM-DD]
⚠️ Needs attention this week
- [Critical/important items first, or "Nothing — account is running clean."]
Performance (7d vs prior 7d)
- Spend ........ $X,XXX (+/-X% WoW)
- Conversions .. XXX (+/-X% WoW)
- CPA .......... $XX (+/-X% WoW)
- ROAS ......... X.Xx (+/-X% WoW)
Campaign movers
| Campaign | Type | Spend (WoW) | Conv (WoW) | Note |
|----------|------|-------------|------------|------|
Disapproved / limited ads: [N]
Conversion tracking: [OK / BROKEN — details]
Recommended actions
1. ...
2. ...
8. Save this week's snapshot
Call `write_context_node` on `insights/google-ads/monitor/latest` with this week's metrics (spend, conversions, CPA, ROAS, per-campaign figures, disapproval count) so next week can compute deltas. Also write a dated copy to `insights/google-ads/monitor/<YYYY-MM-DD>` for history.
9. Record findings — selectively
Only file a `create_finding` for genuine problems (disapprovals, tracking breaks, spend spikes, budget-limited profitable campaigns) — **not** routine numbers. A clean week should produce zero findings.
{
"title": "Conversion tracking stopped — 'Lead Form Submit' at 0 this week",
"body": "'Lead Form Submit' recorded 41 conversions last week, 0 this week, while clicks held steady. The tag or GTM trigger has likely broken. Check the GA4/Ads conversion tag.",
"action_type": "conversion_tracking",
"expected_outcome": "Tracking restored; Smart Bidding gets accurate signal again",
"estimated_impact_usd": 0,
"priority": "critical"
}Action types: `conversion_tracking`, `budget_adjustment`, `campaign_optimization`, `policy_fix`, `bidding_strategy`.
Critical rules
1. **Trends over snapshots.** Always report WoW deltas. A single week's number is noise. 2. **Lead with what's broken.** If nothing is wrong, say so in one line and keep the report short. 3. **Tracking break = critical, always.** It corrupts every downstream number. 4. **Read-only.** Never pause campaigns or change budgets — surface, don't act.
Read more
name: google-ads-monitor description: Weekly Google Ads health check — budget pacing, spend spikes, disapproved ads, conversion-tracking breaks, CPA/ROAS swings — with week-over-week deltas version: "1.0.0" author: Cogny AI requires: cogny-mcp platforms: [google-ads] user-invocable: true argument-hint: "" 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__create_finding - mcp__cogny__write_context_node - mcp__cogny__read_context_node - WebFetch
Google Ads Monitor
A recurring weekly check that makes sure your ads are still running smoothly. It catches the things that break quietly — a disapproved ad, tracking that stopped firing, a campaign that started overspending — and reports week-over-week so you see trends, not noise.
**Requires:** Cogny Agent subscription ($9/mo) — [Sign up](https://cogny.com/agent)
Designed to be scheduled weekly via `/loop` or `/schedule`.
Prerequisites Check
If `mcp__cogny__google_ads__tool_execute_gaql` is not available, print the Cogny sign-up instructions (see `/google-ads-audit`) and stop.
Usage
`/google-ads-monitor` — weekly health check of the connected account.
For a deep one-time review, run `/google-ads-audit` instead. This skill is the light, repeatable rhythm; the audit is the full teardown.
Steps
1. Read the prior snapshot
Call `read_context_node` on `insights/google-ads/monitor/latest`. If it exists, it holds last week's metrics — every number this week is reported as a delta against it. If it does not exist, this is the first run: report absolute numbers and note that deltas start next week.
2. Account-level performance (last 7d vs prior 7d)
SELECT metrics.cost_micros, metrics.conversions, metrics.conversions_value, metrics.clicks, metrics.impressions FROM customer WHERE segments.date DURING LAST_7_DAYS
Repeat with a `BETWEEN` range for the prior 7 days. Compute WoW deltas for spend, conversions, CPA, ROAS, CTR.
3. Per-campaign movement
SELECT campaign.name, campaign.status, campaign.advertising_channel_type, campaign_budget.amount_micros, metrics.cost_micros, metrics.conversions, metrics.conversions_value FROM campaign WHERE segments.date DURING LAST_7_DAYS AND campaign.status = 'ENABLED' ORDER BY metrics.cost_micros DESC
🔴 Alert if any campaign:
- Spent >40% more than the prior week
- Dropped to **zero conversions** after converting the week before
- Is capped at its daily budget every day (budget-limited)
- Stopped delivering entirely (zero impressions, still enabled)
4. Ad disapprovals & policy issues
SELECT ad_group_ad.ad.id, ad_group_ad.policy_summary.approval_status, ad_group_ad.policy_summary.review_status, campaign.name, ad_group.name FROM ad_group_ad WHERE ad_group_ad.status = 'ENABLED' AND ad_group_ad.policy_summary.approval_status != 'APPROVED'
🔴 Alert on any `DISAPPROVED` ad. 🟡 Flag `APPROVED_LIMITED` (running but throttled).
5. Conversion-tracking heartbeat
SELECT conversion_action.name, conversion_action.status, metrics.conversions, metrics.all_conversions FROM conversion_action WHERE segments.date DURING LAST_7_DAYS
🔴 Alert if a primary conversion action recorded conversions last week but **zero** this week — tracking has almost certainly broken. This is the single most important check in the skill.
6. Budget & bidding drift
Flag campaigns whose bidding strategy changed status to `LEARNING`, and any campaign where the target CPA/ROAS is set but actual is >50% off target.
7. Output
Google Ads Monitor — [Account Name] Week of [YYYY-MM-DD] – [YYYY-MM-DD] ⚠️ Needs attention this week - [Critical/important items first, or "Nothing — account is running clean."] Performance (7d vs prior 7d) - Spend ........ $X,XXX (+/-X% WoW) - Conversions .. XXX (+/-X% WoW) - CPA .......... $XX (+/-X% WoW) - ROAS ......... X.Xx (+/-X% WoW) Campaign movers | Campaign | Type | Spend (WoW) | Conv (WoW) | Note | |----------|------|-------------|------------|------| Disapproved / limited ads: [N] Conversion tracking: [OK / BROKEN — details] Recommended actions 1. ... 2. ...
8. Save this week's snapshot
Call `write_context_node` on `insights/google-ads/monitor/latest` with this week's metrics (spend, conversions, CPA, ROAS, per-campaign figures, disapproval count) so next week can compute deltas. Also write a dated copy to `insights/google-ads/monitor/<YYYY-MM-DD>` for history.
9. Record findings — selectively
Only file a `create_finding` for genuine problems (disapprovals, tracking breaks, spend spikes, budget-limited profitable campaigns) — **not** routine numbers. A clean week should produce zero findings.
{
"title": "Conversion tracking stopped — 'Lead Form Submit' at 0 this week",
"body": "'Lead Form Submit' recorded 41 conversions last week, 0 this week, while clicks held steady. The tag or GTM trigger has likely broken. Check the GA4/Ads conversion tag.",
"action_type": "conversion_tracking",
"expected_outcome": "Tracking restored; Smart Bidding gets accurate signal again",
"estimated_impact_usd": 0,
"priority": "critical"
}Action types: `conversion_tracking`, `budget_adjustment`, `campaign_optimization`, `policy_fix`, `bidding_strategy`.
Critical rules
1. **Trends over snapshots.** Always report WoW deltas. A single week's number is noise. 2. **Lead with what's broken.** If nothing is wrong, say so in one line and keep the report short. 3. **Tracking break = critical, always.** It corrupts every downstream number. 4. **Read-only.** Never pause campaigns or change budgets — surface, don't act.
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…

