Skip to main content

ANALYTICS & DASHBOARDS · September 2026 · ~10 min read

Seasonality and how it distorts month-over-month comparisons

Compare each month to the same month last year, not to the month before it. Almost every business has a repeating annual shape, and comparing adjacent months measures the calendar rather than your work. Build a seasonal index from two years of history and judge every result against the month you should have had.

This is the most common way a good month gets mistaken for a good decision. Something improves in your busy season, the marketing gets credit, and the same lift would have arrived if nobody had done anything.

It works the other way too, and that version costs more. A campaign launches into a slow month, the numbers fall, and something that was working gets cancelled.

01

How do I know whether my business is seasonal?

Plot two years of monthly revenue on one chart, month one to month twenty-four. Look at it.

If the shape repeats, you are seasonal. Most businesses are, and many owners who say they are not turn out to be, because they have been reading month to month numbers and never saw the annual line.

The sources of the pattern are ordinary. Weather. School terms. Holidays. Fiscal year budgets in business to business. Tourist seasons, which matter enormously in Hawaii and unevenly across the Bay Area. Even a fixed calendar effect like a month having five Saturdays instead of four moves a restaurant meaningfully.

The shape exists inside the week too, and it is sharper than the annual one. Maple's analysis of 1.2 million calls across more than 1,000 US restaurant and local-business locations between December 2023 and November 2025 found 68% of all calls arriving during the lunch and dinner rushes, 28% at lunch and 40% at dinner, with Friday carrying 18% of the week's calls and the lightest day 11%. Maple sells restaurant phone answering, so label it vendor research, and the platform measures those volumes directly. A month with a different mix of Fridays will move your call count without anything about your business changing.

Search demand is seasonal even when your sales are not. People research long before they buy in some categories, so your inquiry volume can have a shape your revenue does not. Check both.

If you only have one year of history, you cannot separate season from trend yet. Note that honestly and keep collecting. That is a real limit, not a failure.

02

How do I build a seasonal index without statistics training?

Twenty minutes and a spreadsheet.

Take two years of monthly revenue. Calculate the average month across all twenty-four. For each calendar month, average the two values you have for it, then divide that by the overall average. That ratio is your index for that month.

An index of 1.20 for July means July normally runs twenty percent above your average month. An index of 0.80 for February means February normally runs twenty percent below.

Now you can do the only comparison that matters: this month against what this month should have been. Actual divided by the seasonal expectation. A February that lands above its index is a genuinely good February even if the raw number is your worst of the year.

Two cautions. Two years is thin, so treat the index as directional and refine it as you accumulate history. And if something unusual happened in one of those years, a closure, a construction project, a move, exclude or annotate that month rather than baking it in.

Rebuild the index annually. Your seasonality changes as your business and your market do.

03

What does the index look like with real numbers in it?

Here is a full worked month. Use your own figures and the arithmetic is identical.

The overall average. Twenty-four months of revenue sum to $2,304,000, so the average month is $96,000 derived.

July's index. July of year one was $118,000 and July of year two was $112,000. The average is $115,000. Divide by $96,000 and July's index is 1.20 derived.

February's index. $74,000 and $80,000, averaging $77,000. Divide by $96,000 and February's index is 0.80 derived.

Now judge this February. It came in at $82,000, the worst raw month on the chart. Its expectation was 0.80 times $96,000, which is $76,800 derived. Actual over expected is 82,000 divided by 76,800, so February ran 6.8%derived above the month it should have had. That is a good February, and a month-over-month report comparing it to January would have shown a decline and started a meeting.

Then strip out the part you charged for. You raised menu prices 4% in October. Restate February at last year's prices: $82,000 divided by 1.04 is $78,846 derived, which is 2.7%derived above expectation rather than the headline figure. Roughly six tenths of the good news was the price change, and the rest was demand.

That second step is not optional in 2026. The National Restaurant Association's July 2026 revision put total restaurant and foodservice sales growth for the year at 4.3% nominal but only 0.8% in inflation-adjusted terms, and stated that much of the growth is driven by higher menu prices rather than by traffic. A year-over-year revenue comparison that ignores your own price changes is measuring your pricing decision and calling it marketing.

04

Which numbers get distorted the most?

The ones people watch most closely, which is unfortunate.

Conversion rate shifts with intent mix. Your busy season brings ready buyers, which lifts conversion without any change to the site. Your slow season brings researchers.

Cost per lead rises when competitors bid harder in the same season, which is usually the same season you want to bid in.

