Case Study · 03 · Local SEO

318 inbound leads/mo for a 42-location med-spa group — without a single new ad dollar.

ClientConfidential — multi-location med-spa group
VerticalHealth & aesthetics
Engagement9 months
DisciplinesSEO · Automation · Content
318Monthly inbound leads at steady state
42/42Locations ranking page-1 for primary
+622%GBP profile views
378Programmatic pages shipped
4.8★Avg. review rating (from 4.1)
-54%Blended cost per booking

Context

42-location med-spa group that had grown through acquisition — six roll-ups in three years. Each original location came with its own Google Business Profile history, its own website setup, and its own review culture. The result: wildly inconsistent local rankings, 11 of 42 locations ranking page-1 for the group's primary high-margin service, and marketing paying a 7-figure Meta ads bill to backfill the gap.

The new VP Marketing had six months to prove local organic could carry a 40% share of booking volume. If she couldn't, the board was ready to centralize everything into a performance-media shop.

The audit

"We assumed local SEO was 'done' because we had locations in Google Maps. Taskstics showed us we were leaving 70% of the surface area completely uncovered."— VP Marketing

Strategy

Pillar 1 — GBP overhaul (the base layer)

Full audit of all 42 profiles. Categorical normalization. NAP alignment with website + Yelp + Apple Maps + Yext distribution. We added weekly post cadence, menu/service listings, Q&A seeding, and local-service-ads cross-linkage for the 18 locations eligible.

Pillar 2 — Programmatic [service × city] pages (378 of them)

We mapped the group's 9 primary services × 42 locations and built a programmatic template with real differentiators per page: on-staff provider profiles, location-specific pricing bands, embedded Google reviews for that location, local injury/safety FAQs, and schema markup (LocalBusiness + Service + FAQPage).

Pillar 3 — Review-velocity engine

Post-visit SMS + email ask, timed 2 hours after appointment close in the booking system. A/B tested the ask copy weekly. Response rate went from 4% to 23%. Volume of fresh reviews/month across the group went from 61 to 410.

Pillar 4 — Content for the research phase

Service-level editorial content targeting high-intent informational queries ("is X safe", "X recovery time", "X vs Y"). This caught the browse-phase traffic that eventually converted into [service] in [city] searches 2–8 weeks later. We saw a measurable lift in branded + geo search as this content ranked.

Timeline

Months 1–2 · GBP + measurement

42 profiles cleaned, call-tracking per location, review engine live

Each location got a tracked phone number. Booking system integrated with GA4. GBP posts scheduled 3×/week across all 42.

Months 3–5 · Programmatic rollout

378 service × city pages launched

Rolled out in waves of ~75 pages/wave to control crawl. Internal linking rebuilt. Each location page got embedded reviews, provider bios, and local proof.

Months 6–9 · Compound

42/42 locations ranking page-1 for primary service

Research-phase content lifted branded search 2.4×. Review velocity moved average rating from 4.1 to 4.8. Blended cost per booking down 54%.

Tech stack

YextGoogle Business Profile APIBirdeyeCallRailGA4Screaming FrogBrightLocalWebflow (programmatic)Supabase

What actually drove the number

What we got wrong

"Our local organic is now carrying 44% of bookings and costs us 1/5 of what Meta did. The board stopped asking about centralizing."— VP Marketing

What's next

Expansion to the next 11 locations acquired in Q4. A second service line (longevity / wellness) being rolled out with its own 9×42 = 378-page programmatic layer. Testing an AI-assisted FAQ expansion against voice/zero-click queries.

Open: 2 engagement slots this quarter

Let's model the next 4 quarters of your growth.

Book a 30-minute working session. We'll audit your current funnel, model realistic upside across channels, and tell you honestly whether we're the right partner.