---
name: run-a-daily-account-health-check
description: >-
  A strict 10-15 minute read-only morning triage of a Google Ads account: verifies conversion
  actions are still recording (gads_list_conversion_actions), compares yesterday's spend and
  conversions to normal (gads_get_account_performance, gads_run_gaql_query), sweeps for new
  disapprovals (gads_get_disapproved_ads), scans change history for auto-applied or unknown edits,
  and checks bid-strategy status, flagging issues rather than fixing them. Run it every business
  day and daily for the first 1-2 weeks after any launch or major change. Do not use it to
  diagnose a flagged anomaly (investigate-performance-anomalies), to clear disapprovals
  (resolve-ad-disapprovals), or as a substitute for the weekly performance review, this skill
  detects damage, it does not optimize anything.
---
# Daily Damage-Detection Triage

## Purpose
The daily check exists to answer one question: did anything break since yesterday? Broken
tracking, a spend blowout, a disapproved top ad, or a stealth auto-applied change each get more
expensive by the hour, and none of them announce themselves. This skill is a fast, fixed-order,
read-only sweep that separates "act now" from "note for the weekly review", and deliberately
refuses to do analysis, because diagnosis during triage is how a 13-minute scan becomes a lost
morning.

## When to run
- Every business day, ideally at a consistent time each morning.
- Daily for 7-14 days after launching campaigns or making structural changes (tracking, bidding,
  budgets).
- On demand after any event that could have destabilized the account overnight.

## When NOT to run
- Something is already flagged and you need the cause, that is
  investigate-performance-anomalies.
- Disapprovals were found and need clearing, that is resolve-ad-disapprovals.
- You want week-over-week trends and optimization decisions, that is the weekly review
  (run-a-weekly-performance-review), not this scan.
- You are trying to build the automated detection layer itself, configure-account-alerts.

## Prerequisites
- Read access to the account via VigilDog.
- Reference values for "normal": expected daily spend per campaign, typical daily conversion
  volume (derivable once from 30 days of history and reused).
- The flag log location from previous days, so today's entry appends to a running record.

## Procedure
Hold the whole pass to roughly 15 minutes. This skill makes no Google Ads writes; anything
requiring a change is flagged and routed.

1. Tracking pulse (most important two minutes). Call `gads_list_conversion_actions` and confirm
   every primary action's status is active and none report a recording problem. Then pull
   yesterday's account-level conversions via `gads_get_account_performance` and compare to the
   typical day:
   - In normal range → continue.
   - Low but nonzero → flag for the weekly review.
   - Zero or near-zero in an account that converts daily → stop the triage; this is a tracking
     emergency until proven otherwise. Route immediately to investigate-performance-anomalies /
     the conversion-tracking skill, and inform the user now.
2. Spend sanity. Query yesterday's cost per campaign with `gads_run_gaql_query`, sorted
   descending, against expected levels:
   - Within about ±20% of expected → normal.
   - Above ~120% of expected → check whether a budget change explains it (step 5 will show it);
     flag if not.
   - Zero spend on an ENABLED campaign → flag urgent; check status, bid strategy, and ad/keyword
     eligibility during follow-up, not now.
   Also glance at month-to-date pacing; note if the account is running >10% hot against the
   monthly plan.
3. Budget ceilings. Same GAQL pass: read budget-lost impression share and flag campaigns that are
   newly budget-capped, a priority campaign hitting its ceiling is a quiet volume leak.
4. Policy sweep. Run `gads_get_disapproved_ads`. New disapprovals since yesterday:
   - On high-impression ads → same-day action; route to resolve-ad-disapprovals.
   - On minor ads → flag for the weekly batch.
   Include asset-level status in the sweep (sitelinks/images), which is where quiet losses hide.
5. Change audit. Pull yesterday's entries from `gads_get_change_history`:
   - Only known, intended changes → fine.
   - Auto-applied recommendation changes → flag; review whether they conflict with strategy and
     revert through the owning skill if so.
   - Changes from an unrecognized user or integration → flag urgent and tell the user today.
6. Delivery anomaly scan. Compare yesterday's impressions and clicks per campaign against the
   prior day and the same weekday last week via `gads_run_gaql_query`; deviations beyond ~40%
   get flagged (not investigated).
7. Bidding status. Call `gads_list_bidding_strategies` and confirm each strategy reports a
   healthy/serving state or an expected learning phase. Anything limited or misconfigured is a
   same-day flag.
8. Opportunistic extras (only if under time): skim `gads_list_recommendations` for repair-type
   items that indicate breakage (not for optimization ideas, those belong to
   manage-google-recommendations).
9. HUMAN STEP (outside VigilDog): click through 2-3 top ads to confirm landing pages load and match
   the ad's message. VigilDog cannot render the pages; if the account has many URLs, the user
   should run an automated URL monitor instead of manual spot checks.
10. Log and route. Append a dated entry: tracking OK/broken, spend OK/flags, disapprovals count,
    anomalies flagged, changes found, actions taken. Same-day items: broken tracking, high-volume
    disapproval, unexplained spend spike, misconfigured bid strategy. Everything else rides to
    the weekly review.

## Decision rules
- Hard time cap ~15 minutes. Consistently exceeding it means detection should move into
  configure-account-alerts, not that triage should get longer.
- Zero conversions overnight in a converting account is always a stop-everything event.
- Spend tolerance band ±20%; breach without a matching change-history entry = flag.
- Delivery deviation threshold ~40% day-over-day or vs. same weekday last week.
- Flag versus fix: only the four same-day categories in step 10 get acted on today; everything
  else is written down and left alone.
- Compare weekday to same weekday, not to yesterday alone, weekly seasonality fakes anomalies.
- After a launch or structural change, keep the daily cadence for 7-14 days even if the first
  days look clean; instability typically shows once learning phases settle.

## Common failure modes
- Triage becoming analysis: one interesting flag swallows the morning. Log it, route it, move on.
- Skipping days because "nothing ever happens", the cost of the miss is precisely that the rare
  breakage runs for days. Consistency is the entire value.
- Never opening change history, and therefore never noticing auto-applied recommendations
  quietly reshaping the account.
- Watching only ad-level policy status while an asset disapproval bleeds reach.
- Treating flags as fixed because they were written down; the weekly review must consume the
  flag log, or the log is theater.

## Related skills
- configure-account-alerts, build the automated layer that shortens this scan.
- investigate-performance-anomalies, where flagged anomalies get diagnosed.
- resolve-ad-disapprovals, where flagged disapprovals get cleared.
- run-a-weekly-performance-review, consumes this skill's flag log for real analysis.
- manage-google-recommendations, the monthly, strategic pass over recommendations.
