Executive summary
Seasonal queries are the most predictable demand in search. People look for furnace repair when the first cold night arrives, for patio builders in April, for tax help in March and for gift guides in late November, and they do it every year. Google has a ranking system for exactly this. Its 2011 freshness announcement named "regularly recurring events" as one of three kinds of search where newer results should win, and its current ranking systems guide still lists "query deserves freshness" systems among the ones in production.
That makes seasonal content one of the few places where publishing well-timed, current pages has a documented effect on visibility. It does not make it easy. The impressions go to pages that are indexed, current and already trusted when the demand curve rises. A page written the week the season starts is usually still waiting to be crawled when the peak passes. The work is mostly timing and URL discipline. The writing is the easy part.
What Google actually said about recurring events
On 3 November 2011 Google announced a ranking change it said affected roughly 35 percent of searches. It later clarified that the figure meant at least one result on the page changed. The post sorted freshness into three buckets:
| Bucket | Google's examples | What it means for a business site |
|---|
| Recent events or hot topics | [occupy oakland protest], [nba lockout] | News coverage. Rarely winnable for a small site |
| Regularly recurring events | [presidential election], annual conferences, [NFL scores], [exxon earnings] | Seasonal and annual demand. The opportunity here |
| Frequent updates | [best slr cameras], [subaru impreza reviews] | Comparison and buying guides that go stale |
The middle row is the one that matters. Google's wording was that for recurring events, "it's implied that you expect to see the most recent event", without the searcher having to type the year. Someone searching for the best gifts for runners in December wants this year's list. Someone searching for snow tire installation in Toronto in late October wants a shop that is open and taking bookings now, not a 2022 post about why winter tires matter.
Today's ranking systems guide describes the same idea in its own words: "We have various 'query deserves freshness' systems designed to show fresher content for queries where it would be expected." Its examples are a new film, where recent reviews replace older production news, and an earthquake, where a generic search tilts towards news after a recent event. A season works the same way, but it comes back every year.
Why seasonal pages collect impressions others miss
Impressions in Search Console count every time a URL appears in a result a person loaded. Seasonal demand produces a cluster of queries that barely exist for nine months and then spike. Three things decide who appears when they do.
The page has to be indexed before the spike. Discovery and crawling take time, and that time varies with how often Google already crawls the site. A large publisher can get a new URL indexed within hours. A local service site that publishes twice a month may wait days or weeks. Seasonal demand also starts rising earlier than most owners expect. Search interest builds for weeks before the obvious date.
The page has to look current to a system that is asking whether it is current. When freshness is in play, a visibly dated page competes badly against one that names the current year, current prices, current hours and this season's specifics. That means real updates. Changing the date alone doesn't count.
The URL has to carry history. This is the part most sites get wrong, and it is covered below.
One URL per season, not one URL per year
The common pattern is a new post every year: /black-friday-deals-2024, then /black-friday-deals-2025, then /black-friday-deals-2026. Each one starts from nothing. It has no links, no click history and no crawl priority, and it competes with its own predecessors, which still sit in the index with the old year in their titles.
The alternative is one stable URL, such as /black-friday-deals or /furnace-maintenance-checklist, that you update every season. The links earned last year still point at it. The page Google already knows gets recrawled instead of a new one having to be discovered. The year belongs in the title and the content, where it signals currency. Leave it out of the slug, where it locks the page to a single season.
This is practitioner reasoning built on documented mechanics. Google has not published a rule saying recurring URLs rank better. But it has said a lot about what wastes crawl effort and splits signals: duplicate pages, non-canonical URLs, near-identical content competing for one query. A new URL every year produces all three. If old yearly posts already exist, the usual fix is to choose the strongest one, move it to a year-free slug, and 301 the others into it. Do that well before the season, not during it.
What "updating" has to mean
Google's helpful content guidance includes a question every seasonal publisher should read: "Are you changing the date of pages to make them seem fresh when the content has not substantially changed?" It sits in the list of signs of search-engine-first content. Google's sitemap documentation makes the same point from the crawling side. It uses <lastmod> only "if it's consistently and verifiably accurate", and the value should reflect "the last significant update to the page".
So a seasonal refresh should change something a reader would notice:
- This year's prices, dates, hours, booking windows or stock.
- Anything that changed since last season: regulations, rebates, product lines, local by-laws.
- Last season's outcomes: what sold out, which questions customers asked most, what you would do differently.
- Removal of anything stale. A December page that still mentions last year's promo code is a quality problem.
Then the visible "Last updated" date, dateModified in the Article schema and the sitemap <lastmod> should all move together, and only when the content does. Google's publication-date guidance asks for user-visible dates and structured dates to match.
The calendar to work from
The planning question for each season is when it starts, not when it peaks. In Google Trends the curve for most seasonal terms starts climbing well before the date everyone has in mind. A workable rhythm:
- Pull last year's Search Console data while it still exists. The Performance report keeps 16 months. Use the date comparison to set this season's window against the same window last year, and export it. Once the old season rolls off, the baseline is gone.
- Find the start of the rise, not the peak. Look at the weeks when impressions began to climb last year, per query. That week, minus your typical time to index, is your publishing deadline.
- Refresh the existing URL first. New pages come second, and only for seasonal intent you have no page for at all.
- Link to the seasonal page from somewhere Google crawls often. The homepage, a hub or a recent post. A seasonal page that only the sitemap points to is easy to overlook.
- After the season, write down what happened. Which queries showed up, which page earned them, where impressions arrived without clicks. That note is next year's brief.
Counter-argument, taken seriously
The fair objection: seasonal content is a treadmill. Every page needs a refresh every year, and the impressions disappear for most of the calendar, so the work never compounds the way an evergreen guide does.
Partly true. A seasonal page will never have the flat, year-round traffic curve of a good evergreen answer, and a business with two seasonal pages and nothing else has a feast-and-famine search presence. But the stable-URL approach is what makes seasonal work compound. Each year's refresh builds on the links, history and engagement of the year before. And the objection treats impressions as the goal. For a furnace contractor or a tax preparer, the season is when the revenue happens. Ranking in July for a query nobody searches until October is worth very little.
The second objection is that freshness is overstated, because plenty of old pages rank for seasonal terms. Also true. Freshness is one system among many, and Google's own 2011 post said results "a few years old might still be useful". An authoritative older page can beat a thin current one. Freshness decides between pages that are otherwise close. It cannot rescue a weak page.
What everyone is missing
The year in the URL is the most common self-inflicted seasonal wound. It resets authority every season and leaves a trail of outdated pages competing with the current one.
Seasonal impressions are a leading indicator, and they are lost after 16 months. Unless last year's data is exported, the comparison that tells you whether this season went better disappears.
Most seasonal pages are published to the peak date. The demand curve rises weeks earlier, and an unindexed page earns nothing during the rise.
AI answers pull from the same current pages. When an assistant answers "when should I book furnace maintenance in Toronto", a page that states this season's specifics plainly is easier to cite than one hedging across years. See What Actually Works for AI Citations.
Practical takeaways
- Map your seasons from data, not memory. Use last year's Search Console impressions and Google Trends to date the start of each rise.
- Keep one URL per recurring topic. Put the year in the title and copy, never the slug, and consolidate old yearly posts with 301s before the season.
- Make the refresh real. New prices, dates, conditions and outcomes, with the visible date,
dateModified and <lastmod> moving together. - Publish ahead of the rise, by at least your usual time to index. Check indexing in Search Console's URL Inspection rather than assuming it.
- Export the season's data when it ends. That is next year's baseline.
- Treat impressions as the early signal, not the result. Clicks and enquiries during the season are what count. If impressions arrive and clicks don't, the title and snippet need work. See Technical SEO.