Year-over-Year Performance Report
Compares the last full month against the same month one year earlier, per campaign and account-wide — the comparison that separates seasonality from real growth or decline.
by Dmytro Tonkikh·chiliad.io
Overview
Month-over-month comparisons lie in seasonal businesses; year-over-year doesn't. This report compares the last complete month against the same month one year earlier: account totals plus per-campaign cost, conversions and CPA with percentage changes — and it explicitly marks campaigns that are NEW since last year or GONE, so restructures don't masquerade as performance changes.
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 to receive the report; leave blank for logs only.
- 4Preview once to verify, then schedule monthly (early in the month, after the previous month closes).
Configuration Variables
| Variable | Default |
|---|---|
TOP_CAMPAIGNS | 20 |
EMAIL_ADDRESS | (empty) |
Expected Output
=== Year-over-Year: 2026-06 vs 2025-06 === ACCOUNT: cost 12480.55 (+22%) conversions 302.0 (+31%) CPA 41.33 (was 44.12) Brand — Exact: cost 2210.80 (+8%) conversions 74.0 (+12%) CPA 29.88 (was 30.95) Generic — Broad: cost 4102.44 (+64%) conversions 61.0 (+18%) CPA 67.25 (was 48.30) PMax — Bestsellers: NEW since last year - cost 3105.20, conversions 96.0 Display — Prospecting: GONE (last year: cost 840.20, conversions 6.0) Email sent to you@example.com
Notes
Conversion counting, attribution settings and campaign structure may have changed over a year — read big CPA swings with that in mind. The account line includes all campaigns; the per-campaign list is capped by TOP_CAMPAIGNS.