Conversion Tracking Health Check
Detects broken conversion tracking before it wrecks Smart Bidding: flags conversion actions that flatlined vs their baseline, whole-account spend with zero conversions, and setups where nothing counts toward the Conversions column.
by Jordan Lagan (concept), chiliad (rewrite)·chiliad.io
Overview
Broken conversion tracking is the most expensive silent failure in PPC: campaigns keep spending while Smart Bidding optimizes toward nothing. This script compares each conversion action's recent window against its baseline window and alerts on three conditions: an established action recording zero recent conversions (the signature of a broken tag or import), the whole account spending with zero conversions recorded, and setups where no enabled action counts toward the 'Conversions' column. The email fires only when something is wrong — silence means healthy.
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.
- 3Set EMAIL_ADDRESS — this script is most valuable as an alert, not a log.
- 4Adjust RECENT_DAYS if your conversion volume is low (low-volume accounts need a longer window).
- 5Preview once to verify, then schedule daily.
Configuration Variables
| Variable | Default |
|---|---|
RECENT_DAYS | 7 |
BASELINE_DAYS | 30 |
MIN_BASELINE_CONVERSIONS | 5 |
EMAIL_ADDRESS | (empty) |
Expected Output
=== Conversion Tracking Health Check === Enabled conversion actions: 6 (3 counting toward Conversions) Recent window (2026-07-08 to 2026-07-14): 84.0 conversions, spend 3120.40 Baseline window (2026-06-08 to 2026-07-07): 361.5 conversions [PROBLEM] FLATLINED ACTION: "Purchase — website" recorded 118.0 conversions in the baseline window (2026-06-08 to 2026-07-07) but ZERO in the last 7 days. Check the tag, import, or the page it fires on. Email sent to you@example.com
Notes
Conversion data lags: website tags up to ~24h, offline imports much longer — verify before declaring an action dead, but always verify quickly. Uses all-conversions per action, so secondary actions are monitored too. On very low-volume accounts, raise RECENT_DAYS to avoid noise.