๐Ÿ  RoofingPhoenix, AZ ยท 120 days

Phoenix Roofer Expands from 1 Ranking City to 14 โ€” Without Touching Ad Spend

A roofing company serving 14 Phoenix-area cities was only ranking organically in one of them. Competitors were capturing "roofer [suburb]" searches they had zero visibility for. 13 city-specific landing pages changed that entirely โ€” and added an estimated 35 calls per month from cities they'd been invisible in.

The Situation

This Phoenix-area roofing company was doing well โ€” 6 crews, strong referral network, consistent summer storm season volume. But their organic search footprint was a single city: their headquarters location in Tempe. Their website had a "Service Areas" page that listed 14 cities in a bulleted list with no individual pages for any of them.

When a homeowner in Chandler, Gilbert, Scottsdale, or Mesa searched "roofer near me" or "roofing company [city]," this company simply didn't appear. The calls were going to competitors who did have city-specific content โ€” even if those competitors' work quality was objectively lower.

The math on the missed opportunity was clear: the Phoenix metro has millions of residential roofing searches annually. They were capturing only the fraction originating from their home city.

Why Their "Service Areas" Page Wasn't Working

A single page listing 14 city names in a bulleted list sends essentially no geographic relevance signal to Google. There's no content that tells Google "this business provides roofing services in Chandler." There's no H1 with "Chandler Roofing," no unique local content, no schema markup specifying the service area. Google's local algorithm simply doesn't reward a list of city names โ€” it rewards pages that are genuinely about serving a specific city.

The distinction matters: Google wants to show searchers results that are specifically relevant to where they are. A page that merely mentions Chandler is not specifically relevant to Chandler. A page that's written as the definitive resource for roofing in Chandler โ€” with local content, local schema, and local signals โ€” is.

What We Built

We conducted keyword research for 14 Phoenix-area cities, confirming monthly search volume for "[city] roofing company" and "[city] roofer near me" searches. Then we built individual landing pages for each:

  • Chandler, AZ
  • Gilbert, AZ
  • Scottsdale, AZ
  • Mesa, AZ
  • Glendale, AZ
  • Peoria, AZ
  • Surprise, AZ
  • Goodyear, AZ
  • Avondale, AZ
  • Queen Creek, AZ
  • San Tan Valley, AZ
  • Maricopa, AZ
  • Buckeye, AZ

Each page included: H1 with "[City] Roofing Company," unique content referencing local housing stock and roofing considerations (Phoenix-area heat, monsoon season damage patterns, HOA roofing requirements common in that city), LocalBusiness schema with the city specified, click-to-call and quote form, and internal links to/from the main services page.

No two pages shared more than structural similarity โ€” every piece of content was written specifically for that city's homeowners and their roofing concerns.

Results: 120 Days

Pages were published in month 1. By day 60, 7 pages were indexed and ranking on page 1 for their target city + roofing queries. By day 90, 10 pages were ranking top 5. By day 120, 11 of 13 pages ranked in the top 3 for at least one primary keyword. Two cities (Maricopa and Buckeye) were further from the business location and took longer โ€” both cracked page 1 by day 150.

The company estimated approximately 35 additional inbound calls per month attributable to the new city page traffic โ€” verifiable because they began asking every new caller how they found the company and tracking the responses. Ad spend was not increased during the period; the additional calls were entirely organic.

"We've been doing roofs in Chandler and Gilbert for 12 years and had never shown up when someone in those cities searched for a roofer. It was that simple โ€” we were doing the work but invisible online. Now we show up everywhere we actually work."

โ€” Owner, Phoenix Roofing Company

The Lesson

Service area pages work when they're genuinely built for each city โ€” not when they're templates with the city name swapped. The investment in unique content per city is exactly what separates pages that rank from pages that don't. And for contractors who serve wide service areas, it's one of the highest-ROI SEO investments available: each page, once it ranks, generates calls indefinitely with no ongoing cost per click.

Results Summary

1โ†’14
Ranking Cities
11/13
Pages in Top 3 (120 days)
+35
Monthly Calls Added
$0
Ad Spend Increase
Services Used
Service Area Pages Local SEO
Get My Free Audit

Serving Cities You're Not Ranking In?

Free coverage audit โ€” tell us your trade and service area and we'll show you which cities you're invisible in right now.