seo-local — Local SEO Optimization
Local SEO Framework
Dimension A: Google Business Profile (GBP) Optimization
Profile Completeness Checklist
| Element |
Status |
Impact |
Notes |
| Business name |
— |
Critical |
Exact legal name, no keyword stuffing |
| Primary category |
— |
Critical |
Most specific category available |
| Secondary categories |
— |
High |
Up to 9 additional, all relevant |
| Business description |
— |
High |
750 chars max, natural keywords, value proposition |
| Address |
— |
Critical |
Exact match across all platforms |
| Phone number |
— |
Critical |
Local number preferred over toll-free |
| Website URL |
— |
Critical |
Link to location-specific page if multi-location |
| Business hours |
— |
High |
Include special hours, holiday hours |
| Photos |
— |
High |
Minimum 10: exterior, interior, team, products |
| Products/Services |
— |
Medium |
Complete catalog with descriptions and prices |
| Attributes |
— |
Medium |
All applicable attributes selected |
| Q&A |
— |
Medium |
Seed with common questions, monitor for new ones |
GBP Post Strategy
| Post Type |
Frequency |
Best Practices |
| What's New |
1-2x/week |
News, updates, behind-the-scenes |
| Offers |
As available |
Clear terms, expiration date, CTA |
| Events |
As scheduled |
Date, time, description, registration link |
| Products |
When new/updated |
Photo, price, description, link |
GBP Optimization Rules
- Never add keywords to business name (violates Google guidelines, risks suspension)
- Respond to ALL reviews within 24-48 hours
- Upload new photos monthly (minimum)
- Keep hours accurate — incorrect hours damage trust signals
- Use UTM parameters on GBP website link for tracking
Dimension B: Local Ranking Factors (2026)
The Local Pack Ranking Triad
| Factor |
Weight |
Controllable? |
Optimization |
| Relevance |
~25% |
Yes |
Category selection, description, content |
| Distance |
~25% |
No |
Physical location is fixed |
| Prominence |
~50% |
Yes |
Reviews, citations, links, content, authority |
Local Organic vs Local Pack
| Aspect |
Local Pack (Map) |
Local Organic |
| Ranking factors |
GBP signals dominant |
Standard SEO + local signals |
| Content needed |
GBP profile optimization |
Location pages, local content |
| Links needed |
Citations + local links |
Standard link building + local |
| Reviews |
Directly visible, critical |
Indirect signal |
Key Local Ranking Signals
- GBP signals: Category, keywords in description, completeness, activity
- Review signals: Quantity, velocity, diversity, keywords in reviews, responses
- On-page signals: NAP on website, local keywords, city/state in title tags
- Citation signals: NAP consistency, citation volume, quality of citation sources
- Link signals: Local links (chambers, newspapers, directories), DR of linking domains
- Behavioral signals: Click-through rate, mobile clicks-to-call, driving directions requests
- Personalization: Searcher's location, search history
Dimension C: NAP Consistency & Citations
NAP Audit Process
- Define canonical NAP (exact format to use everywhere):
Name: [Exact Business Name LLC]
Address: [123 Main St, Suite 100, City, ST 12345]
Phone: [(555) 123-4567]
- Audit all existing citations for consistency
- Prioritize fixes by citation source authority
Core Citation Sources (Must-Have)
| Platform |
Priority |
Category |
| Google Business Profile |
Critical |
Search engine |
| Apple Maps / Apple Business Connect |
Critical |
Maps |
| Bing Places |
High |
Search engine |
| Yelp |
High |
Review/Directory |
| Facebook |
High |
Social |
| Better Business Bureau |
High |
Trust |
| Yellow Pages / YP.com |
Medium |
Directory |
| Foursquare |
Medium |
Data aggregator |
Industry-Specific Citations
| Industry |
Key Citations |
| Healthcare |
Healthgrades, Vitals, WebMD, Zocdoc |
| Legal |
Avvo, FindLaw, Justia, Lawyers.com |
| Real Estate |
Zillow, Realtor.com, Trulia, Redfin |
| Restaurants |
Yelp, TripAdvisor, OpenTable, Zomato |
| Home Services |
Angi, HomeAdvisor, Thumbtack, Houzz |
| Automotive |
Cars.com, AutoTrader, CarGurus, DealerRater |
Citation Consistency Scoring
| Issue |
Severity |
Impact |
| Wrong business name |
Critical |
Confuses Google entity matching |
| Wrong address |
Critical |
Misdirects customers, loses ranking |
| Wrong phone number |
High |
Lost leads, trust issues |
| Inconsistent formatting |
Medium |
Minor confusion signal |
| Duplicate listings |
Medium |
Dilutes authority |
| Closed/outdated listing |
High |
Incorrect info in results |
Dimension D: Review Management & Reputation
Review Acquisition Strategy
| Channel |
Timing |
Method |
| Post-service email |
1-3 days after service |
Automated email with direct review link |
| SMS follow-up |
Same day or next day |
Short text with review link |
| In-store QR code |
At point of sale |
QR code on receipt, counter card |
| Website widget |
After conversion/visit |
Review prompt on thank-you page |
| Staff ask |
End of positive interaction |
Verbal request + card with link |
Review Response Templates
Positive review (4-5 stars):
- Thank by name, reference specific service, invite back
- Keep unique — don't copy-paste same response
Neutral review (3 stars):
- Thank for feedback, acknowledge concern, offer resolution
- Move detailed conversation offline
Negative review (1-2 stars):
- Apologize, don't be defensive, offer offline resolution
- Never argue publicly — potential customers are watching
Review Metrics to Track
| Metric |
Good |
Warning |
Critical |
| Average rating |
≥4.5 |
4.0-4.4 |
<4.0 |
| Review count vs competitors |
Above avg |
At avg |
Below avg |
| Review velocity |
Steady growth |
Flat |
Declining |
| Response rate |
100% |
>80% |
<80% |
| Response time |
<24h |
24-72h |
>72h |
Review Schema Implementation
{
"@type": "LocalBusiness",
"aggregateRating": {
"@type": "AggregateRating",
"ratingValue": "4.8",
"reviewCount": "127",
"bestRating": "5",
"worstRating": "1"
}
}
Note: Only use AggregateRating from legitimate, verifiable review sources.
Dimension E: Local Content Strategy
Service Area Pages
For businesses serving multiple locations:
| Element |
Requirement |
Example |
| Unique title |
City + Service + Brand |
"Plumbing Services in Austin, TX - ABC Plumbing" |
| Unique H1 |
Natural, location-specific |
"Expert Plumbing Services for Austin Homes" |
| Unique content |
60%+ unique per page |
Local landmarks, area-specific info, team bios |
| Local schema |
LocalBusiness + areaServed |
PostalAddress + GeoCoordinates |
| Google Maps embed |
Centered on service area |
Dynamic map with business marker |
| Local testimonials |
From customers in that area |
Name + area (with permission) |
| Local images |
Photos from that location |
Team, projects, local landmarks |
Quality Gates for Location Pages
- Warning: 30+ location pages → enforce 60%+ unique content per page
- Hard stop: 50+ location pages → require user justification (doorway page risk)
- Never create thin location pages with only city name swapped
- Each page must provide genuine value to someone in that location
Cross-reference: references/quality-gates.md for content thresholds.
Local Content Types
| Content |
SEO Value |
Effort |
| Service area pages |
High (local rankings) |
Medium |
| Local event coverage |
Medium (freshness + links) |
Low |
| Local guides/resources |
High (links + authority) |
High |
| Case studies (local clients) |
High (E-E-A-T + trust) |
Medium |
| Community involvement posts |
Medium (brand + links) |
Low |
| Local FAQ page |
Medium (PAA + voice search) |
Low |
Local Schema Markup
Required for local businesses:
{
"@context": "https://schema.org",
"@type": "LocalBusiness",
"name": "Business Name",
"address": {
"@type": "PostalAddress",
"streetAddress": "123 Main St",
"addressLocality": "Austin",
"addressRegion": "TX",
"postalCode": "78701"
},
"geo": {
"@type": "GeoCoordinates",
"latitude": "30.2672",
"longitude": "-97.7431"
},
"telephone": "+1-555-123-4567",
"openingHoursSpecification": [],
"areaServed": {
"@type": "GeoCircle",
"geoMidpoint": {"@type": "GeoCoordinates", "latitude": "30.2672", "longitude": "-97.7431"},
"geoRadius": "50 mi"
}
}
Multi-Location Management
For businesses with multiple physical locations:
- Unique GBP per location (never share listings)
- Location-specific landing pages with unique content
- Store locator page with structured data (if 5+ locations)
- Consistent branding but locally relevant content
- Individual review management per location
- Location-specific social profiles if resources allow
Scoring
| Category |
Weight |
| GBP Optimization |
30% |
| NAP Consistency |
20% |
| Review Management |
20% |
| Local Ranking Factors |
15% |
| Local Content Strategy |
15% |
Output Format
Generate LOCAL-SEO-REPORT.md with:
- Local SEO Score (0-100)
- GBP Audit (completeness checklist, optimization opportunities)
- NAP Consistency Report (citations audited, issues found, fix priorities)
- Review Analysis (rating, count, velocity, response rate, competitor comparison)
- Local Ranking Assessment (Local Pack visibility, local organic rankings)
- Content Recommendations (service area pages, local content plan)
- Priority Action Plan (Critical → High → Medium → Low)
1---2name: seo-local3description: Local SEO optimization covering Google Business Profile (GBP) audit, local ranking factors, NAP consistency, citation management, review strategy, local content optimization, and multi-location management. Use when user says "local SEO", "Google Business Profile", "GBP", "local ranking", "NAP consistency", "local citations", "review management", or mentions a physical business location.4---56# seo-local — Local SEO Optimization78## Local SEO Framework910### Dimension A: Google Business Profile (GBP) Optimization1112#### Profile Completeness Checklist13| Element | Status | Impact | Notes |14|---------|--------|--------|-------|15| **Business name** | — | Critical | Exact legal name, no keyword stuffing |16| **Primary category** | — | Critical | Most specific category available |17| **Secondary categories** | — | High | Up to 9 additional, all relevant |18| **Business description** | — | High | 750 chars max, natural keywords, value proposition |19| **Address** | — | Critical | Exact match across all platforms |20| **Phone number** | — | Critical | Local number preferred over toll-free |21| **Website URL** | — | Critical | Link to location-specific page if multi-location |22| **Business hours** | — | High | Include special hours, holiday hours |23| **Photos** | — | High | Minimum 10: exterior, interior, team, products |24| **Products/Services** | — | Medium | Complete catalog with descriptions and prices |25| **Attributes** | — | Medium | All applicable attributes selected |26| **Q&A** | — | Medium | Seed with common questions, monitor for new ones |2728#### GBP Post Strategy29| Post Type | Frequency | Best Practices |30|-----------|-----------|----------------|31| **What's New** | 1-2x/week | News, updates, behind-the-scenes |32| **Offers** | As available | Clear terms, expiration date, CTA |33| **Events** | As scheduled | Date, time, description, registration link |34| **Products** | When new/updated | Photo, price, description, link |3536#### GBP Optimization Rules37- Never add keywords to business name (violates Google guidelines, risks suspension)38- Respond to ALL reviews within 24-48 hours39- Upload new photos monthly (minimum)40- Keep hours accurate — incorrect hours damage trust signals41- Use UTM parameters on GBP website link for tracking4243### Dimension B: Local Ranking Factors (2026)4445#### The Local Pack Ranking Triad46| Factor | Weight | Controllable? | Optimization |47|--------|--------|--------------|-------------|48| **Relevance** | ~25% | Yes | Category selection, description, content |49| **Distance** | ~25% | No | Physical location is fixed |50| **Prominence** | ~50% | Yes | Reviews, citations, links, content, authority |5152#### Local Organic vs Local Pack53| Aspect | Local Pack (Map) | Local Organic |54|--------|-----------------|---------------|55| Ranking factors | GBP signals dominant | Standard SEO + local signals |56| Content needed | GBP profile optimization | Location pages, local content |57| Links needed | Citations + local links | Standard link building + local |58| Reviews | Directly visible, critical | Indirect signal |5960#### Key Local Ranking Signals611. **GBP signals**: Category, keywords in description, completeness, activity622. **Review signals**: Quantity, velocity, diversity, keywords in reviews, responses633. **On-page signals**: NAP on website, local keywords, city/state in title tags644. **Citation signals**: NAP consistency, citation volume, quality of citation sources655. **Link signals**: Local links (chambers, newspapers, directories), DR of linking domains666. **Behavioral signals**: Click-through rate, mobile clicks-to-call, driving directions requests677. **Personalization**: Searcher's location, search history6869### Dimension C: NAP Consistency & Citations7071#### NAP Audit Process721. Define canonical NAP (exact format to use everywhere):73 ```74 Name: [Exact Business Name LLC]75 Address: [123 Main St, Suite 100, City, ST 12345]76 Phone: [(555) 123-4567]77 ```782. Audit all existing citations for consistency793. Prioritize fixes by citation source authority8081#### Core Citation Sources (Must-Have)82| Platform | Priority | Category |83|----------|---------|----------|84| **Google Business Profile** | Critical | Search engine |85| **Apple Maps / Apple Business Connect** | Critical | Maps |86| **Bing Places** | High | Search engine |87| **Yelp** | High | Review/Directory |88| **Facebook** | High | Social |89| **Better Business Bureau** | High | Trust |90| **Yellow Pages / YP.com** | Medium | Directory |91| **Foursquare** | Medium | Data aggregator |9293#### Industry-Specific Citations94| Industry | Key Citations |95|----------|-------------|96| **Healthcare** | Healthgrades, Vitals, WebMD, Zocdoc |97| **Legal** | Avvo, FindLaw, Justia, Lawyers.com |98| **Real Estate** | Zillow, Realtor.com, Trulia, Redfin |99| **Restaurants** | Yelp, TripAdvisor, OpenTable, Zomato |100| **Home Services** | Angi, HomeAdvisor, Thumbtack, Houzz |101| **Automotive** | Cars.com, AutoTrader, CarGurus, DealerRater |102103#### Citation Consistency Scoring104| Issue | Severity | Impact |105|-------|---------|--------|106| Wrong business name | Critical | Confuses Google entity matching |107| Wrong address | Critical | Misdirects customers, loses ranking |108| Wrong phone number | High | Lost leads, trust issues |109| Inconsistent formatting | Medium | Minor confusion signal |110| Duplicate listings | Medium | Dilutes authority |111| Closed/outdated listing | High | Incorrect info in results |112113### Dimension D: Review Management & Reputation114115#### Review Acquisition Strategy116| Channel | Timing | Method |117|---------|--------|--------|118| **Post-service email** | 1-3 days after service | Automated email with direct review link |119| **SMS follow-up** | Same day or next day | Short text with review link |120| **In-store QR code** | At point of sale | QR code on receipt, counter card |121| **Website widget** | After conversion/visit | Review prompt on thank-you page |122| **Staff ask** | End of positive interaction | Verbal request + card with link |123124#### Review Response Templates125126**Positive review (4-5 stars)**:127- Thank by name, reference specific service, invite back128- Keep unique — don't copy-paste same response129130**Neutral review (3 stars)**:131- Thank for feedback, acknowledge concern, offer resolution132- Move detailed conversation offline133134**Negative review (1-2 stars)**:135- Apologize, don't be defensive, offer offline resolution136- Never argue publicly — potential customers are watching137138#### Review Metrics to Track139| Metric | Good | Warning | Critical |140|--------|------|---------|----------|141| Average rating | ≥4.5 | 4.0-4.4 | <4.0 |142| Review count vs competitors | Above avg | At avg | Below avg |143| Review velocity | Steady growth | Flat | Declining |144| Response rate | 100% | >80% | <80% |145| Response time | <24h | 24-72h | >72h |146147#### Review Schema Implementation148```json149{150 "@type": "LocalBusiness",151 "aggregateRating": {152 "@type": "AggregateRating",153 "ratingValue": "4.8",154 "reviewCount": "127",155 "bestRating": "5",156 "worstRating": "1"157 }158}159```160Note: Only use AggregateRating from legitimate, verifiable review sources.161162### Dimension E: Local Content Strategy163164#### Service Area Pages165For businesses serving multiple locations:166167| Element | Requirement | Example |168|---------|------------|---------|169| **Unique title** | City + Service + Brand | "Plumbing Services in Austin, TX - ABC Plumbing" |170| **Unique H1** | Natural, location-specific | "Expert Plumbing Services for Austin Homes" |171| **Unique content** | 60%+ unique per page | Local landmarks, area-specific info, team bios |172| **Local schema** | LocalBusiness + areaServed | PostalAddress + GeoCoordinates |173| **Google Maps embed** | Centered on service area | Dynamic map with business marker |174| **Local testimonials** | From customers in that area | Name + area (with permission) |175| **Local images** | Photos from that location | Team, projects, local landmarks |176177#### Quality Gates for Location Pages178- **Warning**: 30+ location pages → enforce 60%+ unique content per page179- **Hard stop**: 50+ location pages → require user justification (doorway page risk)180- Never create thin location pages with only city name swapped181- Each page must provide genuine value to someone in that location182183Cross-reference: `references/quality-gates.md` for content thresholds.184185#### Local Content Types186| Content | SEO Value | Effort |187|---------|----------|--------|188| Service area pages | High (local rankings) | Medium |189| Local event coverage | Medium (freshness + links) | Low |190| Local guides/resources | High (links + authority) | High |191| Case studies (local clients) | High (E-E-A-T + trust) | Medium |192| Community involvement posts | Medium (brand + links) | Low |193| Local FAQ page | Medium (PAA + voice search) | Low |194195#### Local Schema Markup196Required for local businesses:197```json198{199 "@context": "https://schema.org",200 "@type": "LocalBusiness",201 "name": "Business Name",202 "address": {203 "@type": "PostalAddress",204 "streetAddress": "123 Main St",205 "addressLocality": "Austin",206 "addressRegion": "TX",207 "postalCode": "78701"208 },209 "geo": {210 "@type": "GeoCoordinates",211 "latitude": "30.2672",212 "longitude": "-97.7431"213 },214 "telephone": "+1-555-123-4567",215 "openingHoursSpecification": [],216 "areaServed": {217 "@type": "GeoCircle",218 "geoMidpoint": {"@type": "GeoCoordinates", "latitude": "30.2672", "longitude": "-97.7431"},219 "geoRadius": "50 mi"220 }221}222```223224### Multi-Location Management225226For businesses with multiple physical locations:2271. **Unique GBP** per location (never share listings)2282. **Location-specific landing pages** with unique content2293. **Store locator** page with structured data (if 5+ locations)2304. **Consistent branding** but locally relevant content2315. **Individual review management** per location2326. **Location-specific social profiles** if resources allow233234## Scoring235236| Category | Weight |237|----------|--------|238| GBP Optimization | 30% |239| NAP Consistency | 20% |240| Review Management | 20% |241| Local Ranking Factors | 15% |242| Local Content Strategy | 15% |243244## Output Format245246Generate `LOCAL-SEO-REPORT.md` with:2471. **Local SEO Score** (0-100)2482. **GBP Audit** (completeness checklist, optimization opportunities)2493. **NAP Consistency Report** (citations audited, issues found, fix priorities)2504. **Review Analysis** (rating, count, velocity, response rate, competitor comparison)2515. **Local Ranking Assessment** (Local Pack visibility, local organic rankings)2526. **Content Recommendations** (service area pages, local content plan)2537. **Priority Action Plan** (Critical → High → Medium → Low)