Year Over Year vs Month Over Month Reporting

Year over year vs month over month reporting explained - which comparison period to use, how seasonality distorts the numbers, and what clients should see.

Ready to get started?

Set up in 2 minutes. White-label reports and AI insights.

14-day free trial - 2 min setup - no credit card required

Year over year vs month over month reporting

Year over year (YoY) compares a period to the same period twelve months earlier. Month over month (MoM) compares a period to the one immediately before it. YoY answers "is this account growing?" MoM answers "did what we changed last month work?" Most client reports need both, and most client reports show only one.

Last updated: September 2026

You have had this call. Traffic is down 18% on last month, the client is worried, and the honest answer is that August had a public holiday, one fewer trading weekend and a competitor running a sale. None of that is in the number. The number just says down 18%.

Choosing your comparison period is not an admin decision. It decides which story the client reads before you get to speak. This guide covers what each comparison measures, when each one lies to you, and how to pick a default that survives a seasonal quarter. If you are still deciding which numbers belong in the report at all, start with the marketing metrics that matter to clients.

Key takeaways

  • Year over year comparison removes seasonality; month over month comparison removes nothing. YoY compares like calendar conditions, MoM compares one month to a different month of the year.
  • Month over month is the right lens for testing recent changes, because it is the only comparison short enough to sit inside a normal optimisation cycle.
  • Calendar length alone can move a MoM number by roughly 10%. February has 28 days against January's 31, so a flat account still reports a decline.
  • You need thirteen months of connected data before a monthly report can show a real YoY figure. Across the 46 client accounts in ReportsMate, not one has yet passed twelve months on the platform, and the median record is about five months old.
  • Google Search Console keeps roughly 16 months of performance data, so YoY search reporting is possible; other platforms differ, which is why comparison periods should be set per platform, not per agency habit.

What this guide covers

  1. What is the difference between year over year and month over month reporting?
  2. When should you use month over month comparison metrics?
  3. When is YoY reporting the right call?
  4. How does seasonality in marketing data distort the numbers?
  5. Choosing comparison periods in client reports
  6. What to do when you do not have a year of data yet
  7. Automating the comparison so nobody cherry-picks it
  8. FAQs

Year over year vs month over month at a glance

Year over year (YoY)Month over month (MoM)
ComparesThis month vs the same month last yearThis month vs last month
AnswersIs the account genuinely growing?Did last month's changes work?
Handles seasonalityYes, compares like calendar conditionsNo, seasonality shows up as performance
Reacts to a change you madeSlowly, up to twelve months lateFast, within one reporting cycle
Data needed13+ months connected2+ months connected
Noise levelLow, but hides recent problemsHigh, small accounts swing hard
Distorted byLast year's outliers, tracking changes, base effectsDays in the month, holidays, weekday counts
Best used forRetainer reviews, annual planning, board-style summariesMonthly optimisation, campaign decisions, spend shifts

Read that as a division of labour, not a contest. The YoY line is your growth statement; the MoM line is your work statement. A report carrying only the first cannot show your value in the month the client paid for. A report carrying only the second turns every seasonal dip into a crisis meeting.

When should you use month over month comparison metrics?

Use month over month when the question is whether a specific change worked. You raised budget on a campaign in July, and you want to know what August did with it. Nothing in a YoY figure can answer that, because a YoY figure is still partly describing an account you did not manage.

MoM also matches the reporting cadence most agencies work to. Reporting cadence just means how often the report goes out - monthly, weekly or daily. If you are making optimisation decisions every few weeks, a comparison window twelve months wide gives you nothing to act on.

The catch is noise. On smaller accounts a MoM swing is often arithmetic rather than performance, and three factors do most of the damage:

  • Days in the month. February against January is 28 days against 31, so a completely flat account reports a ~10% fall. Then March against February reports a ~11% rise for the same non-reason.
  • Weekday counts. A month with five Mondays against one with four is a real difference for a B2B account whose enquiries land midweek.
  • Single-event distortion. One press mention, one outage, one card decline that paused ad delivery for two days.

This is also where metric definitions matter more than people expect. A MoM drop in GA4 sessions with users flat means something quite different to both falling together, which is exactly why we wrote sessions vs users explained for client-facing use.

When is YoY reporting the right call?

Use year over year when you need to separate growth from the calendar. A retailer whose November always triples is not improving in November and not collapsing in January. Only the YoY comparison can tell you which of those Novembers was actually better.

