aeo-structured-data
AEO Structured Data
Structured data (schema markup) tells AI engines what your content represents. Without it, AI engines guess. With it, they extract accurately. Schema markup is the single fastest AEO win — it takes 30 minutes per page and dramatically improves citation accuracy.
For AEO, structured data serves a different purpose than for SEO. In SEO, schema earns rich results (stars, FAQs, breadcrumbs in Google). In AEO, schema makes content extractable — it tells AI crawlers "this is a question-answer pair" or "this is a step-by-step process" so they can lift it cleanly.
Schema Types by Page Type
Every page type has a primary and secondary schema. Apply both.
| Page type | Primary schema | Secondary schema | Why |
|---|---|---|---|
| Category definition | FAQPage |
Article + Organization |
Marks Q&A pairs for extraction + establishes entity |
| Comparison (X vs Y) | FAQPage |
Article |
Comparison questions are top AI queries |
| How-to / tutorial | HowTo |
Article |
Enables step-by-step extraction |
| Pricing page | Product with offers |
FAQPage |
Structures pricing data for factual extraction |
| Integration page | SoftwareApplication |
HowTo |
Marks integration as factual + setup steps |
| Blog post / article | Article |
FAQPage (if FAQ section present) |
Author + date signals recency |
| Product / feature page | SoftwareApplication |
FAQPage |
Marks product attributes for extraction |
| Glossary page | DefinedTermSet |
FAQPage |
Marks definitions for extraction |
| Case study | Article |
Organization |
Attribution + entity |
| All pages (site-wide) | Organization |
WebSite with SearchAction |
Establishes site-level entity identity |
Schema Implementation Rules
Required fields (every schema)
These fields must be present on every schema implementation. Missing any one reduces extraction quality.
| Field | Why it matters for AEO | Example |
|---|---|---|
@context |
Validates the schema | "https://schema.org" |
@type |
Tells engines what the content is | "FAQPage", "HowTo", "Article" |
name or headline |
The primary identifier | "How to Set Up Lead Scoring in HubSpot" |
datePublished |
Establishes when content was created | "2026-01-15" |
dateModified |
Recency signal — AI engines weight this heavily | "2026-04-28" |
author |
Trust signal — anonymous content ranks lower | {"@type": "Person", "name": "Jane Kim"} |
dateModified is the single most important AEO schema field. AI engines heavily weight recency. Update this field every time you edit the page. Never fake it — set it to the actual last-edit date.
Format: JSON-LD only
- Always use JSON-LD format (
<script type="application/ld+json">) - Never use Microdata or RDFa. JSON-LD is the standard all AI engines parse reliably
- Place JSON-LD in the
<head>section, not the body - One
<script>block per schema type. Multiple schemas on one page = multiple script blocks
Schema Templates
FAQPage
Use for any page with a question-answer section. The highest-value AEO schema.
{
"@context": "https://schema.org",
"@type": "FAQPage",
"mainEntity": [
{
"@type": "Question",
"name": "What is revenue intelligence?",
"acceptedAnswer": {
"@type": "Answer",
"text": "Revenue intelligence is a category of software that captures and analyzes customer interaction data — calls, emails, meetings — to surface insights that help sales teams close more deals. It combines conversation intelligence, deal analytics, and forecasting into a single platform."
}
},
{
"@type": "Question",
"name": "How much does revenue intelligence software cost?",
"acceptedAnswer": {
"@type": "Answer",
"text": "Revenue intelligence platforms typically cost $50-150 per user per month. Enterprise plans with custom integrations and unlimited storage start at $200+ per user per month. Most vendors require annual contracts with a minimum of 10-25 seats."
}
}
]
}
Rules:
- Schema text must exactly match visible page content. No hidden Q&A pairs
- 5-12 questions per
FAQPage. Fewer than 5 is too thin. More than 12 risks Google ignoring the schema - Each answer: 2-4 sentences, self-contained, factual
Article
Use for blog posts, guides, comparison pages, and any editorial content.
{
"@context": "https://schema.org",
"@type": "Article",
"headline": "Notion vs Confluence: Which Is Better for Your Team?",
"author": {
"@type": "Person",
"name": "Jane Kim",
"url": "https://example.com/team/jane-kim"
},
"publisher": {
"@type": "Organization",
"name": "Acme",
"logo": {
"@type": "ImageObject",
"url": "https://example.com/logo.png"
}
},
"datePublished": "2026-01-15",
"dateModified": "2026-04-28",
"description": "A detailed comparison of Notion and Confluence for team collaboration, covering features, pricing, integrations, and best use cases."
}
Rules:
- Always include a real
authorwith a name and URL. Anonymous articles rank lower in AI engines dateModifiedmust reflect the actual last edit. AI engines compare this across competing sourcesdescriptionshould be a single, extractable summary sentence
HowTo
Use for tutorials, setup guides, and step-by-step processes.
{
"@context": "https://schema.org",
"@type": "HowTo",
"name": "How to Set Up Lead Scoring in HubSpot",
"description": "A step-by-step guide to configuring lead scoring in HubSpot using contact properties, engagement data, and custom criteria.",
"step": [
{
"@type": "HowToStep",
"name": "Define scoring criteria",
"text": "Navigate to Settings > Properties > Contact scoring. Define positive score attributes (job title match, company size, page visits) and negative attributes (competitor domain, unsubscribed, inactive 90+ days)."
},
{
"@type": "HowToStep",
"name": "Set score thresholds",
"text": "Set the MQL threshold at 50 points and the SQL threshold at 80 points. These thresholds determine when a lead is routed to sales."
}
],
"totalTime": "PT30M"
}
Rules:
- Each step must be self-contained. AI engines may extract individual steps
- Include
totalTimewhen applicable — AI engines surface this in answers - 3-10 steps. Fewer is too thin. More than 10 should be split into separate guides
Product (with offers)
Use for pricing pages and product overview pages.
{
"@context": "https://schema.org",
"@type": "Product",
"name": "Acme CRM",
"description": "Acme CRM is a sales CRM built for B2B SaaS teams with built-in sequencing, pipeline management, and revenue forecasting.",
"brand": {
"@type": "Organization",
"name": "Acme"
},
"offers": [
{
"@type": "Offer",
"name": "Starter",
"price": "29",
"priceCurrency": "USD",
"priceSpecification": {
"@type": "UnitPriceSpecification",
"price": "29",
"priceCurrency": "USD",
"referenceQuantity": {
"@type": "QuantitativeValue",
"value": "1",
"unitText": "user/month"
}
}
}
]
}
Organization (site-wide)
Apply to every page. Establishes entity identity across the site.
{
"@context": "https://schema.org",
"@type": "Organization",
"name": "Acme",
"url": "https://acme.com",
"logo": "https://acme.com/logo.png",
"sameAs": [
"https://www.linkedin.com/company/acme",
"https://twitter.com/acme",
"https://github.com/acme"
]
}
Rules:
namemust be the exact brand name used consistently across all pagessameAslinks to official social profiles. AI engines use these for entity disambiguation- Place in site-wide template so it appears on every page
Validation and Testing
Before publishing
| Check | Tool | Pass criteria |
|---|---|---|
| Schema validity | Google Rich Results Test | No errors, all entities detected |
| Schema-content match | Manual review | Every schema text matches visible page content exactly |
| Required fields present | Schema.org validator | All required fields populated |
| JSON-LD syntax | JSON validator | Valid JSON, no trailing commas or syntax errors |
After publishing
| Check | Frequency | Tool |
|---|---|---|
| Rich results appearing | 1 week post-publish | Google Search Console → Enhancements |
| AI engine extraction accuracy | Monthly | Manual testing in ChatGPT, Perplexity, Gemini |
| Schema errors | Weekly | Google Search Console → Enhancements → Errors |
Common Mistakes
| Mistake | Impact | Fix |
|---|---|---|
No dateModified |
AI engines can't assess recency | Add to every page, update on every edit |
| Schema text doesn't match page | Google penalty, AI distrust | Always sync schema with visible content |
| Using Microdata instead of JSON-LD | Inconsistent parsing | Convert all to JSON-LD |
Missing author on articles |
Lower trust signal | Add real person with name and URL |
FAQPage on non-FAQ content |
Schema misuse penalty | Only use for genuine question-answer pairs |
| Same schema on every page | Missed extraction opportunities | Match schema type to page type |
| Never validating after deploy | Silent errors accumulate | Monthly validation in Google Rich Results Test |
| Placing JSON-LD in body | Parsing issues | Move to <head> section |
Pre-Publish Checklist
- [ ] Primary schema type selected based on page type
- [ ] Secondary schema type added where applicable
- [ ] JSON-LD format used (not Microdata or RDFa)
- [ ]
datePublishedanddateModifiedpresent and accurate - [ ]
authorfield includes real person name and URL - [ ]
Organizationschema present site-wide - [ ] Schema text exactly matches visible page content
- [ ] Validated with Google Rich Results Test — no errors
- [ ] JSON syntax validated — no trailing commas or errors
- [ ] Schema placed in
<head>section - [ ]
sameAslinks to official social profiles present in Organization schema
Anti-Pattern Check
- Pages with no schema markup at all → Start with
FAQPageon your top 5 AEO-priority pages. Takes 30 minutes each and has the highest impact-to-effort ratio dateModifiedset to publish date and never updated → This tells AI engines the content is stale. UpdatedateModifiedevery time you edit the page, even for minor changes- Schema on 3 pages but not on the other 97 → Inconsistent schema coverage weakens entity signals. Add
Organizationsite-wide first, then roll out page-specific schemas systematically - FAQ schema with 25 questions → Too many. Google may ignore the schema entirely. Cap at 12. Move additional Q&A to a separate FAQ page
- Using schema as an SEO hack without improving content → Schema tells engines what your content IS. If the content is thin, schema just highlights the thinness. Fix content first, then add schema
- Never testing in AI engines after adding schema → The point of AEO schema is AI extraction. After adding schema, test the page's target query in ChatGPT and Perplexity within 2-4 weeks to verify improved citation