Agency7's full architectural guide — from AI lead generation to autonomous financial operations.
Schema Markup for AI Search Engines: The 2026 Checklist
Schema.org structured data was originally built for Google's rich results. In 2026, it has a bigger job: it's how AI search engines (ChatGPT, Gemini, Claude, Perplexity) understand what your page is actually about, who runs it, and whether they should cite it.
This is a practical checklist of the schema types that matter for AI search in 2026 — which ones to use, where, and how to implement them in a way that both traditional Google and AI engines can parse cleanly.
The short version
Minimum schema every site should emit:
- Organization on home page
- LocalBusiness on home page (if local)
- WebSite on home page
- Service on each service page
- Article on each blog post
- Person for identifiable authors
- FAQPage on pages with FAQs
- BreadcrumbList on all non-home pages
Everything else is optional but situationally valuable.
All schema should be JSON-LD (not microdata or RDFa). Embedded in a <script type="application/ld+json"> tag in your <head> or near the top of <body>.
The types that matter in 2026
1. Organization
What it does: Tells crawlers who you are as an entity.
Minimum fields:
{
"@context": "https://schema.org",
"@type": "Organization",
"@id": "https://yoursite.com/#organization",
"name": "Your Business Name",
"url": "https://yoursite.com",
"logo": "https://yoursite.com/logo.png",
"description": "One-sentence description of what you do.",
"email": "hello@yoursite.com",
"sameAs": [
"https://www.linkedin.com/company/yourbusiness",
"https://twitter.com/yourbusiness",
"https://github.com/yourbusiness"
]
}
Key things AI engines care about:
- The
@id— unique, stable, used for cross-referencing from other schema sameAs— pointers to your authoritative social profiles. This is how AI engines verify you exist as a real entity.description— single sentence AI can quote. Write it for them.
2. LocalBusiness
What it does: Identifies you as a brick-and-mortar or service-area business in a specific location. Critical for local queries.
Full example:
{
"@context": "https://schema.org",
"@type": "LocalBusiness",
"@id": "https://yoursite.com/#localbusiness",
"name": "Your Business Name",
"image": "https://yoursite.com/hero.jpg",
"url": "https://yoursite.com",
"telephone": "+1-780-555-1234",
"email": "hello@yoursite.com",
"address": {
"@type": "PostalAddress",
"streetAddress": "123 Main Street",
"addressLocality": "Edmonton",
"addressRegion": "AB",
"postalCode": "T5K 2M1",
"addressCountry": "CA"
},
"geo": {
"@type": "GeoCoordinates",
"latitude": 53.5461,
"longitude": -113.4938
},
"openingHoursSpecification": [
{
"@type": "OpeningHoursSpecification",
"dayOfWeek": ["Monday", "Tuesday", "Wednesday", "Thursday", "Friday"],
"opens": "09:00",
"closes": "17:00"
}
],
"priceRange": "$$",
"areaServed": {
"@type": "City",
"name": "Edmonton"
}
}
For service-area businesses (no physical storefront), use ServiceArea instead of PostalAddress or specify areaServed as an array of cities/regions.
Specific LocalBusiness subtypes — use these instead of generic LocalBusiness when applicable:
Dentist,MedicalClinic,Physiotherapist,VeterinaryCareAutoRepair,HVACBusiness,Electrician,Plumber,RoofingContractorLegalService,AccountingService,FinancialServiceRestaurant,CafeOrCoffeeShop,BarOrPubStore(with subtypes for specific retail)
Using the correct subtype helps AI engines route local queries correctly.
3. WebSite
What it does: Identifies your site as a recognized entity and enables sitelinks in search results.
{
"@context": "https://schema.org",
"@type": "WebSite",
"@id": "https://yoursite.com/#website",
"url": "https://yoursite.com",
"name": "Your Site Name",
"description": "What this site is about.",
"publisher": { "@id": "https://yoursite.com/#organization" },
"potentialAction": {
"@type": "SearchAction",
"target": "https://yoursite.com/search?q={search_term_string}",
"query-input": "required name=search_term_string"
}
}
The publisher reference uses @id to cross-link to your Organization schema — this is how AI engines build a connected understanding of your entity graph.
4. Service
What it does: Describes a specific service you offer. Put one on each service page.
{
"@context": "https://schema.org",
"@type": "Service",
"@id": "https://yoursite.com/ai-voice-agents#service",
"serviceType": "AI Voice Agent Deployment",
"name": "AI Voice Agents for Edmonton Businesses",
"description": "24/7 AI-powered voice agents that answer calls, book appointments, and qualify leads.",
"provider": { "@id": "https://yoursite.com/#organization" },
"areaServed": {
"@type": "City",
"name": "Edmonton"
},
"offers": {
"@type": "Offer",
"priceRange": "$3000-$8000",
"priceCurrency": "CAD"
}
}
Include pricing info if you can. AI engines quote "starts at $X" language directly. If you don't provide it, they synthesize (sometimes inaccurately).
5. Article
What it does: Marks blog posts and long-form content. Critical for AI citation.
{
"@context": "https://schema.org",
"@type": "Article",
"@id": "https://yoursite.com/blog/post-slug#article",
"headline": "Post Title",
"description": "One-line summary of the post.",
"image": "https://yoursite.com/images/hero.jpg",
"datePublished": "2026-04-28T09:00:00-06:00",
"dateModified": "2026-04-28T09:00:00-06:00",
"author": { "@id": "https://yoursite.com/#author" },
"publisher": { "@id": "https://yoursite.com/#organization" },
"mainEntityOfPage": {
"@type": "WebPage",
"@id": "https://yoursite.com/blog/post-slug"
}
}
dateModified matters a lot in 2026. AI engines give heavy weight to freshness. Update the field (automatically via file mtime or manually) whenever content changes substantively.
For technical how-to posts, use TechArticle or HowTo instead of generic Article.
6. Person
What it does: Identifies authors as real entities — increasingly important for E-E-A-T.
{
"@context": "https://schema.org",
"@type": "Person",
"@id": "https://yoursite.com/#author",
"name": "Anders Kitson",
"url": "https://yoursite.com/about",
"jobTitle": "Founder & AI Engineer",
"worksFor": { "@id": "https://yoursite.com/#organization" },
"image": "https://yoursite.com/images/anders.jpg",
"sameAs": [
"https://www.linkedin.com/in/anderskitson",
"https://github.com/anderskitson",
"https://twitter.com/anderskitson"
]
}
The sameAs links are doing the heavy lifting — they verify the author is a real person with an online footprint. Without these, the Person schema is weak.
7. FAQPage
What it does: Marks Q&A sections so AI engines can quote individual questions.
{
"@context": "https://schema.org",
"@type": "FAQPage",
"mainEntity": [
{
"@type": "Question",
"name": "How much does an AI voice agent cost?",
"acceptedAnswer": {
"@type": "Answer",
"text": "Setup ranges $2,500-$8,000, monthly retainer $150-$600, usage $0.15-$0.30 per call minute."
}
},
{
"@type": "Question",
"name": "How long does deployment take?",
"acceptedAnswer": {
"@type": "Answer",
"text": "Typical deployment is 90 days from kickoff: 2 weeks setup, 2 weeks soft launch, 4 weeks tuning, 4 weeks full rollout."
}
}
]
}
Critical rule: FAQ schema must match visible content on the page. Don't hide FAQs in schema that aren't shown to users — Google penalizes this and AI engines ignore it.
8. BreadcrumbList
What it does: Shows page hierarchy, helps AI understand where a page sits in your site.
{
"@context": "https://schema.org",
"@type": "BreadcrumbList",
"itemListElement": [
{
"@type": "ListItem",
"position": 1,
"name": "Home",
"item": "https://yoursite.com"
},
{
"@type": "ListItem",
"position": 2,
"name": "Blog",
"item": "https://yoursite.com/blog"
},
{
"@type": "ListItem",
"position": 3,
"name": "Post Title",
"item": "https://yoursite.com/blog/post-slug"
}
]
}
Small signal, easy to emit. Every non-home page should have one.
The types most sites don't need
Don't chase every schema type — the following are often suggested but rarely matter for AI search:
- WebPage — redundant if WebSite + Article are in place
- SiteNavigationElement — nav is visible; schema doesn't add much
- Speakable — for voice assistants, niche relevance
- Event — only if you host events
- Review — useful if you have them, but needs real testimonials not generic praise
- Product — only for actual e-commerce products
- Course — only for educational content
- Recipe — only for cooking content
Add these when specifically relevant, not preemptively.
The @id strategy — why cross-references matter
Notice how most of the examples above use @id:
"publisher": { "@id": "https://yoursite.com/#organization" }
Instead of re-emitting the full Organization schema inside Publisher, you reference it by @id. Benefits:
- Smaller payload (important for page weight)
- Single source of truth (update Organization once, everything updates)
- AI engines understand entity relationships — "this article is published by this organization"
Consistent @id usage is the mark of production-quality schema. Sketchy implementations duplicate full blobs everywhere.
Where to put it
JSON-LD script tags in <head> are cleanest. Next.js, Astro, and most modern frameworks make this straightforward.
Next.js 16 example:
export default function Layout({ children }) {
return (
<html>
<head>
<script
type="application/ld+json"
dangerouslySetInnerHTML={{
__html: JSON.stringify(organizationSchema())
}}
/>
</head>
<body>{children}</body>
</html>
)
}
WordPress example: Use Yoast SEO (emits basic schema automatically), Schema Pro, or RankMath for more control. Avoid manually pasting schema into posts — it's fragile.
Validation
Always validate before shipping:
- Schema Markup Validator — official Schema.org tool
- Google Rich Results Test — Google-specific, shows what rich results your page qualifies for
- Schema Debug View — Search Console shows errors on live pages
Common errors:
- Missing required fields (
image,datePublished, etc.) - Wrong data types (string where object expected)
- Broken URL references in
sameAs @idmismatches — same ID used differently on different pages
Fix all validator errors. AI engines skip pages with invalid JSON-LD, not "try to parse anyway."
Common mistakes
Stuffing keywords in schema fields
"AI agency Edmonton AI voice agents AI SEO best Edmonton AI agency" in a name field gets flagged. Use normal language.
Using schema to hide content
FAQ schema with Q&A that isn't visible on the page → penalty. Don't do it.
Forgetting to update dateModified
Static datePublished is fine. Static dateModified on a post you edited last week tells AI engines nothing has changed. Use file mtime or manual updates.
Inconsistent @id across pages
If homepage says "@id": "https://yoursite.com/#organization" and blog page says "@id": "https://yoursite.com/about/#organization", you have two entities from the AI's perspective. Keep IDs consistent.
Omitting sameAs
An Organization or Person without sameAs links is an isolated node. AI engines can't verify you exist as a real entity. Always include sameAs with links to authoritative profiles.
Copy-pasting competitor schema
Schema must describe YOUR business accurately. Don't inherit competitor field values.
Testing AI engine understanding
Beyond technical validators, test whether AI engines actually parse your schema:
- Ask ChatGPT: "What does [yoursite.com] do? Who runs it? Where are they located?"
- Ask Perplexity: "Tell me about [your business name]."
- Ask Gemini: "Is [yoursite.com] a legitimate business?"
If responses match what you've declared in schema, it's working. If the AI makes up details or contradicts what's in your schema, something is off — check validation, check that your schema loads (not blocked by CSP or delayed by JS), and check that AI-accessible crawlers can reach it (not blocked in robots.txt).
Frequently asked questions
Does schema actually affect AI search results?
Yes, increasingly so in 2026. Perplexity gives noticeable weight to structured data. ChatGPT uses schema when extracting facts during live browsing. Gemini is Google — structured data is central. Claude's impact is less documented but trending positive. All four benefit from clean schema.
Is schema only for Google?
No. That was true in 2012. In 2026, AI engines, voice assistants (Siri, Alexa), app previews (WhatsApp, Slack), and search engines all consume schema. It's the universal machine-readable metadata layer.
Do I need schema on every page?
Organization and WebSite only need to be on the home page (or globally in a layout). Other types are per-page (Article on posts, Service on service pages, Product on product pages). BreadcrumbList goes on every non-home page.
How do I add schema without a developer?
WordPress: Yoast, Schema Pro, or RankMath plugins. Squarespace: limited built-in + manual code injection. Shopify: default schema for products; manual for others. For anything beyond basic, you'll eventually want developer help.
What about GPT mentions of my business being wrong?
AI engines sometimes hallucinate based on partial information. Clean schema + llms.txt + consistent facts across your web presence (Google Business Profile, directories, social) reduce this. If ChatGPT says something wrong about you, check what it's pulling from — the error is almost always traceable to an external source with outdated or wrong info.
Does too much schema hurt?
Only if it's inaccurate. A page with 10 schema types that all accurately describe the content is fine. A page with 1 schema type that's inaccurate is worse than none.
Do I need schema if I have llms.txt?
Yes, they do different things. Schema describes individual pages in machine-readable structure. llms.txt is a curated index of your site. Use both.
What's the single most important schema for most Edmonton businesses?
LocalBusiness (with correct subtype) on the home page. For local service businesses, it's the single biggest schema lever for local search and AI search.
Want a schema audit for your site? We'll check every schema block, validate against AI engine requirements, and ship fixes. Book a free consult or see our AI SEO Edmonton service.
Get the Autonomous Enterprise Blueprint
A 14-page architectural guide covering the Agency7 mandate, the fractured pipeline, agentic ledgers, and the generative engine optimization playbook — delivered as a PDF to your inbox.