Ad Schedule Audit
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.
by Dmytro Tonkikh·chiliad.io
Overview
Ad Schedule Audit reads every campaign's ad schedule criteria and flags three situations: scheduled campaigns serving fewer hours per week than your threshold (sometimes intentional, often a forgotten experiment strangling delivery), schedule bid modifiers on campaigns using Smart Bidding (the algorithm ignores them — they're leftover configuration that misleads whoever reads the settings), and, informationally, campaigns running 24/7 (fine for e-commerce; questionable for phone-dependent lead gen).
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 MIN_HOURS_PER_WEEK; set FLAG_24_7 = false to hide the informational list.
- 4Set EMAIL_ADDRESS to receive the report; leave blank for logs only.
- 5Preview once to verify, then schedule monthly.
Configuration Variables
| Variable | Default |
|---|---|
MIN_HOURS_PER_WEEK | 40 |
FLAG_24_7 | true |
EMAIL_ADDRESS | (empty) |
Expected Output
=== Ad Schedule Audit === Campaigns: 18 Scheduled: 6 Running 24/7: 12 --- NARROW WINDOW (under 40 hours/week) --- Lead Gen — Callers - 25 scheduled hours/week --- STALE MODIFIERS (Smart Bidding ignores schedule modifiers) --- Generic — Broad - 4 schedule bid modifier(s) under Smart Bidding (ignored) --- RUNNING 24/7 - INFO --- Brand — Exact Shopping — All Products Email sent to you@example.com
Notes
Scheduled hours are computed from the schedule slots (account time zone). A schedule with modifiers but full-week coverage counts as scheduled, not 24/7. For dayparting decisions based on performance data, pair this with an hour-of-day bid adjuster — this script audits configuration, not performance.