Average ticket moves with what people buy at different times of year, and it is the number most likely to be compared against something invented. The "$8 to $12 average QSR check" that circulates on content farms has no primary source. The 10-K filings of Chipotle, Wendy's, McDonald's, Dine Brands, El Pollo Loco, Portillo's, Texas Roadhouse and BJ's all disclose only the percentage change in average check, never a dollar level. Chipotle's FY2025 filing is representative: average check 1.2%, menu price increase 2.1%, check mix (0.9%). The dollar-level data is owned by paid research firms and is not public. Full-service operators do disclose levels, which is why a real one looks like Darden's FY2026 filing stating that Olive Garden's average check per person, "defined as total sales divided by number of entrées sold, was approximately $25.00." Your own point of sale reports your check average in about five minutes, seasonally, by daypart. Use that and no benchmark at all.

Traffic by channel shifts as some channels are more seasonal than others. Search demand tends to swing harder than referral or repeat.

Where you have transaction data, join it in rather than eyeballing this. Connecting your point of sale data to your marketing data is what turns a hunch about your slow daypart into a dated table you can index.

Restaurant operators know the equivalent problem on the cost side. Seasonal produce pricing, seasonal labor availability, and holiday covers all move your margins independently of anything you did, which is one reason an inventory system is worth the effort even in a small kitchen. Without a period comparison, you cannot tell a supplier problem from a calendar one. The cost side is also where the index gets its teeth: the Association estimates total expenses for an average restaurant rose 36% between 2019 and 2026, with wholesale food prices up 35% and average hourly earnings up 41% since before the pandemic. Against that, a flat year is not flat.

05

Where does the index stop working?

Three places, and knowing them keeps you from over-trusting a number you built yourself.

When the shape itself changes. A new competitor, a construction project, a road closure, a shift in who your customer is. The index describes the business you used to have. Rebuild it every year and annotate the months that were unusual rather than averaging them in.

When the base is small. An index built on a metric with forty events a month is an index built on noise. Revenue is usually large enough. Weekly leads usually are not, which is why telling signal from noise gets harder once you have adjusted for season, not easier. You are now reading a residual on a small base, and residuals are noisier than the series they came from.

When two years is not two clean years. If either year contained a closure, a rebrand or a move, you have one usable year and a footnote. Say so in the report rather than presenting the index as settled.

06

How should seasonality change what I do?

Three practical shifts.

Change the comparison on every report. Year over year as the primary, month over month as secondary if at all. This is a template change and it takes one afternoon.

Time your changes deliberately. Launch a website change in a stable month, not at the start of your peak, so the change and the season do not arrive together. If you must launch into a season, write down in advance what you expect the season alone to do.

Set expectations before the slow quarter. Tell yourself, your team, and any vendor what the index says is coming. A predicted decline is a plan. An unpredicted one is a crisis meeting.

And keep the weekly view seasonal too. The handful of numbers you look at every week should compare against the same week last year wherever you have the history, for the same reason.

07

What to do this week

Pull twenty-four months of monthly revenue from your point of sale or accounting system. Twelve if that is all you have.

Build the index. Overall average, monthly average, divide. It is one column of arithmetic.

Add an expected column to your reporting. Every month now shows actual, expected, and the difference. That third number is the only one that reflects your work.

Write down every price change you made in the last twenty-four months, with the date and the percentage. That list is what lets you separate demand from pricing later.

Change the default comparison period in your analytics and your report template to previous year.

Then look at what your slow season traffic actually does on your pages. Researchers read more than buyers do, which is one reason longer pages sometimes convert better than short ones in exactly the months when everyone assumes attention is scarce.

Be honest with yourself

When you do not need this

If your business has genuinely flat demand across the year, and you have two years of data showing it, skip the index and compare however you like.

If you are less than a year old, you cannot build one yet. Record the months as they happen and revisit next year.

And if your business is small enough that you already know February is quiet and July is busy, you may not need the arithmetic. What you do need is for your reports to stop presenting that as news.

Sources

Related reading

11

Questions about your seasonal pattern?

Email me at eric@seod.com with your monthly revenue for the last twenty-four months. Just the numbers in the body of the email, no context needed and no names attached to anything. I will send back your seasonal index and the two months where your reporting is most likely to be misleading you.

I do this myself and it takes about fifteen minutes. If your business turns out to be flat, I will tell you that and you can stop worrying about it.

More on measurement sits in the analytics library.

Call Eric Email Eric