LocalBusiness schema is how Google connects your website to "near me" searches and AI Overview citations for location-based queries. Combined with GeoRadius (service area mapping) and the right industry subtype, it's the strongest local SEO signal stack available in WordPress. This guide covers the complete setup.
When a user searches "plumber near me" or asks Google Assistant "best dentist in Brooklyn," the engine ranks results based on three signals:
LocalBusiness schema directly feeds the first two and amplifies the third. Without it, you compete on Google Business Profile alone - which is one signal vs. three.
{
"@context": "https://schema.org",
"@type": "Plumber",
"name": "Acme Plumbing",
"telephone": "+1-555-123-4567",
"address": {
"@type": "PostalAddress",
"streetAddress": "123 Main St",
"addressLocality": "Brooklyn",
"addressRegion": "NY",
"postalCode": "11201",
"addressCountry": "US"
},
"geo": {
"@type": "GeoCoordinates",
"latitude": 40.6892,
"longitude": -73.9442
},
"openingHours": "Mo-Fr 08:00-18:00",
"priceRange": "$$"
}
That's the baseline. The advanced version adds GeoRadius, sameAs, and reviews.
NAP = Name, Address, Phone. Your NAP must be identical across:
Even small differences ("Suite 200" vs "Ste 200") can split your trust signal across two entities in Google's index. Use one canonical version everywhere.
If you serve customers at their location instead of yours (plumber, electrician, mobile services), use areaServed with GeoCircle instead of (or in addition to) the physical address:
"areaServed": {
"@type": "GeoCircle",
"geoMidpoint": {
"@type": "GeoCoordinates",
"latitude": 40.6892,
"longitude": -73.9442
},
"geoRadius": 25000
}
geoRadius is in meters. 25000 = 25 km / ~15 miles. This tells Google your service area, which determines which "near me" queries you appear for.
Always use the most specific business subtype available. Generic LocalBusiness works, but Google rewards specificity:
Restaurant, BarOrPub, CafeOrCoffeeShop, FastFoodRestaurantDentist, Physician, MedicalClinic, Pharmacy, VeterinaryCarePlumber, Electrician, HVACBusiness, RoofingContractor, HousePainterLegalService, Attorney, NotaryAutoRepair, AutoDealer, AutoBodyShop, GasStationRealEstateAgent, HousingAgencyHairSalon, BeautySalon, NailSalon, DaySpaSee the full list at schema.org/LocalBusiness.
The sameAs array lists URLs that represent the same business - your social profiles, directory listings, and review sites. This is how Google verifies your entity exists across the web:
"sameAs": [
"https://www.google.com/maps/place/?cid=YOUR_GBP_ID",
"https://www.facebook.com/yourbusiness",
"https://www.yelp.com/biz/yourbusiness",
"https://www.linkedin.com/company/yourbusiness"
]
Minimum: 3 profile links. Optimal: 5 - 8 high-authority profiles. Always include your verified Google Business Profile URL.
Add review data to drive star ratings in search results:
"aggregateRating": {
"@type": "AggregateRating",
"ratingValue": "4.8",
"reviewCount": "127"
}
Critical: the rating and review count must match what's visible on your site. Don't add review schema for reviews that don't exist on the page.
For "near me" queries cited by AI Overviews, layer in:
FAQPage with location-relevant questions ("Do you serve [Neighborhood]?")Service schema for each individual service offeredPerson schema for owners or lead practitioners (especially for healthcare/legal - boosts E-E-A-T)Yes - they reinforce each other. GBP is for Google Maps; LocalBusiness schema is for organic search and AI Overviews.
Create separate location pages, each with its own LocalBusiness schema. Don't list multiple addresses in one schema block.
Yes - use areaServed with GeoCircle or list of cities, and omit address. Google handles this fine.
Yes. FAQ schema with location-specific questions ("What ZIP codes do you cover?") increases AI Overview citations for local queries.
Local impact is typically 4 - 8 weeks as Google verifies NAP consistency across directories.
Complete Guide to Schema Types - How to Rank in Google AI Overviews - Google's LocalBusiness Documentation