Industries · Home Services

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.

The Argument

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.

JanFebMarAprMayJunJulAugSepOctNovDec Swing
Sharp curves
Frozen pipe repair
1,156163
609% Peak Jan 1,156 · Valley Aug 163 Heating system repair
4062,816
594% Peak Oct 2,816 · Valley Jan 406 Emergency AC repair
1,8369,057
393% Peak Nov 9,057 · Valley Feb 1,836 AC repair
25,02791,690
266% Peak Jul 91,690 · Valley Feb 25,027 Storm damage roof repair
6521,566
140% Peak Aug 1,566 · Valley Jun 652
Near-flat
Plumber near me
211,320154,852
36% Peak Jul 211,320 · Valley Dec 154,852 Outlet not working
1,5522,080
34% Peak Dec 2,080 · Valley Feb 1,552 Electrician near me
93,281117,931
26% Peak Jul 117,931 · Valley Mar 93,281 Roof repair near me
16,30720,235
24% Peak Sep 20,235 · Valley Feb 16,307 Electrical panel upgrade
4,4733,628
23% Peak Jul 4,473 · Valley Sep 3,628
Peak month (monthly volume) Valley month (monthly volume)

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.

Diagnostics

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.

01

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.

02

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.

03

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.

04

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.

05

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.

06

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.

The Work

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.

01

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.

02

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.

03

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%.

04

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.

05

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.

06

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.

The Decision

Two ways to build the same market pages.

Path A

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.

First monthThe whole grid live in a single sprint
What followsNear-identical pages competing with each other and with the aggregators
Source: Google Search Central, spam policies — doorway pages.
Path B

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.

First monthFewer pages, ordered by the window on each cell
What followsNon-brand impressions arriving market by market, ahead of each season
1.74%

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.
Proof

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.

Case Study · Sherpa Auto Transport

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.

~8,500 → ~79,000Monthly organic sessions, June 2024 → June 2026 (~9×)
<100 → 1,131Pages indexed at the start → pages with traffic now
27/28 → 39Authority Score, with 873 referring domains
33.1KOrganic keywords
SEMrush estimates, U.S. database, pulled June 18, 2026. Starting branded share of 80–85% is an estimate. · Read the full case study →
Named Engagement

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.

Named Engagement

Palmetto

National solar and HVAC provider. Their model moved toward a marketplace while we worked, and the content we built moved with it.

Named Engagement

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.

609%
Peak-to-valley swing on “frozen pipe repair”: January against August
Source: WebFX / Ahrefs Keywords Explorer, Dec 2025
23%
Peak-to-valley swing on “electrical panel upgrade,” across the same twelve months
Source: WebFX / Ahrefs Keywords Explorer, Dec 2025
~12×
Florida’s cooling degree days against Washington’s, 1 Jan – 1 Aug 2026
Source: NOAA Climate Prediction Center, population-weighted state CDD
51.8%
Share of Kansas roofs hit by severe hail in 2025, the highest of any state
Source: Verisk, 2026 roofing report
Run The Checks

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 Help

Search 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 statistics

Verisk’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 report

First-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.

Work With A2

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.