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
Overview
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.
Setup
- 1Open your Google Ads account and go to Tools → Bulk Actions → Scripts.
- 2Click the + button to create a new script and paste the code below.
- 3Adjust IGNORE_STATUSES if you also want LEARNING campaigns reported.
- 4Set EMAIL_ADDRESS — this works best as a daily morning alert.
- 5Preview once to verify, then schedule daily.
Configuration Variables
| Variable | Default |
|---|---|
IGNORE_STATUSES | ['LEARNING'] |
EMAIL_ADDRESS | (empty) |
Expected Output
=== 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
Notes
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.