Schema Priority Order for Local Businesses
The Merlino 5 Easy Wins schema priority sequence:
| Schema Type | Speed to Results | Page Type | |-------------|-----------------|-----------| | Q&A Schema (QAPage) | Hours | Any page with a question block | | FAQ Schema (FAQPage) | 1-3 days | Service pages, FAQ pages | | LocalBusiness + @id | Days to weeks | Homepage, contact page | | AggregateRating | 1-2 weeks | Homepage, service pages | | VideoObject | 1-2 weeks | Pages with embedded video |
Start with Q&A Schema. It ranks fastest. Move down the priority list after each type is deployed and indexed.
Page-Type to Schema-Type Mapping
| Page Type | Required Schema | Optional Schema | |-----------|----------------|-----------------| | Homepage | LocalBusiness + Organization + WebSite | AggregateRating, FAQPage | | Service page | Service + FAQPage | AggregateRating, HowTo | | Location page | LocalBusiness (branch) + FAQPage | GeoCoordinates, OpeningHoursSpecification | | Blog article | Article (or BlogPosting) + Person (author) | FAQPage, VideoObject | | FAQ page | FAQPage | HowTo | | Product page | Product + Offer + AggregateRating | Review | | About page | Organization + Person | ItemList | | Contact page | LocalBusiness | ContactPoint |
Critical Rules
@id is mandatory on LocalBusiness and Organization schemas. Link to the GMB CID URL (not the website homepage). This anchors the entity to Google's Knowledge Graph.
AggregateRating must come from third-party sources only — Google, Yelp, Facebook. Never self-host rating data or make up rating numbers. Policy violation = rich results penalty.
FAQPage requires visible Q&A on page. Every question-answer pair in the schema must appear as readable text on the page. Hidden content violates rich results guidelines.
Stacking schema types uses @graph pattern. When a page needs multiple schema types, wrap them in a single @graph array, not separate script tags.
LocalBusiness + AggregateRating Stack (Standard Template)
{
"@context": "https://schema.org",
"@graph": [
{
"@type": "LocalBusiness",
"@id": "https://g.co/kg/m/0EXAMPLE",
"name": "Smith Roofing",
"url": "https://smithroofing.com",
"telephone": "+1-813-555-0123",
"address": {
"@type": "PostalAddress",
"streetAddress": "123 Main St",
"addressLocality": "Tampa",
"addressRegion": "FL",
"postalCode": "33602"
},
"aggregateRating": {
"@type": "AggregateRating",
"ratingValue": "4.9",
"reviewCount": "127",
"bestRating": "5"
},
"openingHoursSpecification": [
{
"@type": "OpeningHoursSpecification",
"dayOfWeek": ["Monday","Tuesday","Wednesday","Thursday","Friday"],
"opens": "08:00",
"closes": "18:00"
}
]
}
]
}
AI Discoverability Schema Checklist
Schema also signals to AI platforms (ChatGPT Browse, Perplexity, Gemini):
- [ ]
knowsAboutarray (3+ topics) on Organization or Person schema - [ ]
sameAslinks to 5+ platforms (Wikidata first, then Wikipedia, LinkedIn, YouTube) - [ ]
speakableon Article schema (marks passages for voice/AI reading) - [ ]
@idcross-references between schemas on the same page - [ ] JSON-LD in
<head>of server-rendered HTML (not JavaScript-injected)
Validation
Before deployment, validate every schema block:
- Google Rich Results Test:
https://search.google.com/test/rich-results - Schema.org Validator:
https://validator.schema.org
Both must pass. One passing is not sufficient — the tools catch different error types.
Cross-References
schema-stack— full stacking methodology and Merlino 5 Easy Wins sequenceschema-template-library— complete template library for all schema typeseeat-audit— E-E-A-T signals reinforced through schema (author, credentials, organization)local-schema-builder— LocalBusiness schema specialized for service-area businesses
#seo-sop #seo #schema #structured-data #json-ld #rich-results