Campaign Serving Status Checker
Lists every enabled campaign whose primary status isn't ELIGIBLE, with Google's stated reasons — the fastest answer to "why did this campaign stop showing?"
by Dmytro Tonkikh·chiliad.io
Lists every enabled campaign whose primary status isn't ELIGIBLE, with Google's stated reasons — the fastest answer to "why did this campaign stop showing?"
by Dmytro Tonkikh·chiliad.io
Monitors your account for unexpected performance deviations by comparing today's stats against historical averages for the same weekday. Sends an alert email when impressions, clicks, conversions, or cost deviate beyond configurable thresholds.
One 0-100 score for the whole account, built from seven objective checks — tracking flatlines, disapprovals, serving status, budget losses, negative coverage and query hygiene — with the deduction breakdown as your fix list.
Finds the structural gaps that stop ad groups from serving: ad groups without active ads, without an RSA, without keywords, keyword-stuffed themes, and multi-RSA ad groups.
Generates a daily at-a-glance performance overview of your entire Google Ads account. Writes prior-day stats to a Google Sheet with running history and optionally emails a formatted comparison of yesterday vs. two days ago vs. one week ago.
Generates a Google Spreadsheet with ad performance stats segmented by headline and final URL, including distribution charts. Covers all ad types and optionally emails the report link weekly.
Maps every campaign's ad schedule and flags forgotten narrow serving windows, stale schedule bid modifiers that Smart Bidding ignores, and (optionally) campaigns running 24/7.
Enabled does not mean serving. Campaign Serving Status Checker reads Google's primary status for every enabled campaign and reports each one that isn't ELIGIBLE, together with the primary status reasons — budget limitations, pending or passed dates, policy problems, billing issues, misconfigurations. Learning phases are ignored by default since they're normal. The email fires only when something isn't serving.
| Variable | Default |
|---|---|
IGNORE_STATUSES | ['LEARNING'] |
EMAIL_ADDRESS | (empty) |
=== Campaign Serving Status === Enabled campaigns checked: 24 Not fully eligible: 2 (ignoring: LEARNING) [LIMITED] Generic — Broad Reasons: BUDGET_CONSTRAINED [NOT_ELIGIBLE] Summer Sale 2026 Reasons: CAMPAIGN_ENDED Email sent to you@example.com
Primary status and reasons are the same signals shown in the UI's Status column, so this is effectively a daily sweep of that column across all campaigns. Reasons like BUDGET_CONSTRAINED are performance hints rather than outages — the hard stops are the NOT_ELIGIBLE and MISCONFIGURED families.