YoY reporting is also the comparison that survives a client's internal review. When your contact takes the report to a finance lead, "up 22% on the same month last year" is a sentence that lands. "Up 6% on last month" invites the question of what last month was.

How far back you can take it varies by platform:

  • Google Search Console keeps around 16 months of performance data, just past the thirteen months a YoY monthly comparison needs (Search Console Help documents the current window). That makes organic search the easiest place to start, and it is why our Google Search Console integration pulls a comparison period alongside the current one.
  • Google Analytics 4 separates standard aggregate reporting from user-level and event-level data retention, and that retention setting has a default most properties never change. Check the current options in Google Analytics Help before promising a two-year exploration.
  • Meta Ads keeps a long but finite insights window, and ad-level breakdowns age out sooner than account totals. Confirm in Meta Business Help before committing to a YoY creative comparison.

The second YoY trap is the base effect. If last September was an outlier because a campaign launched, this September's YoY number is measuring that outlier, not this year's work. Say so in the report before the client finds it.

How does seasonality in marketing data distort the numbers?

Seasonality is any repeating calendar pattern in demand that has nothing to do with your work. Retail peaks in November. Home services peak after the first cold week. B2B lead volume falls off a cliff in late December and does not recover until the second week of January. None of that is performance, and all of it shows up in a month over month comparison as performance.

The practical test is one question: did this change happen at the same time last year? If it did, it is seasonality. If it did not, it is something you or the market did.

Make that a standing check in your reporting process. It prevents the two expensive mistakes - taking credit for a seasonal rise, and apologising for a seasonal fall. The first costs you credibility when the season turns. The second costs you the account.

For accounts with a genuine peak trading period, we go further in our seasonal and holiday campaign reporting guide, but the short version is: report the peak against last year's peak, never against the quiet month before it.

Choosing comparison periods in client reports

Pick one primary comparison and one supporting comparison, then never change them without telling the client. Changing the comparison window between reports is how honest agencies accidentally look like they are hiding something.

A default that holds up for most retainers:

  1. Headline: month over month, because it covers the period you were paid for.
  2. Supporting: year over year, once the data exists, to show the trend the client cannot feel month to month.
  3. Context line: a plain-English note on anything calendar-driven that moved the number.

Two more decisions are worth making once and writing down.

Calendar month or rolling 30 days. Calendar months are what clients think in and what invoices follow, so they are the safer default. Rolling 30-day windows are steadier because they hold the day count constant, but a client cross-checking your report against their own account will find a mismatch. Choose one and document it in the report footer.

Like-for-like or not. A like-for-like comparison window means both periods have the same number of days and, ideally, the same weekday mix. If you cannot manage that, say which period is longer.

We built ReportsMate email-first because, after years around agency reporting, the dashboards clients were handed almost never got logged into, and a comparison period only does its job if somebody reads it. Every report we send carries the current figures alongside a change value against the comparable prior period, on each connected platform.

A fairness note, since we are describing our own product: dashboard-first tools like AgencyAnalytics, DashThis, Whatagraph, Swydo, Supermetrics and Looker Studio all handle comparison periods competently, and several offer more configuration than we do. The difference we care about is delivery, not date maths.

What to do when you do not have a year of data yet

Most agency-client relationships are too young for YoY, and pretending otherwise is where fake numbers come from. Our own database makes the point. Across the 46 client accounts set up in ReportsMate, none has yet reached twelve months on the platform, and the median client record is roughly five months old. Connection breadth is thin early too: Google Analytics is the most connected platform, on about seven in ten clients that have any connection live, and the median client is reporting on a single platform.

That is a snapshot of new-account behaviour rather than an industry claim, but it matches what onboarding looks like. The client signs, you connect what you can reach, and the history YoY needs arrives later.

Three honest options while you wait:

  • Report MoM as the headline and label the YoY row "available from [month]". Clients respect a stated timeline far more than a blank cell.
  • Backfill YoY from the platform, not the tool. Search Console's window usually predates your engagement, so organic YoY can be real from day one even if your reporting tool started collecting last quarter.
  • Use a rolling quarter as the middle ground. Last 90 days against the previous 90 smooths most weekday and holiday noise without needing a year of history.

What you should not do is compare a partial month to a full one, or quietly switch to whichever window flatters. That is the habit clients notice, and the one that ends retainers.

Automating the comparison so nobody cherry-picks it

The strongest argument for automating comparison periods is that automation cannot be tempted. A fixed comparison rule, applied every month without a human choosing it, is a trust signal in itself. Manual reporting eats 15+ hours a week at most multi-client agencies, and the hours it eats are the same hours where the shortcuts get taken.

