Year over year PPC analysis: how to explain why performance differs from last year

The Changeline team · Published · 7 min read

A year over year PPC analysis compares the same period across two years to see whether performance really changed. To explain the gap, first align weekdays and holidays, then confirm conversions were measured the same way, then review what your team, the platforms and the site changed in those weeks last year versus this year.

Why is my PPC performance down compared to last year?

Because three things differ between any two years: the calendar, the way results were measured, and the changes made to the account and the site. A year over year PPC analysis only explains a gap once you have checked all three, in that order.

Most YoY reports stop at the numbers: conversions are down 18%, CPA is up 22%. That tells you something moved, not why. Last year's figures were produced by last year's budgets, bids, campaigns, landing pages and tags. If you don't know what those were in the same weeks, you are comparing two results without knowing either recipe.

  • Calendar: weekdays don't line up, Easter moves (20 April 2025, 5 April 2026), Black Friday moves (28 November 2025, 27 November 2026).
  • Measurement: conversion actions, consent banners, tags and attribution settings change during a year.
  • Changes: campaigns launched or paused, budgets and bid strategies, new landing pages, CRM or offer changes, plus platform automations.

If the gap is mostly seasonal, read how to tell seasonality apart from your own changes. This article covers the full YoY check.

How do I set up a fair year over year comparison?

Compare the same weekdays, not the same dates, and move holiday weeks by hand. A Monday-to-Sunday week this year should be compared with the Monday-to-Sunday week 364 days earlier, not with the same calendar dates.

In Google Ads, open the date range in the upper right, turn on Compare and pick Previous period, Previous year or Custom, then Apply. The table then shows both ranges, the absolute change and the percentage change when you expand a column with the double arrows. In GA4, the date picker offers Previous period (match day of week), Previous period and Previous year; Google has removed the option that matched weekdays for the previous year, so for a weekday-aligned YoY in GA4 you need a custom range.

WhereYoY optionWhat to watch
Google AdsCompare → Previous year, or CustomCheck which dates are used; use Custom for 364-day alignment
GA4 reportsCompare → Previous year, or a custom rangeNo weekday matching for the previous year
GA4 explorationsCustom date rangesLimited by your data retention setting

Example: to compare Monday 5 to Sunday 11 October 2026, use Monday 6 to Sunday 12 October 2025. Same calendar dates would compare a Monday with a Sunday at the start of the range.

Also keep currency, tax settings and the account scope identical, and compare full weeks or full months, not partial ones.

Which measurement changes break a YoY comparison?

Any change to what counts as a conversion, or to how it is recorded, makes the two years incomparable until you adjust for it. Rule these out before you look at bids or creatives.

  • Conversion definitions: a conversion action added, removed, switched between primary and secondary, or given a new counting setting.
  • Consent: a new or changed cookie banner can lower observed conversions from one day to the next. See how to prove a consent banner caused a conversion drop.
  • Tags: a tag migration, a new Google Tag Manager container, or a fixed duplicate. A year with duplicate conversions will look better than it was.
  • Data availability: GA4 event data retention can be set to 2 or 14 months on standard properties (26, 38 or 50 months on Analytics 360). It does not affect standard aggregated reports, only explorations and funnel reports, so a YoY exploration needs at least 14 months of retention.

Write down the date of every measurement change you find. If one sits inside either comparison window, split the window at that date or compare a metric that wasn't affected, such as clicks or sessions.

How do I review last year's changes for the same weeks?

Pull every change made in the comparison window last year and in the same window this year, and lay them side by side. The differences between the two lists are your candidate causes.

  1. Export Google Ads change history for both windows. It covers the past 2 years in the interface, and you can filter by change type, campaign or ad group.
  2. Check Meta Ads Manager activity history for the same windows. Meta doesn't publish how long it keeps that history, so export what you need while it is visible.
  3. List site, tracking, CRM and offer changes from your own records: releases, landing page swaps, pricing, form changes, sales follow-up.
  4. Add external events for both years: holidays, promotions, competitor launches, stock problems.
  5. Mark which changes exist in one year but not the other. Those are the hypotheses to test.
