Every July, I get a small dip in one of my businesses and a small spike in another. For years I treated both as news. Something must have changed. A competitor did something. My messaging stopped working. Then I pulled two more years of data and realized I was watching the same shape repeat itself, right down to the week. That’s seasonality, and once you can name it, it stops being a fire drill.
This is a plain-English walkthrough of seasonality analysis: what it actually is, how to check for it without fooling yourself, and what it can and can’t tell you about your business.
What seasonality actually means
Seasonality is a repeating pattern in your numbers tied to the calendar, not to anything you did. It could be tied to the actual seasons (a landscaping business slows down in winter), to the school year (tutoring demand drops in summer), to pay cycles (subscription cancellations cluster right after the holidays when people review their credit card statements), or to industry rhythms (B2B software sales often slow in August and December when buyers are out of office).
The key word is repeating. A one-time dip because you were sick for a week isn’t seasonality. A dip that shows up every February, three years running, probably is.
This matters because seasonality changes how you read every other metric on this site. If your MRR dropped 8% in December and you don’t know that December is seasonally slow for your business, you might panic and cut ad spend or slash prices right when the pattern is about to reverse on its own. If you do know it’s seasonal, you read the same drop as expected and look instead at whether it’s a bigger or smaller drop than last December.
How to actually check for it
You need at least two full cycles of data before you can call something seasonal, and ideally three. If your business is B2C, that likely means looking year over year, since most consumer seasonality follows the calendar year. If you’re less than two years old, you can still look for shorter cycles, monthly or weekly, but be honest that you’re working with a thinner signal.
The simplest method I use is a line chart with each year plotted as its own line, months on the x-axis. Overlay two or three years and look at where the lines bend in the same direction at the same time. You’re not looking for identical numbers. Your business might be growing overall, so 2025 sits above 2024 the whole way through. You’re looking for identical shape: does the line dip in the same month, rise in the same month, regardless of the overall level.
A more careful version of this, if you have the data volume, is to compare each month’s actual number against a trailing 12-month average for that same point in the trend. That strips out the growth trend and leaves you with something closer to the pure seasonal effect. You don’t need statistical software for this. A spreadsheet with a 12-month rolling average column and a “this month divided by that average” column gets you most of the way there.
Watch for two traps. First, small sample sizes create fake patterns. If you only have 40 customers, one customer canceling in March can look like a seasonal dip that isn’t real, it’s just one person’s decision. The fewer data points feeding a metric, the less confidence you should have in any pattern you see in it. Second, don’t confuse a seasonal pattern with a one-time event that happened to recur. If a competitor ran a huge promotion in March two years in a row, that looks exactly like seasonality in your churn numbers, but it isn’t the calendar doing it, it’s a competitor’s decision that could stop next year.
Where seasonality shows up across your metrics
Seasonality doesn’t just live in revenue. It shows up differently depending on which metric you’re looking at, and conflating them leads to bad conclusions.
Conversion rate. Traffic quality shifts seasonally even when traffic volume doesn’t. A landscaping company might get plenty of website visits in January from people planning ahead, but those visitors convert at a lower rate than the visitors who show up in April ready to book. If you only watched visit counts, January would look healthy. Watching conversion rate alongside it tells a more honest story.
Churn. Subscription churn often clusters around specific calendar moments: January (post-holiday budget review), the start of a new fiscal year for B2B customers, or the anniversary of a signup if you bill annually. If you’re tracking churn as a single monthly number without noting when in the year it happened, you can miss that most of your churn is concentrated in a six-week window, which is a very different problem than churn spread evenly across the year.
CLV. Customer lifetime value calculations that don’t account for seasonality can mislead you about which acquisition channels are actually good. A channel that brings in customers right before your seasonally strong period might look like it produces high-value customers, when really those customers would have converted well regardless of channel because they arrived during a strong buying window.
Funnels. If you’re running funnel analysis and comparing this month’s drop-off rates to last month’s, a seasonal dip in top-of-funnel intent will ripple through every stage. The funnel isn’t broken, fewer people are shopping right now for reasons that have nothing to do with your funnel design.
What seasonality can’t tell you
Knowing your business has a seasonal pattern doesn’t tell you why, and it definitely doesn’t tell you what to do about it. Two businesses can both have a July dip, one because customers are on vacation and one because a whole industry pauses buying decisions until Q4 budgets reset. The fix for those is different, and the seasonality chart alone won’t distinguish them. You still need to talk to customers or dig into the qualitative side to understand the mechanism.
It also doesn’t predict the size of next year’s pattern. Past seasonality is a reasonable starting expectation, not a guarantee. Markets shift, your customer mix changes, a competitor enters or exits. Treat last year’s seasonal shape as a prior you adjust, not a forecast you commit to.
And seasonality analysis can’t rescue you from acting too early. The most common mistake I’ve made is reacting to week one or two of a seasonal dip as if it were a permanent decline, then reacting again when it recovers on schedule, as if my intervention caused the recovery. If you have two or three years of evidence that a pattern is seasonal, the right move during the dip is usually to hold steady on strategy and watch whether this year’s dip is deeper or shallower than the historical pattern, not to overhaul your pricing or your funnel in week two.
A simple way to start
If you’ve never done this before, pull whatever revenue, signups, or churn data you have by month for as far back as it goes. Put it in a spreadsheet, plot each year as a separate line, and just look at it for ten minutes before you try to explain anything. Patterns that repeat across multiple years are worth building expectations around. Patterns you only see once are worth investigating, but not worth planning around yet.
Seasonality analysis is not glamorous. It’s mostly the discipline of not reacting to noise that will resolve itself. But that discipline is what lets you tell the difference between “this is the slow season” and “something is actually wrong,” which is one of the more useful distinctions you can make when you’re running the numbers yourself.
If you want more on reading business metrics without the hype, Data Research Analysis Collection covers the rest of the toolkit: cohorts, attribution, data quality, and the AI tools that can help a one-person operation keep up with all of it.
Get new guides and videos first — join the Telegram channel.