SEO for home services companies.
The same service line sells in dozens of markets, and every page has to be live months before its own season.
How seasonality actually works.
These are big purchases a homeowner makes rarely. A roof lasts around fifteen years and an HVAC system up to twenty, so by the time somebody needs you again they have nothing recent to draw on.
Far more people search the problem than search your name. That non-brand gap is where most of the business in home services sits. The search behind most home-services demand sounds like: a hailstorm hit, the roof is damaged, and the homeowner wants a list of options to call.
Every version of that search comes back with local results, ranked on relevance, distance and prominence as Google names them, and judged market by market. So you need robust local content before Google accepts that you’re in that market at all. If you’re not in those results, you’re invisible in that market.
Ten home services queries, twelve months, one grid
Peak-month and valley-month U.S. national search volume per query, with the peak-to-valley swing. National monthly averages — no individual market’s curve.
Source: WebFX, “Seasonal Search Shifts in Home Services Demand,” December 2025; monthly search volumes from Ahrefs Keywords Explorer, Jan 2023 – Dec 2024, U.S. national.
Frozen-pipe demand and AC-repair demand sit at opposite ends of the same twelve months. Roofing’s storm term moves 140% while its generic term barely moves, and electrical is flat all year. One calendar can’t be right for all of those rows, and we think that’s what most plans get wrong.
These are national averages, as the study says itself: “southern markets may see longer AC demand, while northern regions may require earlier winter repair campaigns.” NOAA’s Climate Prediction Center publishes population-weighted cooling degree days by state. For 1 Jan – 1 Aug 2026 Florida accumulated 2,019, Texas 1,873 and Arizona 1,683, against Minnesota’s 453, Maine’s 211 and Washington’s 169. A cooling-service page in Tampa and one in Seattle are not on the same schedule.
Storm demand has no calendar at all. Verisk’s 2026 roofing report found 16 states where severe hail impacted more than 20% of roofs in 2025, up from 12 states in 2024, with Kansas highest at 51.8% of roofs impacted. So those pages have to be standing before the storm.
The last piece is the lag. Before a page can rank, Google has to find it and add it to its index. Its own documentation says that takes “anywhere from a few days to a few weeks,” with no guarantee it happens “instantly or even at all.” Ahrefs’ May 2025 study of one million random new URLs found 1.74% reach the top 10 within a year, and 72.9% of the pages now in the top 10 are more than three years old. So the page for a market’s peak month has to be live and indexed in the trough, at a permanent URL.
Six things that go wrong.
These are patterns we keep running into, and you can confirm or rule out every one of them yourself in Search Console.
One publishing calendar for every market
Pull the publish dates for one service line’s location pages and see which markets went live together. If markets on opposite climate curves shipped in the same sprint, half of them launched into their own off-season.
A calendar built on the category instead of the queries
Check whether the plan treats “plumbing” as one seasonal block. Frozen pipe repair peaks in January and bottoms out in August, while “plumber near me” moves 36% across the whole year. Those are two builds on two different clocks.
Storm pages that don’t exist until the storm
Find a storm-damage page built for one market and look up its first-indexed date. If that date sits inside a storm window, the page went up after the demand did.
Nothing on the page is only true of that market
Open two city pages side by side and take the city name out of both. If nothing else differs, with no local office detail, no reviews in context, nothing about local pricing or climate, that’s Google’s doorway policy.
Review widgets that read the same everywhere
Check whether the reviews on a market page came from that market’s customers, and whether anything says what the job was. A widget that reads the same everywhere shows none of the prominence Google ranks on.
Seasonal URLs rebuilt each year
Look for a year sitting in a seasonal page’s URL, or pages that get unpublished when the season ends. Google’s guidance runs the other way: one permanent URL that stays up through the off-season.
How we build the calendar.
Three numbers set the size of the build: how many markets you’re in, how many service lines you sell in each, and how many pages each service needs. We can’t guess those three numbers for you.
As an example of the shape: ASP, America’s Swimming Pool Company, an Authority Brands franchise, operates in more than 400 cities across 25 states. One service line, 400-plus cities, no two cooling seasons the same length. Source: Authority Brands, 2026.
Build the grid before the calendar
Every market × every service line, laid out as rows. It’s a spreadsheet exercise and usually a week with operations, because almost nobody has one clean list of active territories.
Sort by the demand window
The biggest market is rarely the most urgent one. The cells whose demand peaks soonest go first, and a flat query in a large metro can wait.
Pull the flat queries out of the queue
Electrical panel upgrade moves 23% across a year and “outlet not working” moves 34%. Those can be built in any week, which buys you weeks for the rows swinging 600%.
Stand the event pages up out of season
Storm and emergency pages for the high-hail markets get built in the quiet months, at permanent URLs, and left up.
Give every page something true only of that market
Local office detail, reviews from that market with the job explained, and the particulars only somebody who works there would know. We spent a few days in Destin, Florida with a room full of ASP franchise owners. What we took from those rooms is that the antidote to generic content starts with a name, a face, photos of the crew and a reason they do this. The hard part is that asking a franchise owner for any of it is one more request from corporate landing on somebody already carrying enough. So we make the collecting easy rather than thorough: an owner can answer by voice in a few minutes, and what they send lands in a database the content engine reads from. This is the slow part, and the difference between a doorway page and a local result.
Publish into the trough and measure in the peak
Pages go live months before their window opens, and the read on whether it worked comes a season later. That’s a hard thing to sit through.
These are ranges we’ve seen rather than guarantees. The grid and the data assembly is usually the first few weeks, and a first tranche of market pages is weeks rather than days. We won’t spend eight months deliberating before anything ships, because every month a page isn’t live is a month it isn’t ranking. Build it, get it live, and see how it does.
Two ways to build the same market pages.
The templated build
One page design, every market on the list, the city name swapped in, and the whole grid live in a single sprint. It’s genuinely the fastest path to coverage.
Then the pages compete with each other and with the aggregators on near-identical text. Google’s doorway policy names the pattern: “having multiple domain names or pages targeted at specific regions or cities that funnel users to one page.” The coverage arrives and the rankings usually don’t follow.
The per-market build
The grid gets ordered by window before anything gets written, and every page carries something only true of its own market. It’s slower to start, and the read on whether it worked is a season away.
What we watch is whether those pages start showing up for non-brand terms in Search Console, market by market, before each season opens.
of newly published pages reach Google’s top 10 within a year, which is why the order you build in matters more than the speed. A page that isn’t standing before its window spends it in its own off-season.
Source: Ahrefs, “How Long Does It Take to Rank in Google?”, May 2025 — 1M random new URLs tracked; 72.9% of current top-10 pages are over 3 years old.Where we’ve built pages this way.
The per-market path once it’s been done at scale, with names and figures you can check, and a plain statement of where our proof runs out.
Per-market pages at volume, against far larger incumbents
State pages, state-to-state routes and city-to-city pages, built from data no template could fake, like the route itself and the weather across it. We timed the build to the slow season.
Branded share of traffic fell from an estimated 80–85% at the start to 11.5%, SEMrush-confirmed in June 2026, so the non-brand pages are the ones carrying the growth.
LeafFilter
National gutter-protection brand. We built the location-page program to compete on non-brand search in a category where the aggregators take most of the traffic.
Palmetto
National solar and HVAC provider. Their model moved toward a marketplace while we worked, and the content we built moved with it.
Compare Power / 2TurnItOn
Texas deregulated-energy comparison partner. We built pages market by market and funnel content to convert non-brand traffic, where trust decides the click before price does.
Where the proof stops: none of the engagements above is a seasonality project. Sherpa shows we can build per-market pages at volume without them reading as templated. The seasonal half of the argument is carried entirely by the third-party data further up.
Five checks you can run yourself.
All five are free, and they test this page’s argument against your own markets and your own pages.
Google Trends, at city level
Google states that Trends shows interest “from around the globe or down to city-level geography.” Take two of your own service terms, one metro at a time.
Source: Google Trends HelpSearch Console, query × page, twelve months
Filter to one market’s pages, and the impression curve by month is that market’s own seasonality, measured on your site rather than a national average.
NOAA CPC state degree-day tables
Free, weekly and population-weighted by state, and the cheapest proxy we know of for how far apart two markets’ seasons are.
Source: NOAA Climate Prediction Center, degree-day statisticsVerisk’s state hail exposure
Which markets need storm pages standing year-round, ranked by the share of roofs hit in the most recent year.
Source: Verisk, annual roofing reportFirst-indexed date against peak month
For any seasonal page, the first-indexed date in Search Console sits either before that market’s peak or inside it, and inside means the page spent the peak getting discovered.
We’ll map your markets and tell you what to build first.
The full grid of active markets and service lines, the demand window on every cell, and the order we’d build them in. Usually inside the first few weeks.