SourceHow far backNotes
Google Ads change history (interface)Past 2 yearsShows who made the change, including Google Ads system and API
Google Ads API change_eventPast 30 daysMax 10,000 rows per query
Meta activity historyNot publishedExport early
Site, tracking, CRMOnly what you recordedUsually the biggest gap

For a structured way to read the Google side, use the Google Ads change history guide.

How do I find which change caused the year over year gap?

Put both years' changes on one timeline next to the metric, rule out tracking first, then test one hypothesis at a time. A cause should explain the timing and the size of the gap, not only its direction.

  1. Timeline: place this year's and last year's changes for the window on one view, with dates and owners: your team's edits, platform automations, site, tracking and CRM changes, external events.
  2. Tracking first: if a measurement change sits in either window, adjust or split the window before going further.
  3. Locate the divergence: plot the weekly YoY difference. Find the first week where it widened.
  4. Match changes to that week: list what changed in the days before the divergence this year, and what was running last year that is no longer running.
  5. Test one hypothesis: segment by campaign, device, country or landing page. A real cause shows up in the segment it touched and not elsewhere.

Example: conversions are down 18% YoY in October. The weekly gap opens in week 41. Last year a brand campaign with a higher budget ran in that week; this year it was paused in September. Brand conversions explain most of the gap, non-brand is flat, so the pause is the main cause, not the market.

For the full method, see marketing root cause analysis and how to explain a conversion drop to a client.

How do I make next year's comparison easier?

Keep a permanent change log outside the ad platforms, with the date, owner, reason and expected effect of every change. Next year, the YoY review becomes a filter by date instead of a reconstruction.

Platform history doesn't cover everything: the Google Ads API keeps 30 days of change events, Meta publishes no retention period, and nobody keeps your site and CRM changes for you. If an agency changes or access is removed, the history you relied on can go with it.

  • Log every change the day it happens, with a tag for its type (budget, bidding, creative, tracking, site, CRM).
  • Write the reason and what you expect to move. It is the part nobody remembers a year later.
  • Add GA4 annotations for major events, and keep the full record in one place. See GA4 annotations and the marketing change log template.

Changeline keeps that record per client project: Google Ads changes are imported automatically through a read-only connection (sync every 6 hours, the last 30 days on first connection), the rest is logged by the team, and everything stays as long as the project exists. Its change report builds a PDF of what changed in any period, which you can set next to the same weeks last year. More on the method in the marketing change log guide.

FAQ

What is a good year over year comparison period for PPC?

Use full weeks or full months and align weekdays: compare a Monday-to-Sunday week with the week 364 days earlier. Move holiday weeks such as Easter or Black Friday by hand, because their dates change every year. Avoid partial periods, which exaggerate differences.

Does Google Ads show changes from last year?

Yes. Google Ads change history lists changes to the account, campaigns and ad groups made during the past 2 years in the interface. The Google Ads API change_event resource only covers the past 30 days, so tools that rely on it need to store the data themselves.

Why does GA4 previous year comparison look wrong?

GA4's Previous year option compares the same dates, not the same weekdays, because the weekday-matching option for the previous year was removed. If weekdays matter for your business, set a custom comparison range shifted by 364 days. Also check whether a tracking change sits inside either range.

Can GA4 data retention affect year over year analysis?

Only in explorations and funnel reports. GA4 standard properties can keep event data for 2 or 14 months, and that setting does not affect standard aggregated reports. A YoY exploration needs 14 months of retention, set before the period you want to analyse.

How long does Meta keep Ads Manager activity history?

Meta doesn't publish a retention period for activity history. If you need last year's Meta changes for a YoY review, export them while they are visible and keep them in your own change log.

Sources

  1. About change history - Google Ads Help
  2. Change event - Google Ads API
  3. Compare and track your ads' performance over time - Google Ads Help
  4. Change and compare date ranges in reports - Analytics Help
  5. [GA4] Data retention - Analytics Help

Keep every change on one timeline

Changeline is a marketing change log for agencies and growth teams. Log a change in seconds and see it next to every other channel. Free while in early access.

Start now, free