Local businesses without schema-org LocalBusiness markup are invisible to the structured-data layer of local search. Google's local pack — the map + business listing results that appear above organic results for location-based queries — draws from structured signals including address, telephone, and openingHoursSpecification. A restaurant, clinic, or retail location without PostalAddress schema loses local pack eligibility to direct competitors who implement it. This is a recoverable gap that directly affects foot traffic for businesses with physical locations.
Low because LocalBusiness schema absence reduces local search visibility without breaking site functionality, and only affects businesses with physical locations.
Add LocalBusiness schema to each location page in app/locations/[slug]/page.tsx, generated from your location data source:
const schema = {
'@context': 'https://schema.org',
'@type': 'LocalBusiness',
name: location.name,
address: {
'@type': 'PostalAddress',
streetAddress: location.street,
addressLocality: location.city,
addressRegion: location.state,
postalCode: location.zip,
addressCountry: 'US',
},
telephone: location.phone,
openingHoursSpecification: location.hours.map(h => ({
'@type': 'OpeningHoursSpecification',
dayOfWeek: h.day,
opens: h.open,
closes: h.close,
})),
}
All three top-level properties (address, telephone, openingHoursSpecification) are required for local pack eligibility. Validate each location page with the Google Rich Results Test.
ID: seo-advanced.structured-data.local-business-schema
Severity: low
What to look for: Count all location or business pages. For each, enumerate the LocalBusiness schema properties present: name, address (with streetAddress, addressLocality, addressRegion, postalCode), telephone, and openingHoursSpecification. At least 3 top-level properties must be present.
Pass criteria: Every local business or location page includes LocalBusiness schema with at least 3 of the 4 required properties (name, address, telephone, openingHoursSpecification) present and non-empty. Report: "X of Y location pages have LocalBusiness schema."
Fail criteria: LocalBusiness schema is missing entirely, or fewer than 3 required properties are present on any location page.
Skip (N/A) when: The project is not a local business or has no location-specific pages (e.g., SaaS product, online-only service).
Detail on fail: "Location pages have LocalBusiness schema with 2 of 4 required properties — missing 'openingHoursSpecification' and 'telephone'".
Remediation: LocalBusiness schema enables local search results and knowledge panel features. Add to location page components in app/locations/[slug]/page.tsx:
{
"@context": "https://schema.org",
"@type": "LocalBusiness",
"name": "Your Business",
"address": {
"@type": "PostalAddress",
"streetAddress": "123 Main St",
"addressLocality": "Springfield",
"addressRegion": "IL",
"postalCode": "62701"
},
"telephone": "+1-555-123-4567",
"openingHoursSpecification": [
{
"@type": "OpeningHoursSpecification",
"dayOfWeek": "Monday",
"opens": "09:00",
"closes": "17:00"
}
]
}