Seasonality in marketing metrics: how to tell it apart from your own changes

The Changeline team · Published · 7 min read

Seasonality in marketing metrics is the recurring rise and fall of demand tied to the calendar: holidays, paydays, school terms, weather. To tell it apart from your own changes, compare the same weeks last year aligned by weekday, check category demand in Google Trends, and look for metrics that moved more than the seasonal pattern predicts.

What is seasonality in marketing metrics?

Seasonality is the part of a metric's movement that repeats every year at roughly the same time, whatever you do in your accounts. Search volume, CPCs, conversion rates and average order value all follow the calendar to some degree.

Typical seasonal drivers are public holidays, end-of-month paydays, school holidays, weather, tax deadlines and retail events such as Black Friday. Some move every year: Easter, Ramadan and Chinese New Year fall on different dates, so a fixed calendar comparison can put the peak in the wrong week.

The problem is not seasonality itself. It is that seasonal moves and your own changes happen at the same time. In the week a budget was cut, a holiday may also have started. If you blame the wrong one, you undo a good change or keep a bad one.

How do I check if a drop is just seasonality?

Compare the same period last year, aligned by weekday, and look at the shape of the curve, not only the total. If last year shows the same dip in the same weeks, seasonality is the first suspect.

  1. Align by weekday. In GA4, open the date picker, click "Compare" and choose "Previous year", then "Apply". Google notes that the "Previous year (match day of week)" option has been removed, so the default comparison may set a Monday against a Sunday. Shift your custom range back 364 days (exactly 52 weeks) to keep weekdays aligned.
  2. Look at two or three years. One year can be an outlier. If the dip shows up every year, it is a pattern.
  3. Check moving dates. Easter, regional holidays and promotions you ran last year can shift a peak by one or two weeks.
  4. Check category demand. In Google Trends, compare your main category terms across the same window. Trends values are scaled from 0 to 100 relative to total searches in that place and time, so read them as a shape, not as volumes.
  5. Compare segments. If every channel, region and campaign dips together, demand is the likely cause. If only one campaign or one landing page drops, look at what changed there.

How do I measure the gap between the seasonal pattern and what happened?

Compute what the seasonal pattern predicts and compare it with what you got. The unexplained gap is what you need to investigate.

A simple method that works in a spreadsheet:

  1. Take the week-over-week change for the same weeks last year (the seasonal ratio).
  2. Apply it to this year's value for the week before the shift. That gives your expected value.
  3. Compare actual with expected. A small gap is noise; a large one points to something you or a platform changed.

Example (illustrative numbers): last year, leads fell 18% from week 40 to week 41 as school holidays started. This year they fell 32% over the same weeks. The season explains roughly 18 points; the other 14 points need another explanation.

SignalPoints to seasonalityPoints to a change
Last year, same weeksSame dip, similar sizeNo dip, or a much smaller one
Google Trends for the categoryDemand falls in the same weeksDemand flat or rising
Spread across segmentsAll channels and regions move togetherOne campaign, page or device moves alone
TimingGradual slope following the calendarSharp step on a specific day
Ratio metricsVolume moves, efficiency roughly stableConversion rate or CPA breaks suddenly

Why can seasonality hide the real cause of a change?

Because a seasonal dip gives everyone an easy explanation. "It's the holidays" ends the conversation before anyone checks what was edited that week.

Three common traps:

  • Overlapping changes. A new bid strategy, a landing page redesign and a holiday start in the same week. The season takes the blame for all of it.
  • Masked losses. A seasonal peak can hide a broken tag or a weaker campaign. Traffic still grows, just less than it should. You only notice when the peak ends.
  • Wrong baseline. Comparing with the previous period during a seasonal transition makes every change look dramatic. Comparing with last year without aligning weekdays can create gaps that are not real.

The fix is the same in every case: estimate the seasonal part first, then explain the rest with dated changes. For a step-by-step version of that second part, see our marketing root cause analysis method.

How do I isolate the cause when the season and your changes overlap?

