Beating the big guys.
How a family-owned roofer took over local search across three of Oklahoma's largest metros in six months.
Sources: Rose Rock Marketing data connector, SEMrush Position Tracking (three city-level trackers), Google Search Console, Google Analytics 4. Baseline: October 2025. Current: March / April 2026.
Four wins that defined the engagement.
More than doubled the rate of new customers finding the site who didn't already know the brand.
Dominant Local Pack presence across the three largest metros in the state. Was one city at baseline.
Fresh ranking gains in a single month as the topical authority compounded across cities.
Portfolio-wide average SERP position moved from 26.0 to 15.6 across all tracked queries.
A family-owned contractor, losing the Google Maps fight.
The client came to Rose Rock in October 2025 with a problem familiar to every family-owned contractor in a mid-sized American market: they were losing the Google Maps fight to bigger, better-funded, multi-state franchises.
The roofing category in Central Oklahoma is one of the most contested verticals in local search. National and regional chains spend aggressively, buy thousands of reviews, and own the generic "roofing near me" footprint by default.
Three specific constraints defined the engagement at kickoff:
In the home market, only a handful of geo-modified commercial queries held top-3 positions. Most sat on page two or weren't ranked at all. Homeowners actively searching for a local roofer weren't finding them.
Of roughly 450 monthly organic clicks at engagement start, more than half came from people who already knew the company's name. Organic was retaining existing relationships, not creating new ones.
Two of the three largest metros in Oklahoma, both clear expansion markets, had essentially no dedicated SEO infrastructure. No city-specific landing pages, no local schema, no consistent NAP profile.
National franchises outpaced the client on review volume, ad spend, and directory presence. Organic needed to win with technical foundation and content, because it couldn't win with budget.
They didn't need to become a bigger company to win. They needed to be findable in the moment a homeowner decided to call a roofer.
A phased, city-by-city local SEO rollout.
Each phase built infrastructure the next could reuse. By the time we opened the third market, we were launching, not learning.
Own the Home Market First
The home city had the strongest review moat. We started there to prove the playbook before extending it.
- Rebuilt the city landing page around the full commercial keyword set: services, intent modifiers, neighborhoods, and schema-marked NAP.
- Tuned the Google Business Profile with service-specific categories, photography, and a review velocity plan. Citations across directories were audited and corrected.
- Launched a helpful content program around the questions local homeowners actually ask: insurance claim process, hail damage identification, roof replacement cost expectations.
Expand to the Larger Metro
Oklahoma City is a significantly larger and more competitive market. We ported the playbook over, then rebuilt it for scale.
- Launched a dedicated OKC location page mapped to the full OKC commercial query set.
- Expanded topical authority with a long-form cost-of-replacement guide that now pulls ranking volume across 100+ related queries statewide.
- Deployed review-driven social proof and local press mentions to support trust signals against the franchise competitors.
Enter the Third Market
Norman was the newest territory and the cleanest test of the repeatable process. The playbook was already proven, and the gains came faster than either of the prior two cities.
- Launched the Norman location page with the same structure: service coverage, schema, neighborhood mentions, and clear contact CTAs.
- Ran hyperlocal content targeting Norman-specific terms that had essentially zero brand visibility at launch.
- Conversion events wired into GA4 by city so every form submission, phone call, and quote request is attributable to the market that produced it.
Three metros. Three Local Packs. Consistently ahead of the franchises.
Six months in, the client doesn't just show up in local search, they consistently beat the national franchises on the queries that actually drive calls.
Local Pack Dominance in Three Metros
Priority commercial queries now hold top-3 positions across all three markets. Unranked terms dropped from 171 combined at baseline to just 20 across the same portfolio.
- Home metro: 3 top-3 keywords, now 19. Every priority commercial query holds a top-10 position.
- Oklahoma City: 9 top-3 keywords, now 20. Core queries like roof replacement okc and oklahoma city roofer now rank #1 and #2.
- Norman: 5 top-3 keywords, now 22, in under four months of tracking. The fastest ramp of the three.
Non-Branded Traffic More Than Doubled
The clearest read on whether the strategy worked: are people who don't already know the brand finding them?
- Non-branded clicks: +102.7% MoM
- Total impressions: +136.2% MoM
- Total clicks: +39.5% MoM
- Average SERP position: +10.4 spots gained (26.0 → 15.6)
A Portfolio That Compounds
Roughly 70% of the ranking portfolio is carried by a handful of purpose-built pages. Every one of them was created during the engagement, not legacy content:
- The home page (181 ranking keywords in the last 30 days),strengthened by schema, internal linking, and the city-specific supporting pages.
- Long-form cost-of-replacement guide (106 ranking keywords),one piece now pulling statewide query volume.
- Roofing costs service hub (103 ranking keywords),built to capture commercial intent around pricing.
- City location pages for OKC and the home metro: 95 and 49 ranking keywords respectively, anchoring local discovery.
- Insurance claim help page (87 ranking keywords),captures informational intent and routes to conversion.
Want to own your local market?
Book a free discovery call. We'll tell you honestly whether we can build the same compounding engine for your brand.