Multi-Location SEO Audit — Phase 21
Executive Summary
Multi-location SEO is exponentially more complex than single-location — each additional location adds citation management, content differentiation, schema isolation, and cannibalization risk. In 2025, proximity weight for mobile local search increased to ~35% of local pack ranking (up from ~25% in 2023), meaning geographic optimization at each location matters more than ever. AI Overviews appear for ~35% of local service queries (Q1 2025) and pull directly from GBP data + location landing pages. Businesses with template-cloned location pages face active suppression under Google's Helpful Content System (integrated into core algorithm March 2024). The 60% unique content threshold is now a hard floor — below it = Helpful Content System penalty risk.
2025 multi-location benchmarks per location: | Metric | Minimum Viable | Competitive | Market Leader | |--------|---------------|------------|---------------| | GBP review count | 25 reviews | 75–100 | 200+ | | GBP review rating | 4.0 stars | 4.5 stars | 4.7–5.0 stars | | Review velocity | 2/month | 5–8/month | 15+/month | | GBP photos | 10 photos | 25+ photos | 50+ photos | | Location page word count | 600 words | 1,000–1,500 words | 2,000+ words | | Unique content vs. other pages | 60% | 80%+ | 90%+ | | Citations per location | 40 | 75–100 | 150+ | | NAP consistency | 85% | 95% | 99–100% |
Numbered Action Plan:
Immediate (Week 1, Per-Location Wins)
- Run NAP consistency audit — BrightLocal or Whitespark → check all active citations for each location → identify and flag inconsistencies (wrong address, old phone, variant business names). Effort: 30 min/location. Priority: 25 (5×5).
- Verify all GBPs are claimed and verified — each location must have its own GBP with verified address. Unclaimed GBP = competitor can claim it. Effort: 30 min/location.
- Audit location page unique content — Screaming Frog → compare content similarity across location pages. Any page <60% unique vs. template = HCS penalty risk. Flag for immediate rewrite. Effort: 1 hr.
- Check schema isolation — each location page must have its own
LocalBusinessschema with unique@id,address,telephone,geo. Check with Google Rich Results Test. Effort: 15 min/location. - Check GBP 2025 features per location — verify Q&A seeded with keywords, service menu complete, review velocity ≥2/month, photos ≥25. Effort: 20 min/location.
Short-Term (Week 2–4)
- Fix duplicate SAP (Service Area Pages) — any location page ranking for the same keyword in the same city = cannibalization. Implement canonical to strongest page or differentiate content significantly. Effort: 1–2 hrs.
- Add AI search optimization per location — each location page needs: FAQPage schema (5 FAQ min, local questions), LocalBusiness + areaServed schema, local review AggregateRating, GBP Q&A with service + location keywords. AIO appears for ~35% of local queries. Effort: 1 hr/location.
- Implement
parentOrganizationschema — each location page'sLocalBusinessschema must includeparentOrganizationpointing to the main brand's Organization schema. This is the correct replacement for deprecatedbranchOf. Effort: 30 min dev. - Build or optimize location landing pages — each location needs: 1,000+ words unique content, local photos (not stock), local testimonials, local team/staff mention, local landmarks/context. Target Surfer Score ≥70. Effort: 4–6 hrs/location.
- Set up BrightLocal Grid Tracker per location — track each location's GBP rank across 5×5 geogrid to identify proximity score gaps within the service area. Effort: 30 min setup/location. Expected: identifies which zones need additional GBP optimization.
Applicability Check
This phase applies when the business has:
- 2+ physical addresses serving different markets
- Franchise or franchise-like multi-location model
- Service-area businesses covering 3+ distinct cities
- Plans to expand to additional locations
If single-location only: note N/A, skip this phase, award 100/100 by default.
Step 1: Read Project Context
Read {AUDIT_DIR}/intake-data.md — confirm number of locations, business name, URL. Read {AUDIT_DIR}/local-findings.md — single-location GBP/review baseline. Read {AUDIT_DIR}/technical-findings.md — URL architecture and schema status. Read {AUDIT_DIR}/competitor-profiles.md — competitor multi-location footprint.
Tools for this phase: | Tool | Purpose | Cost | |------|---------|------| | BrightLocal | Multi-location citation management, NAP audits, GBP tracking (1–100 locations) | Paid | | Yext | Centralized listing management at scale (50+ locations), real-time sync | Paid | | Whitespark | Citation building per location, Local Rank Tracker grid view | Paid | | Local Falcon | Geographic rank grid — visualize pack position across a city for each location | Paid | | Data Axle | Primary aggregator submission — feeds 100s of directories per location | Paid | | PlePer Tools | Free competitor GBP data extraction — category, attributes, photo counts | Free | | Google Business Profile API | Manage 10+ locations programmatically (replaces deprecated My Business API v4.1) | Free | | Screaming Frog | Crawl location pages for duplicate content, schema, internal link issues | Paid/Free |
2025 Multi-Location Context: AIO (AI Overviews) appears for ~35% of local service queries as of Q1 2025, and proximity weight for mobile search increased to ~35% of the local pack algorithm. Businesses with complete, verified GBP listings at each location and strong unique content per location page are best positioned for AIO inclusion.
Step 2: GBP Per-Location Audit
For EACH location, verify using PlePer or direct GBP Manager export:
| Check | Location 1 | Location 2 | Location 3 | |-------|-----------|-----------|-----------| | Separate GBP listing exists | ✅/❌ | ✅/❌ | ✅/❌ | | Listing claimed & verified | ✅/❌ | ✅/❌ | ✅/❌ | | Verified via: Postcard/Video/Email | | | | | Unique primary category set | ✅/❌ | ✅/❌ | ✅/❌ | | Correct unique address | ✅/❌ | ✅/❌ | ✅/❌ | | Unique local phone number (not shared 1800) | ✅/❌ | ✅/❌ | ✅/❌ | | Links to location-specific page (not homepage) | ✅/❌ | ✅/❌ | ✅/❌ | | 100+ photos for location | ✅/❌ | ✅/❌ | ✅/❌ | | Weekly GBP posts (location-specific content) | ✅/❌ | ✅/❌ | ✅/❌ | | 20+ reviews with ≥4.3 rating | ✅/❌ | ✅/❌ | ✅/❌ | | Q&A seeded (5+ owner answers) | ✅/❌ | ✅/❌ | ✅/❌ | | Services/products listed | ✅/❌ | ✅/❌ | ✅/❌ |
Photo impact: Locations with 100+ photos receive 1,065% more website clicks vs. locations with fewer photos (Google internal data, 2024). Prioritize photo upload to all locations.
GBP Bulk Verification (10+ locations): Use accounts.locations.list endpoint via the current GBP API (v1). The legacy My Business API v4.1 is deprecated — use mybusinessaccountmanagement.googleapis.com instead.
Critical: Each GBP must link to its own dedicated location page — not the homepage. GBP Chat was deprecated July 2024 — remove any references.
Step 3: Location Page Architecture
URL Structure Assessment (Ranked by SEO Preference)
| Pattern | SEO Preference | When to Use | |---------|--------------|-------------| | domain.com/locations/chicago-il/ | ✅ Best — inherits root domain authority | Single brand, 2–50 locations | | domain.com/chicago-plumbing/ | ✅ Good — service + location in URL | Service-dominant businesses | | domain.com/locations/chicago-il/drain-cleaning/ | ✅ Best for deep service pages | Service × location matrix | | chicago.domain.com/ | ⚠️ Acceptable — use for franchise with distinct branding | Large franchise (50+ distinct brands) | | domain.com/?location=chicago | ❌ Avoid — parameter-based, crawl issues | Never | | domain.com/location.php?id=3 | ❌ Avoid — no location signal in URL | Never |
2025 recommendation: Subdirector