Put every change from the days before the shift on one timeline, rule out tracking first, then test one hypothesis at a time against the seasonal baseline.

  1. Build the timeline. List your team's edits (bids, budgets, audiences, creatives, landing pages), platform automations (auto-applied recommendations, bid strategy learning), site, tracking and CRM changes, and external events such as holidays and competitor promotions. A marketing change log gives you this list without digging through five tools.
  2. Rule out tracking. Check whether conversions in the ad platform, GA4 and the CRM fell together. If only one source dropped, suspect a tag, consent or integration change before anything else.
  3. Subtract the season. Use the seasonal ratio above to estimate how much of the move the calendar explains.
  4. Test one hypothesis at a time. Start with the change closest in time to the break in the unexplained gap. Look at the segment it touched: if only the campaign you edited fell beyond the seasonal pattern, you have a strong candidate.
  5. Use a control. A region, campaign or product line you did not touch, with similar seasonality, shows what would have happened without your change.

When you report it, separate the two parts clearly: "About 18 points came from the school holidays; the rest started the day the new landing page went live." Our guide to explaining a conversion drop to a client has a structure for that conversation.

How should you prepare for known seasonal events?

Write the seasonal calendar down before the season starts, and record what you change during it. Next year's analysis depends on this year's notes.

  • Mark the calendar. Add holidays, sales events and your own promotions to the same place you log campaign changes, with exact start and end dates.
  • Tell Smart Bidding about short events. Google Ads seasonality adjustments inform Smart Bidding of expected conversion-rate changes for future events such as promotions or sales. Google says they are ideal for short events of 1–7 days and may not work as well for periods longer than 14 days, and that Smart Bidding already manages regular seasonal events. Log each adjustment as a change, because it moves bids.
  • Annotate reports. Put the season's start and end next to the chart people look at. Our guide to GA4 annotations covers the options.
  • Limit risky changes at the peak. Fewer overlapping edits make the season easier to read afterwards.

Where should you keep seasonal notes and change history?

In one shared timeline that lives outside any single ad platform, so it survives account changes, staff turnover and data retention limits.

Platform histories show edits made inside that platform only. They do not show the holiday, the CRM migration or the promotion your client ran in-store. A year later, when you compare this season with the last one, you need all of them on the same dates.

That is the job Changeline does: a to-scale timeline per client project where your team logs every change with date, owner, tags and reason, including seasonal events. It is free while in early access, and automatic imports from ad platforms are not available yet, so entries are added by your team. You can start a change timeline for next season now, and use our marketing change log template to decide what to record.

FAQ

How do I compare year over year in GA4 by day of week?

Use a custom range and shift last year's dates back 364 days, which is exactly 52 weeks, so Mondays line up with Mondays. Google has removed the "Previous year (match day of week)" comparison option, so the built-in "Previous year" choice can compare different weekdays.

How many years of data do I need to identify seasonality?

One year shows you a possible pattern; two or three years tell you whether it repeats. If you have less history, combine your data with Google Trends for your category and with a calendar of holidays and events in each market you run.

Should I use seasonality adjustments in Google Ads for the whole holiday season?

Google describes seasonality adjustments as ideal for short events of 1–7 days and says they may not work as well for more than 14 days at a time. Smart Bidding already manages regular seasonal events, so reserve adjustments for unusual, short spikes such as a flash sale.

Can seasonality change conversion rate, not just traffic?

Yes. Buyer intent changes with the calendar, so conversion rate, order value and CPC can all move in season. That is why you compare ratio metrics with the same weeks last year instead of assuming only volume is seasonal.

What if last year's data is not comparable?

If tracking, budget or markets changed a lot since last year, use a control instead: a region, product line or campaign you did not change, with similar seasonality. Its movement estimates the seasonal effect for the same weeks this year.

Sources

  1. About seasonality adjustments - Google Ads Help
  2. Change and compare date ranges in reports - Analytics Help
  3. FAQ about Google Trends data - Trends Help
  4. Create seasonality adjustments - Google Ads API

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