---
name: run-a-monthly-performance-review
description: >-
  The monthly deep pass that weekly reviews cannot do: month-over-month and year-over-year KPI
  assessment with full-year trajectory, tracking-integrity reconciliation against backend/GA4
  numbers with explicit discrepancy bands, a competitive check, a settings-drift and auto-applied-
  changes audit through change history and recommendations, baseline/threshold recalibration, and a
  prioritized month plan, exportable to Sheets. VigilDog automates every pull and comparison; the
  human owns target judgment and strategy calls. Run in the first week of each month, or when
  onboarding an account to establish baselines. Not the weekly tactical loop
  (run-a-weekly-performance-review), not the strategic goal/structure reset
  (run-a-quarterly-business-review), and the competitive section delegates to
  analyze-auction-insights when it deserves depth.
---
# Monthly Performance Review

## Purpose
Bridge tactical weeks and strategic quarters. The monthly review catches what moves too slowly for
weekly visibility, tracking drift, settings drift, competitive creep, stale thresholds, and
converts a month of data into a recalibrated baseline and a concrete plan. It is decision-oriented
and time-boxed (~90 minutes), not an open-ended data safari.

## When to run
- First week of every month, covering the prior full month.
- Onboarding a new account (initial baseline construction).
- Month three of a quarter: run it as the input feed for run-a-quarterly-business-review.

## When NOT to run
- Mid-month tactical questions, run-a-weekly-performance-review.
- Goals/structure/channel-mix are in question, run-a-quarterly-business-review.
- A single subsystem needs help (tracking broken, bids erratic), go straight to that skill; the
  monthly review is a sweep, not an ambulance.

## Prerequisites
- The month's weekly review outputs (flags, actions, carried items).
- Backend truth for reconciliation: CRM/ecommerce export or GA4 access via the VigilDog GA4 tools.
- Documented targets and current status-board thresholds.
- Prior month's review document for continuity.

## Procedure
1. Performance trends (~15 min). `gads_get_account_performance` for the full month vs prior
   month; `gads_run_gaql_query` for the same month last year (seasonality control). Table:
   conversions, spend, conversion value, CPA/ROAS, each vs target and vs both comparison
   periods. Project full-year pace from YTD via `gads_run_gaql_query` monthly buckets. Rank
   campaigns with `gads_get_campaign`/GAQL: top 5 by spend with target status, bottom 3 by
   efficiency as reallocation candidates.
2. Tracking integrity (~10 min). Reconcile the month's conversions and revenue against backend:
   `ga4_run_report` / `ga4_batch_run_reports` for GA4-side purchases/leads, plus the user's
   CRM/platform export. Compute discrepancy percentage and grade it (see decision rules). Then
   audit conversion plumbing with `gads_list_conversion_actions`: every intended action active
   and recording, correct primary/secondary split, windows and counting unchanged, no zombie
   duplicate actions. Any red here taints every other number in the review, flag prominently.
3. Competitive landscape (~10 min). Quick pass via `gads_get_auction_insights`: own IS trend,
   entrants, exits, and whether CPC movement correlates with competitor pressure. If flags fire
   (large IS swings, strong new entrant), spawn the full analyze-auction-insights procedure
   rather than deep-diving here.
4. Settings and structure audit (~15 min).
   - Drift check: `gads_get_campaign` across active campaigns, geo targeting, network settings,
     language, ad rotation, campaign conversion goals, versus the intended configuration on
     record.
   - Unattended automation: `gads_get_change_history` filtered to system/auto-applied sources for
     the month; list every change nobody made deliberately. Reversals of strategy-conflicting
     changes are executed via the relevant write skill with preview → user approval → commit
     (consult gads_policy_guardrail before the session's first write).
   - Recommendations queue: `gads_list_recommendations`; classify each as aligned (adopt via its
     proper skill), conflicting (dismiss, HUMAN STEP in the UI), or ignorable.
   - Structure: campaigns under ~30 conversions/month via GAQL = consolidation candidates for the
     structure backlog.
5. Baseline recalibration (~10 min). Compare each status-board threshold (CPA, ROAS, CVR, CTR
   bands) against the month's actuals. If a metric has sat consistently above or below its band
   for 2+ months, propose moving the band, up when green has become easy, down when the market
   has genuinely shifted. HUMAN STEP: the user ratifies threshold and target changes; document
   rationale.
6. Action plan (~10 min). Consolidate findings into P1/P2/P3 with owners and dates, each traced
   to the phase that produced it. Reassess the account's single active focus constraint: moved,
   resolved, or replaced. Write the review document; export tables via `sheets_export_report`
   for the stakeholder-facing copy.

## Decision rules
- Tracking discrepancy bands: under 10% = normal attribution slack, no action; 10-20% = monitor,
  investigate if the trend is worsening; over 20% = tracking is broken, route to the
  measurement skills and treat this month's efficiency readings as suspect.
- YoY beats MoM whenever seasonality exists; a MoM drop that matches last year's curve is not a
  finding.
- Full-year projection off target by more than ~15% → escalate to goal conversation, not more
  tactical tweaks.
- Threshold recalibration requires 2+ consecutive months of evidence, never off one month.
- Auto-applied changes are guilty until proven aligned: default is revert unless they match
  documented strategy.
- Sub-30-conversions/month campaigns get consolidation review, below that, Smart Bidding runs
  data-starved.
- Time-box at 90 minutes; a review that needs 3 hours is doing the weekly reviews' missed work, fix the weekly cadence instead.
- Reconciliation source hierarchy: platform/CRM backend beats GA4 beats Google Ads for "what
  actually happened"; GA4 is a cross-check with its own attribution lens, not ground truth.
- If cart data is live (set-up-cart-data-and-profit-tracking), report gross profit alongside
  revenue in phase 1, a revenue-flat, profit-down month is a real finding revenue tables hide.

## Common failure modes
- Re-running a big weekly review and skipping the monthly-only dimensions (tracking, drift,
  baselines), the checklist above exists to prevent exactly this.
- Skipping reconciliation because "tracking was fine last month"; drift is gradual and only this
  check catches it early.
- Never touching thresholds, so the status board goes stale and either everything is
  false-positive red or comfortably meaningless green.
- Letting auto-applied recommendations accumulate unreviewed for months.
- No written output, findings evaporate and next month rediscovers them.

## Related skills
- Fed by: run-a-weekly-performance-review (four of them), and daily health checks where they
  exist.
- Nested: analyze-auction-insights (competitive phase, when flags warrant depth).
- Feeds: run-a-quarterly-business-review.
- Routes findings to: set-up-google-ads-conversion-tracking / configure-conversion-adjustments
  (tracking reds), allocate-budget-across-campaigns (reallocation candidates),
  monitor-and-maintain-bid-strategy-health (target/limit issues),
  review-and-optimize-campaign-structure (consolidation backlog).
- Ecommerce accounts additionally check: set-up-cart-data-and-profit-tracking coverage and
  merchant feed health during the tracking phase.
- Lead-gen accounts additionally check: set-up-offline-conversion-tracking import reliability
  (upload success rate and CRM-vs-Ads counts) during the tracking phase.
