Local SEO: Google Business Profile, NAP consistency, service-area pages
A comprehensive installation and audit reference for local search optimization — the discipline of ranking for location-specific queries, appearing in the Google Local Pack and Maps results, managing…
Google Business Profile, Local Pack Ranking, NAP Consistency, Citations, Reviews, and Programmatic Local Pages
A comprehensive installation and audit reference for local search optimization — the discipline of ranking for location-specific queries, appearing in the Google Local Pack and Maps results, managing the citation ecosystem, building review-driven trust signals, and structuring programmatic local pages that genuinely serve location-specific user intent rather than functioning as doorway pages. This document is dual-purpose: installation manual and audit document.
Cross-stack implementation note: the code samples in this framework are written in plain HTML for clarity. For React, Vue, Svelte, Next.js, Nuxt, SvelteKit, Astro, Hugo, 11ty, Remix, WordPress, Shopify, and Webflow equivalents of every pattern below, see
framework-cross-stack-implementation.md. For pure client-rendered SPAs (no SSR/SSG) seeframework-react.md. For Tailwind-specific concerns (purge, dynamic classes, dark-mode CLS, focus accessibility) seeframework-tailwind.md.
1. Document Purpose & How to Use This Document
1.1 What This Document Is
This is the canonical reference for local SEO across every meaningful surface: Google Business Profile (GBP) optimization, the Local Pack (also called the Map Pack or 3-Pack), Google Maps, location-specific organic rankings, the broader citation ecosystem (Bing Places, Apple Business Connect, industry directories, local directories), review acquisition and management, and programmatic local landing pages.
Local SEO operates by signals partially distinct from organic SEO. While organic search ranks pages based on E-E-A-T, content quality, backlinks, and entity authority, the Local Pack ranks businesses as entities based on three factors Google publicly documents: relevance, distance, and prominence. Each factor is built from specific signals — and the signals must be installed, maintained, and monitored across multiple platforms simultaneously.
For agencies serving local clients, local SEO is foundational. A web development project for a service-area business that ignores Local SEO leaves substantial revenue on the table. A site for a multi-location business without proper local infrastructure underperforms regardless of how good the website itself is. A site with 4,715 programmatic city pages risks doorway page penalties without proper structural patterns ensuring genuine per-location value.
This framework specifies how to set up GBP correctly, how to optimize it for the relevance/distance/prominence factors, how to build and maintain citation consistency at scale, how to acquire reviews ethically and in compliance with FTC guidelines, how to structure programmatic local pages that don't violate spam policies, and how to audit existing local SEO infrastructure.
1.2 Three Operating Modes
Mode A — Install Mode: Building local SEO infrastructure from scratch or for a new client engagement. Follow Sections 2 → 14.
Mode B — Audit Mode: Evaluating existing local SEO across all surfaces. Skip to Section 11.
Mode C — Hybrid Mode: Audit then install for failing items.
1.3 How Claude Code CLI Should Consume This Document
- Read Section 2 — collect client variables, especially business model (storefront vs SAB vs hybrid)
- Read Section 3 — understand local SEO mechanics and the relevance/distance/prominence framework
- Apply Section 4 — Google Business Profile complete setup
- Apply Section 5 — citation infrastructure
- Apply Section 6 — review system
- Apply Section 7 — local schema and on-site signals
- Apply Section 8 — programmatic local pages if applicable
- Validate — Section 11
- Generate report — Section 14
1.4 Conflict Resolution Rules
| Conflict | Rule |
|---|---|
| Existing GBP with errors | Audit; correct. Do not delete and recreate — loses review history and ranking signals. |
| Multiple GBP listings for same business | Identify primary; merge duplicates via Google's merge process. |
| Existing inconsistent NAP across citations | Correct in priority order: GBP first, top citations second, long-tail citations third. |
| Existing thin programmatic pages | Either substantially enrich with location-specific content or noindex/remove. |
| Service area business currently displaying address publicly | Hide address per GBP guidelines for SABs. |
| Storefront business currently hiding address | Display address per GBP guidelines for storefront businesses. |
| Existing review acquisition violating FTC or Google guidelines | Stop the practice immediately. Audit existing reviews for compliance. |
1.5 Required Tools
- Google Business Profile Manager —
business.google.com— primary GBP management - Google Maps — for verification and visual auditing
- Whitespark — citation auditing and acquisition
- BrightLocal — local SEO platform with citation, rank, and review tracking
- Moz Local — citation management at scale
- Yext — enterprise citation management with API distribution
- Local Falcon / GeoGrid / Local Viking — proximity-based rank tracking (heatmap visualizations of local rankings)
- PlacesScout — GBP audit and competitor analysis
- GMB Everywhere / Pleper — GBP analytics
- Bing Places —
bingplaces.com— Bing's equivalent of GBP - Apple Business Connect —
businessconnect.apple.com— Apple Maps and Spotlight - Industry-specific directory access — varies by industry
2. Client Variables Intake
# ============================================
# LOCAL SEO FRAMEWORK CLIENT VARIABLES
# ============================================
# --- Business Identity (REQUIRED) ---
business_name: "" # Canonical legal/operating name
business_dba_names: [] # Doing-business-as variations
business_industry: ""
business_primary_category: "" # GBP primary category (must match exactly)
business_secondary_categories: [] # GBP secondary categories (up to 9)
# --- Business Model Classification (REQUIRED) ---
business_model_type: "" # "storefront", "service_area", "hybrid"
# storefront: customers come to the location
# service_area: business goes to customers (no customer-facing address)
# hybrid: both apply
# Critical: incorrect classification violates GBP guidelines
# --- Storefront Address (REQUIRED if storefront/hybrid) ---
storefront_address_line1: ""
storefront_address_line2: ""
storefront_city: ""
storefront_state: ""
storefront_zip: ""
storefront_country: ""
storefront_lat: 0.0
storefront_long: 0.0
# --- Service Area (REQUIRED if SAB/hybrid) ---
service_area_cities: [] # Specific cities served
service_area_zip_codes: []
service_area_radius_miles: 0
service_area_states: []
service_area_method: "" # "specific_locations" or "radius_from_address"
# --- Multi-Location (REQUIRED if applicable) ---
is_multi_location: false
location_count: 0
locations: [] # Array of full location objects
# Each location needs all GBP-required fields
# --- Contact Information (REQUIRED — must be consistent everywhere) ---
primary_phone: "" # Local number preferred over toll-free
secondary_phones: []
business_email: ""
business_website: ""
# --- Hours of Operation (REQUIRED) ---
regular_hours: {} # Per day: open/close or "closed"
special_hours: [] # Holidays and exceptions
hours_format: "" # "24_hour" or "12_hour" — pick one and use consistently
# --- Business Attributes (REQUIRED) ---
year_established: ""
business_description: "" # 750 character max for GBP
business_short_description: "" # 250 character version for citations with limits
products_offered: []
services_offered: []
service_areas_served: [] # Geographic descriptions
# --- GBP Status (REQUIRED) ---
has_gbp_account: false
gbp_verified: false
gbp_verification_method: "" # "postcard", "phone", "email", "video", "instant"
gbp_listing_complete_percentage: 0
has_owner_access: false
gbp_management_access: [] # Email addresses with access
# --- Citation Status (REQUIRED) ---
total_citations_currently: 0
top_tier_citations_complete: 0 # Out of ~15 critical citations (see Section 5.2)
nap_consistency_score: 0 # Percentage of citations with consistent NAP
known_inconsistent_citations: []
citation_acquisition_in_progress: false
# --- Review Status (REQUIRED) ---
gbp_review_count: 0
gbp_review_average_rating: 0.0
review_response_rate: 0 # Percentage of reviews responded to
recent_review_velocity: 0 # Reviews per month average
review_platforms_with_presence: [] # Google, Yelp, Facebook, BBB, industry-specific
fake_review_concern: false
review_gating_practiced: false # Critical FTC violation if true
# --- On-Site Local Signals (REQUIRED) ---
has_local_business_schema: false
schema_includes_address: false
schema_includes_geocoordinates: false
schema_includes_areaServed: false
has_dedicated_locations_page: false # Critical for multi-location
has_dedicated_per_location_pages: false
has_embedded_google_map: false
nap_visible_in_footer: false
nap_format_consistent_sitewide: false
# --- Programmatic Local Pages (REQUIRED if applicable) ---
has_programmatic_local_pages: false
programmatic_page_count: 0
programmatic_pages_have_unique_content: false # Honest answer
average_unique_words_per_programmatic_page: 0
programmatic_pages_have_local_specifics: false # Local team, local examples, local pricing, etc.
# --- Local Content (RECOMMENDED) ---
publishes_local_content: false
local_blog_posts_count: 0
participates_in_local_events: false
local_partnerships_documented: false
local_press_mentions: 0
# --- Tracking Infrastructure (REQUIRED) ---
has_local_rank_tracking: false # Local Falcon or equivalent
local_rank_tracker: ""
tracked_local_keywords: []
geo_grid_tracking_enabled: false # Proximity-based tracking
gbp_insights_monitored: false
ga4_configured_for_local_tracking: false
3. What Local SEO Is
Local SEO is the practice of optimizing for queries with local intent — queries where the searcher is looking for a business, service, or information specific to a geographic location. Local intent is signaled in queries through:
Explicit modifiers — "near me," city names, neighborhood names, ZIP codes, "in [location]" Implicit local intent — Google identifies queries where users typically want local results even without explicit local modifiers (e.g., "plumber" almost always carries local intent; "history of plumbing" doesn't) Searcher location — Even queries without explicit local language return local results when Google detects the searcher is in a specific location
Local search results appear in three primary surfaces:
1. The Local Pack (3-Pack) — Three businesses displayed at the top of organic results with map, rating, hours, and "Directions" / "Website" / "Call" actions. The Local Pack appears for the vast majority of local-intent queries.
2. Google Maps results — When users search directly in Google Maps or click "More places" from a Local Pack, they see expanded results sorted by relevance, distance, and prominence with map visualization.
3. Localized organic results — Standard blue-link organic results below the Local Pack, ranked partly by location-specific signals.
The Local Pack and Maps share a ranking system distinct from organic search. Google publicly documents three factors:
Relevance — How well the business matches the searcher's query. Driven by GBP category selection, business name, business description, services list, products list, posts, attributes, photos, and on-site signals when the website is linked.
Distance — How close the business is to the searcher's current location or specified search location. Distance matters more for "near me" queries and less for queries with broader intent. Distance is the only ranking factor businesses cannot directly improve — you can't move your business location for SEO. (Some businesses run "rented address" schemes attempting to manipulate this, which violates GBP guidelines and is detected/penalized.)
Prominence — How well-known and trusted the business is. Driven by review count, review quality, review velocity, citation count, citation consistency, backlinks, mentions, and entity authority signals overlapping with Knowledge Graph (see framework-knowledgegraph.md). Prominence is the most controllable factor and where most local SEO work happens.
The 2024-2026 evolution of local search has been significant:
AI Overviews integration with local results — When users ask AI Overviews local questions, results often draw from GBP data, citations, and review platforms. The frameworks for AI citation (framework-aicitations.md) interact with local SEO directly.
GBP feature expansion — Google Posts, Q&A, products, services, attributes, messaging, booking integration have all expanded as GBP signals.
Review velocity weighting increased — Sites with consistent fresh review acquisition outperform sites with high but stale review counts.
Programmatic page enforcement strengthened — The March 2024 spam policy expansion (see framework-spampolicies.md) addresses doorway pages and scaled content abuse, both of which apply to thin programmatic local pages.
Local pack volatility increased — Local rankings shift more frequently as Google's local algorithm updates more often than organic core updates.
This framework specifies how to build local SEO infrastructure that performs across all surfaces (Local Pack, Maps, organic, AI engines) and resists penalty risk in 2026.
4. Google Business Profile Complete Setup
GBP is the foundation. Without proper GBP, no other local SEO work matters.
4.1 Account Creation and Claim
4.1.1 If business has no existing GBP:
- Go to
business.google.com - Sign in with the Google account that should own the business (use a business email, not personal)
- Click "Add your business to Google"
- Enter exact business name (must match what you'll use on website and citations)
- Select primary category from Google's list (search carefully — picking wrong category at this stage is hard to fully undo)
- Choose business model:
- Storefront: "Yes, I have a location customers can visit"
- Service area business: "No, my business doesn't have a location customers can visit"
- Hybrid: Storefront with service area added later
- For storefront: enter exact address; mark on map precisely
- For SAB: enter business address (private, not shown publicly) plus service areas
- Add phone number (local number preferred over toll-free)
- Add website URL
4.1.2 If business has existing GBP claimed by someone else:
- Search for the business on Google Maps
- Click "Claim this business"
- Verify ownership through Google's process
- If current owner doesn't respond within 7 days, ownership transfers
- If they refuse legitimately (former employee, incorrect claim), escalate via Google Business support
4.1.3 If business has existing GBP not claimed:
- Search for the business
- Click "Claim this business"
- Verify through Google's chosen method (postcard, phone, email, video — varies by category and risk)
- Complete verification (postcard takes 5-14 days; video takes hours; phone/email instant)
4.2 Verification
Verification methods Google offers (varies by business type and category):
- Postcard — Most common; takes 5-14 days; Google mails physical postcard with code
- Phone — Available for some categories; instant code via voice or SMS
- Email — Available for some businesses with verifiable business email matching domain
- Video — Live video verification of business location and identity (relatively new)
- Instant — For businesses already verified through Google Search Console
After verification:
- Listing status changes to "Verified"
- Full feature access unlocked
- Listing appears in search and Maps results
- Owner can respond to reviews, post updates, etc.
Without verification, GBP listings have severely limited functionality and don't appear in local results.
4.3 Profile Completeness
Google explicitly states "Complete your profile" as a relevance signal. Every available field should be filled.
4.3.1 Required fields:
- Business name — Exact match to website and citations (no keyword stuffing — see Section 4.4 violation list)
- Category — primary — Most specific category that accurately describes the business (Section 4.4)
- Category — secondary — Up to 9 additional accurate categories
- Address — Exact, formatted per Google's geocoding (Section 4.5)
- Service area — For SABs, list specific cities/regions served (Section 4.6)
- Phone — Local area code preferred for relevance; toll-free acceptable as secondary
- Website — Use the canonical URL (with or without www, with proper protocol)
- Hours — Regular weekly hours (Section 4.7)
- Special hours — Holidays, exceptions, seasonal changes
- Business description — 750 characters max, well-crafted (Section 4.8)
- Opening date — Year business opened
- Photos — Logo, cover, interior, exterior, team, products (Section 4.9)
- Services — Specific services offered with descriptions
- Products — If applicable
- Attributes — Available attributes vary by category (Section 4.10)
- Q&A — Owner-posted questions and answers preempting common customer questions
4.3.2 Profile completeness scoring:
GBP doesn't expose a public completeness score, but track internally:
gbp_completeness_audit:
business_name: filled
primary_category: selected
secondary_categories_count: 5 # Out of 9 max
address_or_service_area: configured
phone: filled
website: filled
hours: filled
special_hours: filled
description: filled
opening_date: filled
logo: uploaded
cover_photo: uploaded
interior_photos_count: 12
exterior_photos_count: 8
team_photos_count: 5
product_photos_count: 0 # If applicable
services_listed: 14
services_have_descriptions: true
products_listed: 0 # If applicable
attributes_completed: 18
qa_seeded_count: 8 # Owner-posted Q&As
posts_in_last_30_days: 4
total_completeness_estimate: 92 # Percentage
Aim for 95%+ completeness. The 5% gap typically comes from optional fields that don't apply or features unavailable in the business category.
4.4 Business Name — Critical Compliance
The single most-violated GBP guideline: keyword-stuffing the business name.
Acceptable name format: Exact business name as it appears on signage, legal documents, marketing materials, and the website.
Examples (acceptable):
- "Smith & Associates Law"
- "Mountain View Plumbing"
- "Cassville Auto Repair"
Violation patterns (frequently seen, frequently penalized):
- "Smith & Associates Law - Best Lawyers in Mountain View"
- "Mountain View Plumbing | 24/7 Emergency Service Available"
- "Cassville Auto Repair: Brakes, Engine, Transmission, Oil Change"
Why violation matters:
- Google's GBP guidelines explicitly prohibit it
- Competitors can report violations through "Suggest an edit"
- Google removes violating modifiers automatically (sometimes silently)
- Suspicious patterns can trigger broader account review or suspension
If business has historically used keyword-stuffed name: Update the business name in GBP to compliant version. Update website, social profiles, all citations to match. Brand may take time to adapt but compliance is non-negotiable.
Legitimate exceptions:
- Descriptive identifiers that are part of the actual business name (e.g., "ABC Roofing & Siding" if siding is genuinely in the legal name)
- Geographic descriptors that are part of the legal name (e.g., "First Bank of Tennessee")
- Formal business types (e.g., "Smith Law LLC", "Jones Medical PA")
When in doubt: does the business actually display this name on its physical signage, business cards, and contracts? If yes, acceptable. If no, violation.
4.5 Categories — Primary and Secondary
Categories drive the relevance factor heavily. Wrong primary category means wrong queries trigger your listing.
Primary category selection process:
- Search Google's category list for terms matching the business
- Identify all categories that could apply
- Choose the most specific category that accurately describes the business
- The primary category should be the single most descriptive of what the business primarily does
Examples:
- A bakery that primarily sells wedding cakes → Primary: "Wedding bakery" (more specific than "Bakery")
- A general dentist who also does cosmetic work → Primary: "Dentist" (most descriptive); Secondary: "Cosmetic dentist"
- A plumbing company that also does HVAC → Primary: "Plumber"; Secondary: "HVAC contractor"
Secondary categories: Add up to 9 additional categories that genuinely apply. Don't add categories where the business has minimal capability — Google may show you for those queries and disappoint searchers.
Category research approach:
- Search competitors in your area on Google Maps
- Click each competitor's listing
- Note their primary category (visible in the listing)
- Cross-reference with what your business actually offers
- Select primary based on what matches and is most descriptive
Category change implications: Changing primary category mid-stream can affect rankings significantly. Consider carefully before changing. Changes that align category to actual business focus typically help; changes that broaden category to capture more queries typically backfire (relevance dilution).
4.6 Service Area Configuration (for SABs and Hybrid)
Service area businesses (SABs) — businesses that serve customers at the customer's location rather than the business's — have specific GBP requirements.
Storefront vs SAB distinction:
- Storefront: Customers come to your location (restaurant, retail store, dental office, salon)
- SAB: You go to customers (plumber, electrician, mobile dog grooming, residential cleaner)
- Hybrid: Both apply (e.g., a plumbing company with a storefront for parts that also does service calls)
For pure SABs:
- Hide your address publicly (mandatory per GBP guidelines)
- Use "Specific cities/regions" or "Radius around an address" to define service area
- List specific cities/towns/regions served (more accurate than radius)
- Don't claim service in cities where you don't actually serve regularly
- Service area covers where you'll travel to customers, not where you'd advertise
For storefront businesses:
- Display address publicly
- Don't add service area unless you legitimately offer service-at-customer-location
For hybrid businesses:
- Display address (for storefront customers)
- Add service area for the service portion
- Be honest about which categories apply to which model
Service area best practices:
- List the specific cities served, not just county or state
- Include the city your address is in
- Include 5-15 surrounding cities you actually serve
- Don't list cities 2 hours away you've served once
- Update as service area expands or contracts
Example for ThatComputerDude in Cassville, MO:
service_areas:
- "Cassville, MO"
- "Monett, MO"
- "Aurora, MO"
- "Mt. Vernon, MO"
- "Eagle Rock, MO"
- "Shell Knob, MO"
- "Washburn, MO"
- "Exeter, MO"
- "Purdy, MO"
- "Stella, MO"
# And so on for actually-served areas
4.7 Hours of Operation
Hours signal whether the business is currently open — a major factor for "near me" queries.
Best practices:
- Set regular hours accurately
- Update for any temporary changes (vacation, holidays, weather closures)
- Add special hours for every observed holiday
- "24 hours" only if literally 24 hours
- "By appointment only" via attribute, not in business name
- Closed days should show "Closed" not be empty
Special hours — Add explicit special hours for:
- Federal holidays observed (or not observed)
- Religious holidays observed
- Local events affecting hours
- Annual closures (vacation, maintenance)
- Seasonal changes if applicable
Failure to set special hours during holidays causes the listing to show as "open" when actually closed, generating user complaints and rating impact.
4.8 Business Description
The 750-character business description is one of the few editorial sections of GBP. Use it well.
Structure:
[Sentence 1: What the business is and primary service.]
[Sentence 2: Years of experience or unique value proposition.]
[Sentence 3: Service area or specific specializations.]
[Sentence 4: Differentiation from competitors.]
[Sentence 5: Call to action or next step.]
Best practices:
- Lead with what the business does
- Include primary service keywords naturally
- Mention service area
- Include the year established or experience
- Avoid keyword stuffing
- Avoid promotional offers (Google removes them)
- Avoid links (description doesn't support them)
- Make it human-readable, not just SEO-optimized
Example for ThatDeveloperGuy:
ThatDeveloperGuy is a Service-Disabled Veteran-Owned web development and search engine optimization firm founded in 2020. Based in Cassville, Missouri, we serve small businesses across the United States with custom website development, multi-tier engine optimization, hosting and maintenance, and computer repair. Founded by Joseph Anady (BA Computer Engineering, MA Cybersecurity), our SDVOSB certification makes us eligible for federal contracting set-aside programs. We currently host 130+ production client sites on our self-managed Linux infrastructure. Contact us at 505-512-3662 or joseph.w.anady@icloud.com to discuss your project.
That's 670 characters with substantive information. Most businesses produce far weaker descriptions.
4.9 Photos
Photos drive engagement, click-through rate, and (likely) ranking. Listings with comprehensive photos outperform listings without.
Required photo types:
- Logo — Square format, 250x250 minimum, transparent background preferred
- Cover photo — Landscape format, 1080x608 ideal, represents the business
- Profile photo — Optional but recommended
- Exterior photos — Multiple angles of the building/storefront
- Interior photos — What customers see when they enter
- Team photos — People build trust
- Product photos — If applicable
- Service photos — In-action photos of services being performed
- Common areas — Lobby, waiting rooms, parking
- At-work photos — For SABs especially, show services in action
Photo best practices:
- High resolution but reasonable file size (200KB-2MB optimal)
- Real photos, not stock
- Recent photos (update annually)
- Diverse angles
- Good lighting
- People (with permission)
- Consistent visual quality
Photo upload cadence: Add 2-5 new photos monthly. Active listings outperform stagnant listings.
Photo geo-tagging: Photos taken with smartphone GPS contain location metadata. Some local SEO practitioners suggest this helps. Whether it directly affects ranking is debated but it can't hurt.
4.10 Attributes
GBP attributes are category-specific properties businesses can claim:
- Wheelchair accessible
- Wi-Fi available
- Family-friendly
- Veteran-owned
- LGBTQ+ owned
- Women-owned
- Black-owned
- Online appointments available
- Online estimates available
- Identifies as women-owned
- Free Wi-Fi
- Outdoor seating
- Parking available
- Specific service options (curbside pickup, in-store pickup, delivery, dine-in)
Implementation:
- Add every attribute that genuinely applies
- Ownership/identity attributes (veteran-owned, LGBTQ+ owned, etc.) are publicly visible — only claim if true and you want public recognition
- Service attributes affect which queries trigger your listing
- Update as attributes change (new accessibility additions, new service options)
For ThatDeveloperGuy specifically: Veteran-owned attribute is critical given SDVOSB status — claim it.
4.11 Services and Products
GBP allows listing specific services and products with descriptions.
Services structure:
service:
name: "Custom Website Development"
category: "Web Development"
price: "" # Optional; varies by service
description: "Full-service custom website development for small businesses including design, development, content, hosting setup, and search optimization. Fixed-price packages from $597. SDVOSB-certified."
Add every service the business offers as a discrete service entry. Each service has its own description (300 character limit) — write it specifically.
Products structure (for retail):
product:
name: "Product name"
category: "Product category"
price: ""
description: ""
photo: ""
Products help retail businesses appear for product-specific queries.
4.12 Posts
Google Posts are short updates that appear within the GBP listing — like a mini-blog feed inside the listing.
Post types:
- What's new — General update or news
- Event — Specific dated event
- Offer — Promotional offer with start/end dates
- Product — Featured product
Post structure:
- Photo or video
- 1500 character text
- Optional CTA button (Learn more, Sign up, Buy, etc.)
- Optional link
Posting cadence: Weekly minimum, twice-weekly ideal. Stale posts signal stale listings.
Post content ideas:
- Recent project completions
- New service offerings
- Upcoming availability
- Educational content related to your services
- Recent client testimonials (with permission)
- Community involvement
- Seasonal content
- Holiday hours reminders
Post benefits:
- Engagement signal (active listing ranks better)
- Direct visibility of business activity
- Click-through to website
- Featured posts can appear prominently in search results
4.13 Q&A Seeding
The Q&A section of GBP allows users to ask questions publicly. Owners (and other users) can answer.
Owner Q&A strategy:
- Identify common customer questions (from sales calls, contact form submissions, FAQ research)
- Post questions yourself (allowed and encouraged)
- Answer them with helpful, complete responses
- Monitor for new user-submitted questions
- Respond to user questions within 24 hours
Example Q&A for ThatDeveloperGuy:
Q: Do you offer hosting services?
A: Yes, we provide self-managed Linux hosting on our infrastructure currently supporting 130+ client sites. Hosting is included with our website packages and available standalone. Contact us at 505-512-3662 for current pricing.
Q: Are you SDVOSB certified?
A: Yes, ThatDeveloperGuy is a Service-Disabled Veteran-Owned Small Business. Our SDVOSB certification makes us eligible for federal contracting set-aside programs and qualifying for SDVOSB-preferred procurement.
Q: What does a custom website cost?
A: Our website packages start at $597 for foundation builds and scale to $2,997+ for full-featured sites with booking integration, custom features, and comprehensive content. We provide fixed-price quotes after understanding your project scope.
Q: Where are you located?
A: We're based in Cassville, Missouri (463 State Highway 76). We work with clients across the United States remotely, with most communication via phone, video, and email.
Seed 8-15 owner Q&As covering the most common questions. This helps:
- Answer customer questions before they have to ask
- Surface relevant information in search results
- Demonstrate active listing management
- Provide additional content for relevance signals
4.14 Messaging
GBP messaging allows customers to text the business directly through the listing.
Implementation:
- Enable messaging in GBP settings
- Set response expectation (target: respond within 24 hours)
- Configure auto-reply if needed
- Monitor message inbox daily
Considerations:
- Messages create a customer service obligation
- Slow response damages listing performance
- Alternative: don't enable if you can't respond promptly
4.15 Booking Integration
For service businesses, GBP integrates with various booking systems (Square Appointments, Vagaro, Squire, etc.). When integrated, customers can book directly from the GBP listing.
Implementation:
- If business uses supported booking system, integrate
- Test the booking flow from a customer perspective
- Ensure availability stays accurate
- Monitor for booking system disconnections
5. Citation Infrastructure
Citations are mentions of the business's NAP (Name, Address, Phone) on other websites. Citation count, quality, and consistency are major prominence signals.
5.1 NAP Consistency Foundation
Before building citations, establish canonical NAP that will be used everywhere:
canonical_nap:
business_name: "ThatDeveloperGuy"
address_line_1: "463 State Highway 76"
address_line_2: ""
city: "Cassville"
state: "MO"
state_full: "Missouri"
zip: "65625"
country: "United States"
phone: "(505) 512-3662"
phone_alternate_format_1: "505-512-3662"
phone_alternate_format_2: "5055123662" # Don't use, but document for cleaning
website: "https://thatdeveloperguy.com"
Critical consistency rules:
- Business name: Exact same spelling, capitalization, punctuation everywhere
- Address: Same format everywhere — "St" vs "Street", "Hwy" vs "Highway" (pick one)
- Phone: Same format everywhere — "(505) 512-3662" everywhere or "505-512-3662" everywhere (pick one)
- Website: Same protocol and www handling —
https://always,https://www.never if canonical is non-www
Inconsistency damage: Each variation (e.g., "ThatDeveloperGuy" vs "That Developer Guy") signals possible duplicate businesses to Google, weakening prominence consolidation.
5.2 Top-Tier Citations (Critical)
These are the foundational citations every local business needs. Listed in priority order:
1. Google Business Profile — Already covered in Section 4
2. Bing Places for Business — bingplaces.com — Bing's GBP equivalent. Also feeds Microsoft Copilot.
3. Apple Business Connect — businessconnect.apple.com — Apple Maps and Spotlight
4. Yelp — biz.yelp.com — Major review platform with local visibility
5. Facebook Business Page — facebook.com/business/pages — Social citation
6. Better Business Bureau — bbb.org — Trust signal
7. Yellow Pages — yellowpages.com — Traditional directory still active
8. Foursquare for Business — business.foursquare.com — Feeds many other directories
9. LinkedIn Company Page — linkedin.com/help/linkedin/answer/710 — Professional citation
10. Manta — manta.com — Small business directory
11. MerchantCircle — merchantcircle.com
12. Hotfrog — hotfrog.com
13. CitySquares — citysquares.com
14. Brownbook — brownbook.net
15. Tupalo — tupalo.com
For each, claim the listing, fully optimize with consistent NAP, complete description, photos where supported, and category selection.
5.3 Industry-Specific Citations
Beyond top-tier, every industry has trusted directories Google weights heavily.
For attorneys:
- Avvo, Justia, FindLaw, Martindale-Hubbell, Lawyers.com, state bar directories
For doctors:
- Healthgrades, Vitals, RateMDs, WebMD Doctors, Zocdoc, state medical board
For restaurants:
- TripAdvisor, OpenTable, Zomato, Restaurant.com
For contractors:
- HomeAdvisor, Angi, Houzz, Thumbtack, Porch, BuildZoom
For accountants:
- AICPA, state CPA society, Yelp, Accounting.com
For SDVOSB-specific (ThatDeveloperGuy):
- SAM.gov (System for Award Management) — federal contracting registration
- SBA.gov — Small Business Administration profile
- National Veteran-Owned Business Association (NaVOBA) directory
- VetBiz.gov verification
For computer repair:
- Yelp, Angi, Thumbtack, Best Pick Reports
Identify the 5-15 industry-specific directories most relevant to your business and ensure presence on each.
5.4 Local Citations
City-specific and regional directories matter for local prominence:
- Local Chamber of Commerce — pay membership, get listing
- Local newspaper directories — many newspapers maintain business directories
- Local business associations
- Local government business registries
- Community-specific directories — varies by city
- Regional business publications
For ThatDeveloperGuy in Cassville, MO:
- Cassville Chamber of Commerce
- Barry County Chamber
- Missouri SDVOSB directory
- Local civic association directories
- Cassville Democrat (local newspaper) business directory
5.5 Citation Audit Process
For existing businesses with citation history:
5.5.1 Discovery:
- Use Whitespark, BrightLocal, or Moz Local to find existing citations
- Manual search:
"{{business_name}}" "{{phone}}"in Google - Manual search:
"{{business_name}}" "{{address}}"in Google - Document every citation found
5.5.2 Audit:
For each citation, verify:
- Business name exact match
- Address exact match
- Phone exact match
- Website exact match
- Category accurate
- Photos present where supported
5.5.3 Cleanup:
For each inconsistent citation:
- Claim the listing if not claimed
- Update to canonical NAP
- Document update date
- Verify update propagated
For duplicate listings:
- Report duplicates through platform's reporting mechanism
- Request consolidation where possible
- Track resolution
5.5.4 Aggregator approach (faster but expensive):
Services like Yext, Moz Local, or BrightLocal push to multiple directories simultaneously through APIs. Pros:
- Faster for many citations
- Automatic propagation of updates
- Single dashboard
Cons:
- Subscription cost
- Some directories may not accept aggregator updates
- May not catch all needed directories
Decision framework:
- Single business with 50+ existing citations: aggregator probably worth it
- New business needing fresh citations: manual building first 15-20, then aggregator for breadth
- Multi-location business: aggregator strongly recommended
5.6 Data Aggregator Submissions
Several platforms are foundational data aggregators that feed many other directories:
- Data Axle (formerly Infogroup)
- Localeze / Neustar
- Foursquare
- Factual
Submitting accurate data to these aggregators propagates to dozens of downstream directories. Many aggregator submissions are paid services or only accessible through citation management platforms.
5.7 Citation Maintenance
Citation building is not one-time:
Monthly:
- Check 5-10 citations for unauthorized changes
- Verify any new directory additions
Quarterly:
- Comprehensive citation audit
- NAP consistency check across full citation profile
- Update photos and descriptions on platforms supporting them
- Address any new duplicates
Annually:
- Full citation profile review
- Add new directories that have emerged
- Remove or correct outdated listings
- Strategic decision: which directories matter for current business model?
5.8 Common Citation Mistakes
- Inconsistent name across citations — "ABC Roofing" vs "ABC Roofing LLC" vs "ABC Roofing Co"
- Inconsistent phone format — variations across directories
- Inconsistent address abbreviations — "St" vs "Street", "Ave" vs "Avenue"
- www vs non-www — pick one and use everywhere
- Old phone or address persisting in unclaimed citations
- Wrong category on industry directories
- Auto-generated descriptions instead of curated ones
- Missing photos on platforms supporting them
6. Review System
Reviews are arguably the strongest prominence signal and a major direct conversion factor.
6.1 Review Acquisition Strategy
Foundation principles:
- Ask everyone (with discrimination by experience) — but you need a system
- Time the ask appropriately — at peak satisfaction
- Make the path easy — direct link to review platform
- Don't gate or manipulate — FTC violation territory
- Don't pay for reviews — FTC violation territory
- Don't review-swap with competitors — FTC violation territory
6.1.1 The legitimate ask:
Acceptable: "If you've had a positive experience, would you mind sharing it on Google?"
Acceptable: "We'd appreciate honest feedback about your experience on our Google review page."
Not acceptable (FTC and Google guideline violations):
- "Leave us a 5-star review and we'll give you 10% off your next service"
- "Only customers who give 5-star reviews qualify for our loyalty program"
- "Filter through our happy customer survey first; we'll send the link to those satisfied"
- "We'll waive the service fee for a positive review"
The FTC has been actively enforcing fake review and incentivized review violations through 2024-2026. Penalties include large fines and consent decrees. Don't.
6.1.2 Review request mechanisms:
Email-based:
- Send 1-3 days after service completion
- Include direct link to Google review page (find via your GBP)
- Personalize with customer name and service performed
- Don't use mass-blast generic templates
SMS-based (with consent):
- Same timing as email
- Direct link to review
- Brief, warm message
In-person:
- Hand customer a card with QR code linking to review page
- Verbal request at peak satisfaction moment
- Train staff on appropriate framing
Receipt/invoice integration:
- Print direct review link or QR code on receipts
- Include in digital invoices
- Reference at completion
Tools that automate review acquisition:
- BirdEye, Podium, NiceJob, GatherUp, Reputation.com
- These integrate with point of sale or CRM, send post-service review requests automatically
- Pricing varies $50-$500/month
6.1.3 Review request timing:
- B2B services: 1-2 weeks after project completion
- Restaurants: Day of or day after dining
- Repair services: 1-3 days after work completed
- Healthcare: 1-2 days after appointment
- Retail: 3-7 days after purchase (gives time to use product)
- Professional services: After major milestone (case resolution, return signed, etc.)
6.2 Review Gating — Critical FTC Issue
Review gating is the practice of pre-screening customers before deciding who to ask for public reviews. Common patterns:
- "Rate your experience 1-5 stars" → only customers selecting 4-5 are then asked for Google review; lower ratings directed to private feedback
- Survey before review request that filters happy customers from unhappy ones
- "How would you rate us?" → branching based on response
Why it's a violation:
- Google's review guidelines explicitly prohibit it
- FTC's October 2024 final rule on fake reviews makes it explicitly illegal
- Customers and competitors increasingly aware and reporting it
- Review platforms detect patterns of artificially elevated ratings
FTC enforcement (October 2024 rule):
The FTC's "Trade Regulation Rule on the Use of Consumer Reviews and Testimonials" (effective October 2024) specifically prohibits:
- Buying or incentivizing reviews
- Deceptively presenting fake reviews as genuine
- Suppressing or hiding negative reviews
- Insider reviews without disclosure
- Review hijacking
- Deceptive review websites
Penalties include civil penalties up to $51,744 per violation (per review).
Compliance posture:
- All customers asked for reviews on the same terms
- Lower-rated reviews accepted publicly
- Address negative reviews professionally
- Don't use any "filter then route" mechanism
6.3 Review Response Strategy
Responding to reviews — both positive and negative — is a ranking signal and customer service obligation.
Response rate targets:
- 100% of negative reviews (1-3 stars)
- 100% of detailed positive reviews
- 50%+ of brief positive reviews
- Within 24 hours for negative
- Within 7 days for positive
6.3.1 Positive review response template:
Thank you, {{first_name}}! We really appreciate you taking the time to share your experience with {{specific_service_or_aspect}}. {{Personalized note about what they mentioned}}. We look forward to working with you again.
— {{your_name}}, {{business_name}}
Example for ThatDeveloperGuy:
Thank you, Eugene! Really appreciate you sharing your experience working with us on the AllRideLimo website. The booking integration was a fun challenge, and we're glad it's working well for your customers. Let us know whenever you're ready to expand to additional features.
— Joseph, ThatDeveloperGuy
6.3.2 Negative review response template:
{{Name}}, we appreciate you sharing this feedback and we're sorry your experience didn't meet expectations. {{Acknowledge specific concern raised}}. {{Specific action taken or offered}}. We'd like to make this right — please reach out directly at {{contact_method}} so we can address this further.
— {{your_name}}, {{business_name}}
Negative review response principles:
- Acknowledge the customer's experience without being defensive
- Don't argue facts in public response (even if you disagree)
- Take specific accountability for what's reasonable
- Offer to resolve offline
- Don't apologize for things that didn't happen
- Don't expose customer details
- Don't accuse customer of lying or being unreasonable
- Maintain professional tone regardless of provocation
When to legitimately challenge reviews:
If a review is genuinely fake (customer never did business with you), the right response is:
- Document evidence
- Flag the review through Google's review reporting mechanism
- Wait for Google's investigation
- Don't respond publicly until resolved (or respond carefully without accusations)
If review violates Google's guidelines (profanity, spam, conflict of interest, off-topic), flag through reporting mechanism.
6.4 Review Velocity Management
Review velocity — the rate at which reviews accumulate — is a prominence signal.
Healthy velocity patterns:
- Consistent monthly review acquisition matching business volume
- Mix of review platforms (not all on one)
- Variety in review length and content
- Reviews from genuinely different customers
Suspicious velocity patterns (Google detects):
- 0 reviews for 6 months, then 50 reviews in 2 weeks
- All reviews on same day
- All reviews from accounts with no history
- All reviews very short and similar in tone
- Reviews from accounts in geographic locations inconsistent with business location
Implication: Build review velocity gradually and consistently. Don't try to "catch up" all at once after neglecting reviews.
6.5 Multi-Platform Review Strategy
Different platforms matter for different audiences:
- Google Business Profile: Primary platform; affects local pack ranking
- Yelp: Restaurant and service-heavy; some industries weight heavily
- Facebook: Social discovery; recommendations carry weight
- BBB: Trust-conscious customers
- Industry-specific (Healthgrades, Avvo, Houzz, etc.): Industry-specific authority
Strategy:
- Build Google reviews as primary focus
- Develop secondary platform reviews based on customer base
- Don't ignore industry-specific platforms — they often appear in Google search results for branded queries
- Maintain consistent rating across platforms (large gaps signal manipulation on one platform)
6.6 Review Schema
Mark up reviews on your website with appropriate schema:
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "LocalBusiness",
"@id": "https://{{domain}}/#localbusiness",
"name": "{{business_name}}",
"aggregateRating": {
"@type": "AggregateRating",
"ratingValue": "{{average_rating}}",
"reviewCount": "{{total_review_count}}",
"bestRating": "5",
"worstRating": "1"
},
"review": [
{
"@type": "Review",
"author": {"@type": "Person", "name": "{{reviewer_name}}"},
"datePublished": "{{review_date_iso}}",
"reviewBody": "{{review_text}}",
"reviewRating": {
"@type": "Rating",
"ratingValue": "{{rating}}",
"bestRating": "5",
"worstRating": "1"
}
}
]
}
</script>
Critical compliance: Review schema markup must reflect actual reviews from genuine customers. Fabricated review schema is a manual action trigger.
7. On-Site Local Signals
Beyond GBP and citations, the website itself sends local signals.
7.1 LocalBusiness Schema
The foundation of on-site local signals:
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "LocalBusiness",
"@id": "https://{{domain}}/#localbusiness",
"name": "{{business_name}}",
"alternateName": "{{dba_or_alternate_names}}",
"description": "{{full_business_description}}",
"url": "{{primary_domain_url}}",
"telephone": "{{primary_phone}}",
"email": "{{primary_email}}",
"address": {
"@type": "PostalAddress",
"streetAddress": "{{address_line_1}}",
"addressLocality": "{{city}}",
"addressRegion": "{{state_abbreviation}}",
"postalCode": "{{zip}}",
"addressCountry": "{{country_code}}"
},
"geo": {
"@type": "GeoCoordinates",
"latitude": "{{latitude}}",
"longitude": "{{longitude}}"
},
"openingHoursSpecification": [
{
"@type": "OpeningHoursSpecification",
"dayOfWeek": ["Monday", "Tuesday", "Wednesday", "Thursday", "Friday"],
"opens": "09:00",
"closes": "17:00"
},
{
"@type": "OpeningHoursSpecification",
"dayOfWeek": "Saturday",
"opens": "10:00",
"closes": "14:00"
}
],
"areaServed": [
{"@type": "City", "name": "Cassville", "@id": "https://www.wikidata.org/wiki/Q1098921"},
{"@type": "City", "name": "Monett"},
{"@type": "City", "name": "Aurora"}
],
"priceRange": "$$",
"image": [
"{{logo_url}}",
"{{cover_photo_url}}"
],
"logo": "{{logo_url}}",
"sameAs": [
"{{gbp_url}}",
"{{facebook_url}}",
"{{x_url}}",
"{{linkedin_url}}",
"{{wikidata_url}}"
],
"founder": {"@id": "https://{{domain}}/about/{{founder_slug}}/#person"},
"foundingDate": "{{year_founded}}",
"founder": {
"@type": "Person",
"name": "{{founder_name}}"
}
}
</script>
Use the most specific subtype of LocalBusiness available:
LegalServicefor law firmsMedicalBusiness(or specific subtypes) for healthcareRestaurantfor restaurantsPlumberfor plumbingWebDesignfor web development
Schema.org's full hierarchy of LocalBusiness subtypes provides hundreds of specific types. Use the most specific that applies.
7.2 SAB-Specific Schema Considerations
For service area businesses without public addresses, omit the address property's streetAddress (or use a private address) but include areaServed:
{
"@type": "LocalBusiness",
"name": "{{business_name}}",
"areaServed": [
{"@type": "City", "name": "Cassville"},
{"@type": "City", "name": "Monett"}
],
"address": {
"@type": "PostalAddress",
"addressLocality": "{{primary_city}}",
"addressRegion": "{{state}}",
"addressCountry": "{{country}}"
}
}
7.3 Multi-Location Schema
For businesses with multiple locations, each location gets its own schema entry, ideally on its own dedicated page:
<!-- On location-specific page like /locations/cassville/ -->
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "LocalBusiness",
"@id": "https://{{domain}}/locations/cassville/#localbusiness",
"name": "{{business_name}} — Cassville",
"branchOf": {"@id": "https://{{domain}}/#organization"},
"address": {
"@type": "PostalAddress",
"streetAddress": "{{cassville_address}}",
"addressLocality": "Cassville",
"addressRegion": "MO",
"postalCode": "65625",
"addressCountry": "US"
},
"telephone": "{{cassville_phone}}",
"geo": {
"@type": "GeoCoordinates",
"latitude": 36.6770,
"longitude": -93.8730
}
}
</script>
7.4 NAP in Footer
Display NAP consistently in the website footer on every page:
<footer class="site-footer">
<div class="business-info">
<p class="business-name">{{Business Name}}</p>
<p class="business-address">
<span class="street">{{Street Address}}</span><br>
<span class="city">{{City}}</span>,
<span class="state">{{State}}</span>
<span class="zip">{{Zip}}</span>
</p>
<p class="business-phone">
<a href="tel:{{phone_link_format}}">{{Phone}}</a>
</p>
<p class="business-hours">
Open {{Days}}, {{Hours}}
</p>
</div>
</footer>
Use HTML5 semantic markup. The footer NAP appears on every page reinforcing local signals throughout the site.
7.5 Embedded Google Map
Embed an actual Google Map showing business location:
<iframe
src="https://www.google.com/maps/embed?pb=!1m18!{{embed_code}}"
width="600"
height="450"
style="border:0;"
allowfullscreen=""
loading="lazy"
referrerpolicy="no-referrer-when-downgrade"
title="Map showing location of {{business_name}}">
</iframe>
The embedded map:
- Verifies for users that the business has a real location
- Provides direct directions functionality
- Is a known local SEO signal (debated impact but standard practice)
7.6 Locations Page (Multi-Location)
For multi-location businesses, build a dedicated /locations/ page listing all locations:
<main class="locations-page">
<h1>{{Business Name}} Locations</h1>
<p>{{Business name}} serves customers from {{N}} locations across {{regions}}. Find the location nearest you below.</p>
<ul class="location-list">
<li>
<h2><a href="/locations/cassville/">Cassville, MO</a></h2>
<address>
463 State Highway 76, Cassville, MO 65625
</address>
<p>Phone: <a href="tel:5055123662">(505) 512-3662</a></p>
<p>Hours: Mon-Fri 9-5, Sat 10-2</p>
<p><a href="/locations/cassville/">View location details →</a></p>
</li>
{{ADDITIONAL_LOCATIONS}}
</ul>
</main>
Each location links to a dedicated location page (Section 7.7).
7.7 Per-Location Pages
Dedicated pages per location for multi-location businesses. Each location page should have:
- Address
- Phone (location-specific if different)
- Hours
- Embedded Google Map
- Photos of that specific location
- Team members at that location
- Services offered at that location (may differ across locations)
- Reviews specific to that location
- Local content (community involvement, location-specific news)
- Local schema with branchOf relationship
Critical: Each location page must have substantive unique content. Templated pages with just location swap are doorway pages (see Section 8 and framework-spampolicies.md).
7.8 Local Content Strategy
Beyond pages about the business itself, publish content demonstrating local engagement:
- Local news commentary — Industry topics with local angle
- Community involvement — Sponsorships, charitable work, local events
- Local case studies — Projects with local clients (with permission)
- Local partnerships — Other businesses you work with
- Area guides — If genuinely useful to your audience
- Local industry analysis — How national trends affect your local market
Frequency: Quarterly minimum, monthly ideal for active local SEO.
Quality bar: Same as any content — must add genuine value, not just keyword-target a city.
8. Programmatic Local Pages
Programmatic local pages — pages generated systematically for many city/service combinations — are powerful when done right and dangerous when done wrong.
8.1 The Risk
ThatDeveloperGuy currently has 4,715 programmatic city pages across AR, CO, FL, KS, MO, and OK. This is exactly the territory where:
- Done well, generates substantial local search traffic across many queries
- Done poorly, triggers doorway page penalty (see
framework-spampolicies.mdSection 4.2)
The line between legitimate and doorway is substantive unique value per page. Templated content with only city name swapped is doorway. Content with genuine location-specific value is legitimate.
8.2 What "Substantive Unique Value Per Page" Means
For a service in a specific city (e.g., "Web Development in Cassville, MO"), the page should include:
Required for legitimacy:
- Real local information about the city or service area
- Specific local context (population, business landscape, industry mix)
- Mentions of local landmarks, neighborhoods, regions
- Local team or contact information
- Reviews or testimonials from this location's customers (when applicable)
- Local pricing if it differs by market
- Local case studies or project examples (with permission)
- Service area map showing this specific city
What turns a page from legitimate to doorway:
- Just template with city name substituted
- Identical content with minimal city-specific elements
- City-specific elements that are merely lists of nearby cities (still derivative)
- No genuine reason this page is on this site versus a competitor's
8.3 Programmatic Page Template Structure
<main class="local-service-page">
<header>
<h1>{{SERVICE}} in {{CITY}}, {{STATE}}</h1>
<p class="page-purpose">
{{BUSINESS_NAME}} provides {{SERVICE}} for businesses in {{CITY}} and surrounding areas.
</p>
</header>
<section class="local-context">
<h2>{{SERVICE}} Specifically for {{CITY}}</h2>
<p>{{200_400_WORD_LOCAL_SPECIFIC_DESCRIPTION}}</p>
<p>{{LOCAL_INDUSTRY_LANDSCAPE_OR_NEEDS}}</p>
<p>{{HOW_THIS_SERVICE_FITS_LOCAL_MARKET}}</p>
</section>
<section class="our-experience-here">
<h2>Our Experience in {{CITY}}</h2>
{{IF_WE_HAVE_LOCAL_CLIENTS}}
<p>{{SPECIFIC_LOCAL_PROJECT_HISTORY}}</p>
{{ELSE}}
<p>{{HONEST_STATEMENT_OF_SERVICE_AREA_AND_FAMILIARITY}}</p>
{{/IF}}
</section>
<section class="local-pricing">
<h2>Pricing for {{CITY}} Businesses</h2>
<p>{{HONEST_PRICING_FOR_THIS_MARKET}}</p>
</section>
<section class="local-resources">
<h2>{{CITY}} Business Resources</h2>
<ul>
<li><a href="{{chamber_url}}">{{CITY}} Chamber of Commerce</a></li>
<li><a href="{{city_business_dev}}">{{CITY}} Economic Development</a></li>
{{OTHER_LEGITIMATE_LOCAL_RESOURCES}}
</ul>
</section>
<section class="contact-cta">
<h2>Get Started</h2>
<p>{{CTA_TEXT}}</p>
<p>Contact: {{contact_info}}</p>
</section>
<!-- Schema -->
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "LocalBusiness",
"@id": "https://{{domain}}/services/{{service-slug}}/{{city-slug}}/#localbusiness",
"name": "{{BUSINESS_NAME}} — {{CITY}}",
"description": "{{SERVICE}} for businesses in {{CITY}}, {{STATE}}",
"areaServed": {
"@type": "City",
"name": "{{CITY}}",
"addressRegion": "{{STATE_ABBREVIATION}}"
},
"branchOf": {"@id": "https://{{domain}}/#organization"}
}
</script>
</main>
8.4 Audit Methodology for Existing Programmatic Pages
For each programmatic page in the current 4,715:
page_audit:
url: ""
service_targeted: ""
city_targeted: ""
unique_word_count: 0 # Words specific to this page (not template)
total_word_count: 0
uniqueness_ratio: 0.0 # Should be >0.40 minimum, ideally >0.60
has_local_specific_content: false # Real local context
has_local_industry_context: false
has_local_landmarks_or_geography: false
has_local_pricing: false
has_local_examples_or_case_studies: false
has_local_resources: false # Chamber, etc.
has_localbusiness_schema_with_areaServed: false
has_branchOf_relationship: false
classification: "" # "legitimate", "marginal", "doorway"
action_required: "" # "keep_as_is", "enrich", "consolidate", "noindex", "remove"
Classification thresholds:
- Legitimate: 60%+ uniqueness, 5+ local-specific elements, substantive local context — keep
- Marginal: 30-60% uniqueness, 2-4 local elements — enrich substantially
- Doorway: <30% uniqueness, minimal local content — noindex or remove
8.5 Sustainable Programmatic Page Strategy
For 4,715 pages, manual creation is impractical. Sustainable approach:
Option A — Reduce footprint dramatically:
- Identify top 50-100 cities with genuine business activity in your service area
- Build substantive pages for these
- Noindex the remaining 4,500+
- Quality concentration over quantity
Option B — Genuine programmatic enrichment:
- Source location-specific data per city (population, business count, industry mix, demographic data from US Census)
- Write per-city local context paragraphs (could be AI-assisted with substantial editing)
- Add per-city resources (Chamber URL, local government, etc.)
- Per-city pricing variations if applicable
- Per-city case studies as they're acquired
Option C — Hybrid:
- Top 100 cities: substantive content, premium local treatment
- Next 500 cities: enriched programmatic with location data and resources
- Remaining 4,000+: noindex or remove
My recommendation for the 4,715-page situation: Audit critically. The volume that doesn't have substantive unique value is dragging the site overall. Concentrating quality on the cities that genuinely matter improves Local Pack performance more than spreading thin across thousands.
8.6 Programmatic Page Risks Currently Active
In 2026, programmatic page risk is at all-time high:
- March 2024 spam policy expansion
- May 2024 spam update enforcement
- December 2024 core update specifically targeted thin programmatic content
- Continued enforcement through 2026
The 4,715 pages represent significant penalty risk if classified as doorway pages by Google's systems. The audit work isn't optional — it's risk management.
9. Local Link Building
Local backlinks contribute to prominence beyond what citations provide.
9.1 Local Link Sources
Local press:
- Local newspapers
- Regional business publications
- Industry trade publications with local coverage
- Local TV station websites
Local organizations:
- Chamber of Commerce
- Business Improvement District
- Industry associations local chapters
- Civic groups
Local partnerships:
- Suppliers and vendors
- Complementary businesses (mutual referrals)
- Local non-profits you support
Local sponsorships:
- Sports teams
- Events
- School programs
- Community initiatives
Local resource pages:
- "Best of [City]" listicles (when genuinely qualified)
- Local resource directories
- Tourist information sites
9.2 Local Link Acquisition Patterns
Editorial coverage:
- Press releases about genuine business news
- Local journalist relationships
- Newsworthy events (anniversaries, expansions, awards)
Resource creation:
- Genuinely useful local resources (industry guide for the area, local research)
- Local events you host or sponsor
- Local data analysis worth citing
Partnership building:
- Mutual referrals with complementary businesses (without quid-pro-quo links — see spam policies)
- Joint events and content
- Co-marketing with consent
9.3 What to Avoid
Link scheme risks (per framework-spampolicies.md):
- Buying local links
- Excessive link exchanges
- Forum signature links
- Comment links on other local sites
- "Local SEO services" promising backlinks at scale
Local links earned through genuine activity work; manufactured local links don't.
10. Tracking Local Performance
10.1 Google Business Profile Insights
GBP provides detailed analytics:
- Profile views (total)
- Search vs Maps views
- Direct (branded) searches
- Discovery searches (non-branded)
- Branded searches breakdown
- Photo views relative to similar businesses
- Customer actions (calls, direction requests, website clicks, messages)
Track monthly:
- Total views trend
- Direct vs discovery search ratio (discovery growth = better organic prominence)
- Action conversion rate (actions / views)
- Photo engagement vs competitors
10.2 Local Rank Tracking
Standard rank tracking is insufficient for local. Local rankings vary by searcher location even within a single city. Use proximity-based rank tracking:
Tools:
- Local Falcon — most popular; visualizes rankings as heatmap across geographic grid
- Local Viking — similar functionality
- BrightLocal Local Search Grid
- Whitespark Rank Tracker
Setup:
- Select keywords to track
- Define geographic grid (e.g., 7×7 grid covering primary service area)
- Tool fakes searcher location at each grid point
- Reports rank at each location
- Heatmap visualization shows where rankings are strong vs weak
Why this matters:
- A keyword may rank #1 right at your business location and #10 just 5 miles away
- Distance is one of three local ranking factors
- Geographic ranking variance is normal but actionable
- Identifies geographic gaps in prominence
10.3 Citation Health Monitoring
Track citation status over time:
- Total citation count
- NAP consistency percentage
- New citations acquired
- Citations corrected
- Duplicate listings discovered/resolved
10.4 Review Velocity Tracking
- New reviews per month
- Average rating trend
- Response rate
- Sentiment patterns
- Platform distribution (Google vs Yelp vs Facebook etc.)
10.5 Local Conversion Tracking in GA4
Configure GA4 to track local-specific conversions:
- Phone calls (via call tracking integration)
- Form submissions with location field
- Appointment bookings
- Driving direction requests
- Maps app launches
- Address copies
Local conversions often happen off-site (call, drive to store) — instrument what you can measure.
11. Audit Mode
11.1 Comprehensive Local SEO Audit
| # | Category | Criterion | Pass/Fail |
|---|---|---|---|
| GBP | |||
| L1 | GBP | Verified GBP listing | |
| L2 | GBP | Profile completeness 95%+ | |
| L3 | GBP | Compliant business name (no keyword stuffing) | |
| L4 | GBP | Correct primary category | |
| L5 | GBP | Up to 9 secondary categories utilized | |
| L6 | GBP | Address/service area correctly configured for business model | |
| L7 | GBP | Hours accurate including special hours | |
| L8 | GBP | Quality business description 600+ characters | |
| L9 | GBP | 20+ photos uploaded | |
| L10 | GBP | All applicable attributes claimed | |
| L11 | GBP | Services listed with descriptions | |
| L12 | GBP | Posts published weekly | |
| L13 | GBP | Q&A seeded with 8+ owner Q&As | |
| Citations | |||
| L14 | Citations | 15 top-tier citations claimed | |
| L15 | Citations | Industry-specific citations claimed | |
| L16 | Citations | NAP consistency 95%+ across citations | |
| L17 | Citations | No duplicate listings (or in resolution) | |
| Reviews | |||
| L18 | Reviews | Active review acquisition system | |
| L19 | Reviews | Compliant acquisition (no gating, no incentivizing) | |
| L20 | Reviews | Response rate 100% on negative, 50%+ on positive | |
| L21 | Reviews | Healthy review velocity ongoing | |
| L22 | Reviews | Multi-platform review presence | |
| On-Site | |||
| L23 | On-Site | LocalBusiness schema with all required properties | |
| L24 | On-Site | NAP consistent in footer on every page | |
| L25 | On-Site | Embedded Google Map | |
| L26 | On-Site | Per-location pages for multi-location | |
| L27 | On-Site | Local content published periodically | |
| Programmatic (if applicable) | |||
| L28 | Programmatic | Per-page substantive unique value | |
| L29 | Programmatic | Doorway risk audit completed | |
| L30 | Programmatic | Page reduction or enrichment plan in progress | |
| Tracking | |||
| L31 | Tracking | GBP Insights monitored monthly | |
| L32 | Tracking | Geo-grid local rank tracking active | |
| L33 | Tracking | Local conversion tracking in GA4 |
Score: 33. World-class local SEO: 30+/33 with zero "Critical" failures.
12. Common Mistakes & Anti-Patterns
12.1 Keyword-Stuffed Business Name
Anti-pattern: "Smith Plumbing - Best 24/7 Emergency Service in Tampa"
Why it fails: Direct GBP guideline violation. Removable by Google. Reportable by competitors.
Fix: Compliant name matching real signage. Service descriptors in description, not name.
12.2 Wrong Primary Category
Anti-pattern: A general dentist with primary category "Cosmetic Dentist" because "cosmetic" sounds higher-value.
Why it fails: You don't appear for "dentist" queries you should win. Relevance dilution.
Fix: Most descriptive accurate primary category.
12.3 Hidden Storefront Address
Anti-pattern: A retail store hiding its address because "we want to look like we have multiple locations."
Why it fails: Storefront businesses must display address. Hiding violates GBP guidelines.
Fix: Display address. Configure correctly per business model.
12.4 SAB Showing Address Publicly
Anti-pattern: A mobile dog grooming service with street address shown publicly because they don't realize SABs hide addresses.
Why it fails: Address showing for SAB violates guidelines. May trigger suspension.
Fix: Hide address per SAB guidelines. Configure service area instead.
12.5 Inconsistent NAP
Anti-pattern: 50 citations with 8 variations of business name and 5 variations of phone number format.
Why it fails: Google can't fully consolidate prominence signals. Each variation is a partial signal.
Fix: Citation audit and cleanup. Canonical NAP enforced everywhere.
12.6 Review Gating
Anti-pattern: Filtering customers through satisfaction survey before review request.
Why it fails: Google guideline violation. FTC rule violation. Penalties up to $51,744 per review.
Fix: All customers asked on same terms. Accept negative reviews publicly.
12.7 Buying Reviews
Anti-pattern: Paying for reviews. Incentivizing reviews with discounts or rewards.
Why it fails: FTC violation. Google guideline violation. Penalties severe.
Fix: Earn reviews through service quality and appropriate asking.
12.8 No Review Responses
Anti-pattern: 50 reviews, zero responses.
Why it fails: Engagement signal. Customers see lack of response. Negative reviews compound without response.
Fix: Response strategy. 100% on negative, 50%+ on positive.
12.9 Thin Programmatic Pages
Anti-pattern: 4,000+ city pages with templated content and city name swapped.
Why it fails: Doorway page risk. Spam policy violation potential. December 2024 core update specifically targeted this.
Fix: Substantive unique value per page or noindex/remove.
12.10 Duplicate GBP Listings
Anti-pattern: Multiple GBP listings for same business — historical creation by different employees, claim attempts on existing listings, etc.
Why it fails: Splits prominence signals. Confuses Google.
Fix: Identify primary listing. Mark duplicates for merge through Google.
12.11 Stale Listings
Anti-pattern: GBP set up once and never updated. No posts in years. Hours never updated.
Why it fails: Stale signals. Active listings outperform stale ones for ranking.
Fix: Monthly maintenance cadence. Posts weekly. Photos monthly.
12.12 Ignoring Bing Places and Apple Business Connect
Anti-pattern: Optimizing only for Google.
Why it fails: Bing drives Microsoft Copilot. Apple Business Connect drives Apple Maps and Spotlight. Both have user bases. Both contribute to prominence signals across platforms.
Fix: Claim and optimize Bing Places and Apple Business Connect.
13. Cross-Reference to the 14-Tier Framework
Local SEO implementation maps to:
- Tier 1 EEA — E-E-A-T entity work overlaps with local entity establishment
- Tier 2 LIO — Local Information Optimization
- Tier 5 GBO — GBP Optimization (entire tier)
- Tier 5 LCO — Local Content Optimization
- Tier 5 LCT — Local Citation
- Tier 5 LRM — Local Reputation Management
- Tier 5 NAP — NAP Consistency
- Tier 5 LMK — Local Markup
- Tier 5 LPP — Local Per-Page (programmatic)
- Tier 8 GA4 — Local conversion tracking
- Tier 9 LRT — Local Rank Tracking
Tier 5 (Local Domination) of the 14-tier framework is essentially this framework's tactical implementation. The strategic principles in this document drive the tactical work in Tier 5.
14. Maintenance Schedule
14.1 Daily
- Monitor GBP messages if enabled
- Respond to new reviews (target: same day for negative)
14.2 Weekly
- Publish 1-2 GBP posts
- Add 2-3 new photos
- Check for new reviews
- Monitor GBP for unauthorized edits
14.3 Monthly
- Comprehensive GBP performance review (insights)
- Review citation health (sample 20 top citations)
- Local rank check (geo-grid)
- Local content publication (at least 1 piece)
- Competitor GBP audit (1-2 key competitors)
14.4 Quarterly
- Full local SEO audit (Section 11)
- Full citation audit
- Programmatic page audit (if applicable)
- Review acquisition system performance review
- Update business attributes if changes
- Refresh photos comprehensively
14.5 Annually
- Comprehensive Local SEO strategy review
- Update business description if business has evolved
- Review all secondary categories — still accurate?
- Strategic competitor analysis
- Refresh all photos with current ones
- Comprehensive industry directory review (any new ones?)
14.6 Event-Driven
- Address change → update GBP within 24 hours; cascade to all citations within 7 days
- New phone → same cascade
- New service offering → add to GBP services
- New attribute (e.g., new accessibility feature) → add to GBP
- Holiday hours → set special hours 2+ weeks ahead
- Major business change (rebrand, ownership change) → comprehensive update
15. Implementation/Audit Report Templates
15.1 Local SEO Implementation Report Template
# Local SEO Framework Implementation Report
**Business**: {{BUSINESS_NAME}}
**Implementation Date**: {{TODAY}}
**Business Model**: {{STOREFRONT/SAB/HYBRID}}
## GBP Status
- Verification: {{STATUS}}
- Profile completeness: {{PERCENTAGE}}%
- Primary category: {{CATEGORY}}
- Secondary categories: {{COUNT}}
- Photos uploaded: {{COUNT}}
- Posts in last 30 days: {{COUNT}}
## Citation Status
- Top-tier citations completed: {{X}}/15
- Industry-specific citations: {{COUNT}}
- NAP consistency: {{PERCENTAGE}}%
- Duplicate listings resolved: {{COUNT}}
## Review System Status
- Acquisition system: {{IN_PLACE/PARTIAL/NONE}}
- Compliance verified: {{YES/NO}}
- Current review count: {{COUNT}}
- Average rating: {{RATING}}
- Response rate (negative): {{PERCENTAGE}}%
- Response rate (positive): {{PERCENTAGE}}%
## On-Site Local Signals
- LocalBusiness schema: {{INSTALLED}}
- Per-location pages: {{COUNT}}
- NAP in footer: {{INSTALLED}}
- Embedded map: {{INSTALLED}}
## Programmatic Pages (if applicable)
- Pages audited: {{COUNT}}
- Legitimate: {{COUNT}}
- Marginal (enrichment plan): {{COUNT}}
- Doorway (removed/noindexed): {{COUNT}}
## Tracking Infrastructure
- GBP Insights monitoring: {{ACTIVE}}
- Local rank tracker: {{TOOL}}
- Geo-grid tracking: {{ACTIVE}}
- Local conversion tracking: {{ACTIVE}}
## Sign-Off
Implementation complete: {{DATE}}
Implementer: {{NAME}}
15.2 Local SEO Audit Report Template
# Local SEO Audit Report
**Business**: {{BUSINESS_NAME}}
**Audit Date**: {{TODAY}}
## Executive Summary
{{ONE_PARAGRAPH_ASSESSMENT}}
## Audit Score
{{X}}/33
## GBP Findings
{{DETAILED_FINDINGS}}
## Citation Findings
{{DETAILED_FINDINGS}}
## Review Findings
{{DETAILED_FINDINGS}}
## On-Site Findings
{{DETAILED_FINDINGS}}
## Programmatic Findings (if applicable)
- Pages classified as legitimate: {{COUNT}}
- Pages requiring enrichment: {{COUNT}}
- Pages classified as doorway risk: {{COUNT}}
- Recommended action: {{RECOMMENDATION}}
## Critical Failures
{{LIST_WITH_REMEDIATION}}
## Competitor Comparison
{{HOW_COMPETITORS_RANK_AND_WHY}}
## Recommended Remediation Order
{{PRIORITIZED_LIST}}
## Estimated Remediation Effort
{{HOURS_OR_TIMELINE}}
## Sign-Off
End of Framework Document
Document version: 1.0 Last updated: 2026-04-29 Maintained by: ThatDeveloperGuy
Local SEO is operationally distinct from organic SEO. The signals are different (relevance, distance, prominence vs E-E-A-T and content quality). The platforms are different (GBP, Bing Places, Apple Business Connect, citation directories vs Google search index). The tracking is different (geo-grid proximity tracking vs standard rank tracking). The strategy is different (local-specific content, citations, reviews vs links and entity authority).
For agencies serving local clients, local SEO is foundational. The vast majority of local search is non-discretionary — businesses serving local audiences must rank in the Local Pack and Maps to capture meaningful share of search demand. Sites without local SEO infrastructure leave revenue on the table even when their organic SEO is excellent.
The 4,715-page programmatic situation specifically warrants careful handling. Audit critically. Concentrate quality. Don't carry doorway page risk into 2026 algorithm enforcement.
Companion documents:
framework-eeat.md— Foundational E-E-A-T (entity work overlaps)framework-knowledgegraph.md— Knowledge Graph (local entity authority)framework-spampolicies.md— Spam Policies (doorway pages, programmatic risk)framework-hcs.md— Helpful Content System (programmatic page quality)framework-aicitations.md— AI Citations (local AI Overview implications)
Want this framework implemented on your site?
ThatDevPro ships these frameworks as productized services. SDVOSB-certified veteran owned. Cassville, Missouri.
See Engine Optimization service ›