Local SEO Module¶
Module ID: local_seo | Type: Conditional (auto-detected) | Profiles: full, local
The Local SEO module audits signals critical for businesses that serve customers in a geographic area -- checking structured data, Google Business Profile integration, NAP consistency, click-to-call links, and local trust signals.
What It Checks¶
| Check | What It Looks For |
|---|---|
| LocalBusiness schema | JSON-LD with @type LocalBusiness or subtypes (Restaurant, Store, Dentist, etc.) |
| NAP in schema | Name, Address, Phone present in structured data |
| Google Maps embed | Embedded Google Maps iframe |
| Click-to-call | <a href="tel:..."> links |
| WhatsApp link | Links to wa.me or api.whatsapp.com |
| GBP link | Link to Google Business Profile |
| Service area | Service area information in schema or content |
| Opening hours | OpeningHoursSpecification in schema |
| Review schema | AggregateRating or Review in structured data |
| Trust signals | Awards, certifications, accreditations, testimonials |
| Prominent CTAs | Visible call-to-action buttons (call, book, quote) |
Scoring Breakdown¶
| Criterion | Deduction | Condition |
|---|---|---|
| No LocalBusiness schema | -20 | No JSON-LD with local business type |
| Missing name in schema | -10 | No business name in structured data |
| Missing address in schema | -10 | No address object in structured data |
| Missing phone in schema | -10 | No telephone property |
| No Google Maps | -5 | No embedded map |
| No click-to-call | -10 | No tel: links |
| No opening hours | -5 | No hours in schema |
| No reviews/ratings | -5 | No aggregate rating schema |
| No trust signals | -5 | No testimonials, awards, or certifications |
| No prominent CTA | -10 | No visible call-to-action |
Auto-Detection Signals¶
The module activates when any of these patterns match:
"@type": "LocalBusiness"(or subtypes: Restaurant, Store, AutoRepair, Plumber, Dentist, Electrician, LegalService, MedicalBusiness, RealEstateAgent, FinancialService, etc.)google.com/maps/embedormaps.googleapis.comhref="tel:"service-areain class or ID attributes
Example Findings¶
P0 CRITICAL: No LocalBusiness structured data
Search engines cannot identify this as a local business without
LocalBusiness JSON-LD schema. This impacts local pack rankings.
Fix: Add JSON-LD with @type "LocalBusiness" (or a specific subtype)
including name, address, telephone, and openingHours.
Effort: Medium
P1 HIGH: No click-to-call link
Mobile users expect to tap a phone number to call. Without tel: links,
users must copy and paste the number.
Fix: Wrap phone numbers in <a href="tel:+441234567890">01234 567890</a>
Effort: Low