Schema Markup That Answer Engines Actually Use
Skip schema soup. Ship accurate Organization, FAQ, Article, and LocalBusiness JSON-LD that helps answer engines trust and cite your pages.
The best schema markup for AI search is accurate, sparse, and tied to visible content — not a kitchen-sink JSON-LD blob that claims every Schema.org type. Answer engines and classic rich results both punish nonsense; they reward Organization identity, honest FAQs, and article metadata that matches the page.
This spoke is the schema layer of the AEO playbook. Implement it alongside llms.txt and entity architecture.
What schema does (and does not) do for AEO
JSON-LD tells machines the type and attributes of things on the page. It will not force ChatGPT to cite you. It will:
- Reduce ambiguity about who the publisher/organization is
- Connect profiles via
sameAs - Label Q&A, products, and local businesses in a standard vocabulary
- Help search features that still power part of the discovery funnel into AI surfaces
If your visible copy says one founding year and your schema says another, you trained the web to distrust you.
Priority types for most brands
Organization (or LocalBusiness / ProfessionalService)
On the homepage or a dedicated About URL:
@type,name,url,logo,descriptionsameAsfor real profilescontactPointoraddress/areaServedwhen accuratefounderwhen the person is public and linked
Local operators should prefer the most specific LocalBusiness subtype that fits — and keep NAP identical to GBP. See Local Business AEO.
WebSite + SearchAction (optional)
Useful when you have on-site search you want exposed. Skip fake SearchAction.
Article / BlogPosting
On posts: headline, datePublished, dateModified, author (Person), publisher (Organization), image, description. dateModified matters when you refresh AEO content.
FAQPage
Only when the page visibly contains those questions and answers. FAQ schema for AEO is powerful when honest and a liability when stuffed.
Product / Offer / Service
When you sell named products or packages with public attributes. Do not mark up every paragraph as a Product.
BreadcrumbList
Helps document structure; low drama, usually worth shipping if accurate.
FAQ schema for AEO — rules of thumb
- Questions must appear on the page as user-visible text.
- Answers should be concise and match the visible answer.
- Prefer FAQs that mirror real buyer questions from sales and search.
- Do not duplicate 40 sitewide FAQs on every URL.
- Validate after every template change.
Answer-first blog posts in your content clusters are natural FAQ hosts when you already wrote the Q&A section for humans.
Anti-patterns (schema soup)
- Marking the whole site as
Product AggregateRatingwithout real reviews- Empty
sameAsor links to 404s - Copy-pasting competitor schema
- Five overlapping
@typearrays that contradict - Hidden text that exists only for markup
Delete invalid markup. Nothing is better than wrong things.
Implementation checklist
- Inventory current JSON-LD (view source or crawler).
- Define canonical Organization attributes from the fact sheet.
- Ship Organization on the primary entity URL; reference it from articles via
publisher. - Add Article markup to templates, not by hand per post when possible.
- Add FAQPage only on templates that render FAQs.
- Validate with Google’s rich results / schema testing tools.
- Re-crawl after deploy; spot-check three URLs monthly.
- Align with
llms.txtso names and offers match.
How this shows up in AI answers
When retrieval pulls your page, clean entity markup makes it easier to bind attributes to the correct organization. When multiple sources conflict, consistent schema + HTML is one more vote for your version of the facts. It is necessary hygiene, not a magic citation button.
Example Organization JSON-LD (annotated)
{
"@context": "https://schema.org",
"@type": "Organization",
"name": "Example Coatings Co",
"url": "https://example.com",
"logo": "https://example.com/logo.png",
"description": "Industrial powder coating for aerospace subcontractors in the Midwest.",
"foundingDate": "1998",
"sameAs": [
"https://www.linkedin.com/company/example-coatings",
"https://www.wikidata.org/wiki/Q000000"
],
"areaServed": "US-Midwest",
"contactPoint": [{
"@type": "ContactPoint",
"contactType": "sales",
"email": "hello@example.com"
}]
}
Only include Wikidata if the item is real. Only include email if you want it public. Mirror description on the About page.
Example FAQPage pairing
Visible HTML:
Do you coat parts longer than 3 meters?
Yes — our line accepts parts up to 4 meters with advance scheduling.
JSON-LD mainEntity must use the same question text and the same answer meaning. If editors change the HTML and forget schema, rip out FAQPage until the template syncs again.
LocalBusiness extras worth doing
openingHoursSpecificationmatching GBPgeocoordinates that match the pinpriceRangeonly if honesthasOfferCatalogwhen services are stably named
Multi-location: one LocalBusiness (or more specific type) per location page, with parentOrganization pointing at the brand Organization.
Engineering tips for Astro/Next/etc.
- Generate JSON-LD from a single typed config module so marketing cannot freestyle conflicting founding years
- Unit-test that required keys exist in CI
- Avoid duplicating Organization on every blog post; reference
publisherwith@id - Log schema validation failures in preview deploys
Review cadence with content
When a spoke post adds FAQs, the content checklist should include “schema updated or template covers it.” When a product renames, schema name / alternateName ships in the same PR as the page title. AEO breaks in the seams between teams.
What answer engines ignore
They ignore decorative markup that does not match content. They ignore fifty random @type values. They ignore ratings you fabricated. Focus on identity, authorship, and honest Q&A — then measure citations, not rich-result vanity.
Author and publisher consistency
Blog templates should emit:
authoras Person with name + url to a real biopublisheras Organization with@idmatching the sitewide Organization node- Stable
@idvalues so entities do not multiply (https://example.com/#organization)
Guest authors need their own Person pages or the markup should reflect staff authors only. Fake author entities are a trust problem for both Google and AI systems summarizing “who wrote this.”
How much schema is enough for a launch week?
Minimum viable AEO schema pack:
- Organization on the homepage (or About) with
sameAs - WebSite on the homepage
- Article/BlogPosting on the blog template
- FAQPage only on URLs that render FAQs
- LocalBusiness on location templates if local
Everything else is optional until the minimum validates cleanly in production. Teams that start with Product + Review + HowTo + Speakable on day one usually ship broken JSON and spend the week firefighting.
Speakable and other experimental types
Be conservative. If a type is poorly supported or easy to misuse, skip it. AEO gains come from identity clarity and honest FAQs more than exotic types. Revisit experimental markup quarterly, not during an emergency rewrite.
Coordinating with developers
Write acceptance criteria in tickets:
- Given the About page, Organization JSON-LD includes foundingDate matching the visible copy
- Given a blog post update, dateModified changes
- Given FAQ removal from a page, FAQPage disappears
Attach failing rich-results screenshots. Developers ship what is tested.
Schema and internationalization
Translated pages need schema in the page language with correct inLanguage. Do not leave English Organization descriptions on Spanish pages. Hreflang remains an SEO concern; schema language mismatches create avoidable confusion for multilingual retrieval.
Implementation notes: staging vs production
Validate schema on staging with production-like URLs where possible. Many bugs only appear when @id values point at localhost or preview hostnames that then get copied to production. After deploy, re-fetch the live HTML — CDNs and page caches serve old JSON-LD longer than teams expect.
Also watch for duplicate injections: a theme plugin plus a custom component both printing Organization creates conflicts. View source and count <script type="application/ld+json"> blocks on a sample of templates. Two thoughtful blocks beat six accidental ones.
When marketing experiments with a landing page builder outside the main CMS, assume schema is missing until proven otherwise. Orphan builders are frequent AEO blind spots.
Worked failure: FAQ schema without FAQ content
A SaaS marketing site injected sitewide FAQ schema from a tag manager while the visible FAQ lived only on pricing. Rich result tests flickered; AI systems that grounded on the page saw mismatched Q&A. The fix was deleting the global injection and emitting FAQPage only from the pricing template. Citations did not magically spike the next day — but a confusing trust signal disappeared, and the pricing FAQ became safe to expand.
Moral: schema is not a place to stash copy you were too lazy to render.
Practical week-one kit
Export current JSON-LD from five templates (home, about, one service, one article, one FAQ page). Paste into a validator. File every error. Ship Organization and Article fixes before any exotic types. Update the fact sheet so engineering and marketing argue from the same founding year. Re-crawl after deploy. Only then discuss Product or HowTo markup. Sequence prevents schema soup from returning the week after the cleanup.
Repeat the kit after major launches. The cost of re-baselining is tiny compared with a quarter of unmeasured content. Keep owners named in the sheet. When someone goes on leave, transfer the ritual explicitly — AEO dies in the handoff gaps. If you need a second pair of eyes, the visibility lane exists for that reason: /visibility and the visibility audit path turn these kits into a managed baseline with a 30/60/90 plan. Either way, ship the ritual before you buy another dashboard logo.
Final reminder on honesty
If you remember one rule from this spoke: never mark up what the user cannot see. Answer engines and search systems both treat that mismatch as a smell. Accurate Organization data, honest FAQs, and Article dates that match reality will outperform a decorative graph every quarter you measure.
FAQ
What is the best schema markup for AI search?
Start with accurate Organization (or LocalBusiness), Article on posts, and FAQPage only where real FAQs exist. Add Product/Service when offers are concrete. Accuracy beats coverage.
Does FAQ schema help AEO?
Yes when the FAQ content is genuine and useful — models and search features can both use clear Q&A. Fake FAQ schema risks trust and manual actions; skip it.
Should every page have Organization schema?
Prefer one strong Organization definition and reference it. Repeating slightly different Organization blocks on every URL creates drift.
Is JSON-LD better than microdata for AEO?
JSON-LD is easier to maintain in modern stacks and is what we ship by default. Consistency and validity matter more than the encoding flavor.
Can schema fix hallucinations?
It helps encode the correct facts; you still need HTML agreement and off-site cleanup. See Avoiding Hallucinated Brand Facts.
How often should we validate schema?
After template deploys and quarterly as a full audit item. Include it in the AEO audit checklist.
Closing
Ship less schema, make it true, keep it aligned with the page and llms.txt. That is markup answer engines can use.
Return to the AEO playbook for the full stack. For a schema + citation baseline on your domain, visit /visibility or request a visibility audit.