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
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
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.
Aggregates call assets per campaign — received vs missed, average duration, and the share of quality calls — and alerts when you're paying for calls nobody answers.
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).
| Variable | Default |
|---|---|
MIN_HOURS_PER_WEEK | 40 |
FLAG_24_7 | true |
EMAIL_ADDRESS | (empty) |
=== 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
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.