Set the rule once per client, let the schedule run, and the report lands the same way whether the month was good or bad. Automation also makes white-labelling practical - white-label meaning the report carries your agency's logo, sender identity and domain rather than the tool's, so the comparison the client reads is your analysis, not a vendor's.

Delivery is the part most reporting stacks get wrong. Our own send data is why we keep saying it: across roughly 2,700 tracked report emails, about 29% were opened, the median open landed within about 5 to 6 hours, and around three quarters of opens happened inside the first day. A report behind a dashboard login gets none of that. (Caveat, since these are our own numbers: that rate covers only the tracked portion of our sends, and open tracking is imperfect by nature.)

See how the reporting schedule works if you want the mechanics: connect platforms, set a cadence, and the comparison travels with every send.

FAQs

Q: Is year over year or month over month better for client reporting?

A: Neither is better on its own - they answer different questions, and a good client report carries both. Month over month shows whether the work you did last month moved the numbers, which is what a retainer client is paying to see. Year over year shows whether the account is genuinely growing once seasonality is stripped out. If you only have room for one, use MoM as the headline for accounts under a year old and YoY as the headline for mature, seasonal accounts. What matters more than the choice is consistency: pick your primary comparison and keep it, so the client is reading the same measurement every month.

Q: How much data do I need before I can show a year over year comparison?

A: Thirteen months, at minimum, for a monthly report. You need the current month plus the same month a year earlier, and the twelve months between them if you want to plot a trend line rather than two dots. The constraint is usually the platform, not the tool: Google Search Console's roughly 16-month window means organic YoY is often available from day one of an engagement, while ad platforms and analytics properties vary. Check each platform's retention before you promise the figure. Until then, a 90-days-vs-previous-90-days comparison is a defensible substitute.

Q: Why does month over month reporting show a drop when nothing changed?

A: Usually the calendar. February has 28 days against January's 31, so a flat account posts a ~10% decline for purely arithmetic reasons. Add weekday mix (five Mondays against four), public holidays, and a single high-traffic day that fell inside one period but not the other, and you can produce a double-digit MoM swing on an account nobody touched. This is exactly why a plain-English context line belongs next to every MoM figure. If you want to compare quality rather than volume across two uneven periods, compare rates instead of totals - our conversion rate calculator is a quick way to do that before the report goes out.

Q: What is seasonality in marketing data, and how do I report around it?

A: Seasonality is any repeating, calendar-driven pattern in demand that exists independently of your campaigns - retail's November, home services after the first cold snap, B2B's December collapse. You report around it by comparing like calendar periods: peak against last year's peak, quiet month against last year's quiet month. Never compare a peak to the month before it and call the difference performance. If you do not have last year's data, at least annotate the report with what the season normally does, so the client reads the number with the right expectation.

Q: How do I explain a bad year over year number to a client?

A: Lead with it, explain the base, and separate what you control from what you do not. If last year's figure was inflated by a one-off - a launch, a viral moment, a competitor being offline - say that plainly, because a base effect is a real explanation rather than an excuse. Then show the MoM trend alongside it, which is where recent work actually appears. A YoY decline paired with three months of MoM improvement is a recovery story, and it is a far stronger position than a single red arrow with no context.

Q: Can automated reports handle comparison periods properly?

A: Yes, and the automation is the point. When the comparison rule is set once per client and applied by a schedule, nobody is choosing the flattering window on a bad month. ReportsMate sets the comparison alongside the current period on every connected platform - GA4, Google Ads, Meta Ads, Search Console and Google Business Profile - so the change figure is in the client's inbox without anyone assembling it. You can see the plan tiers on our pricing page; every plan includes the comparison data, since it is not a premium feature so much as the minimum a report needs to mean anything.

The short version

Month over month tells your client what you did. Year over year tells your client where they are. Seasonality is the thing that makes the first one lie, and the second one is the correction.

Pick your primary comparison per account, write down whether you use calendar months or rolling windows, add one line of plain-English context on anything calendar-driven, and stop changing the window when the numbers are unkind. That is most of the discipline.

Stop losing your Sundays to client reports. Start your free 14-day trial - no credit card, no setup, cancel anytime. Your clients get branded reports in their inbox, comparison periods already done.

Automate Your Marketing Reporting

Join agencies automating client reporting with ReportsMate.

14-day free trial - 2 min setup - no credit card required