VisiblyRank
All posts
By VisiblyRankSchemaTechnicalGuides

Schema markup for AI search: what to add and what to expect

Structured data helps search engines understand your pages, but it isn't a switch for AI citations. Which schema types to add per template, how to implement them, and how to test whether they changed anything.

Schema markup gets sold as an AI SEO shortcut. Add the right JSON-LD and ChatGPT will understand you. The reality is more modest and, honestly, more useful. Structured data is a clear, machine-readable statement of facts you already show on the page. It helps search engines, and it may help AI systems that read your HTML. None of the big AI engines has documented it as a ranking factor for citations, and Google's guidance for AI Overviews says structured data isn't required to appear there.

So we treat it as hygiene. Done right, it removes ambiguity. Done wrong, it adds a second, conflicting version of your facts. Here's how we approach it.

What structured data does and doesn't do

Google supports structured data for rich results and to understand page content, and it recommends JSON-LD. Its AI features guidance adds one thing worth repeating: make sure the markup matches what's visible on the page.

For engines like ChatGPT, Perplexity, and Claude, there's no public documentation saying they parse schema.org markup when choosing sources. Their crawlers do fetch your HTML, and JSON-LD sits in that HTML as readable text, so it's plausible it gets seen. Plausible isn't proven, and we don't promise more.

What we can say with confidence is narrower. Schema helps engines that depend on search indexes, and it gives you one canonical, structured place for facts like your product name, price, and publish date. That discipline alone tends to catch inconsistencies across a site.

Step 1: inventory your templates

Don't think in pages, think in templates. Most sites have a handful: homepage, product or feature pages, pricing, blog articles, docs, comparison pages, location pages if you have them. List them and note what facts each one shows.

Step 2: pick types per template

A sensible starting map:

  • Homepage and about page: Organization, with your legal name, logo, URL, and sameAs links to the profiles you actually control. This is the entity anchor for everything else.
  • Product pages: Product or SoftwareApplication, with an Offer if the price is shown on the page. Leave the price out of the markup if it isn't on the page.
  • Articles and guides: Article or BlogPosting, with author, datePublished, and an honest dateModified.
  • All pages: BreadcrumbList, which costs little and clarifies site structure.
  • Q&A sections: FAQPage is still valid schema, but be aware that Google limited FAQ rich results to a small set of authoritative government and health sites in 2023. Add it if the content is a real FAQ. Don't add it hoping for a rich result.
  • Reviews: be careful. Google doesn't show review rich results for self-serving reviews of your own organization. Marking up testimonials you picked yourself is a bad idea for Google and adds nothing anywhere else.

Skip anything that doesn't describe what's visibly on the page. More types isn't better.

Step 3: implement it server-side

Put JSON-LD in the server-rendered HTML, generated from the same data source that renders the visible content. Two rules keep you out of trouble.

First, one source of truth. If the price on the page comes from your CMS, the price in the markup should come from the same field. Hand-edited markup drifts, and stale schema is worse than none.

Second, don't inject it with client-side JavaScript if you can avoid it. Google can render JavaScript, but many AI crawlers fetch raw HTML and don't. Markup that only exists after scripts run may never be seen by them.

Step 4: validate

Run representative URLs from each template through Google's Rich Results Test and the Schema Markup Validator at validator.schema.org. The first tells you what Google can use. The second checks the markup against the schema.org vocabulary more broadly. Fix errors first, then warnings that point at missing facts you actually have.

Then do a manual check that's easy to forget: open the page and confirm every value in the markup is visible and current. Name, price, dates, author. If any of them differ, fix the page or the markup until they agree.

Step 5: test whether it changed anything

This is where most schema projects stop, and where ours start getting interesting. You shipped markup across a template. Did it make any difference to AI visibility?

Set it up like an experiment. Pick a group of pages that got the change and a comparable group that didn't. Note the tracked prompts each group should be cited for. Ship, wait for recrawls, then compare.

We run that comparison in Promptwatch. Agent Analytics is the first half of it: AI crawler logs show whether OAI-SearchBot, PerplexityBot, ClaudeBot, and the others have refetched the changed pages since the deploy, so you're not judging a change no bot has seen yet. Page-level citation analytics is the second half: it shows whether those specific URLs started appearing as sources in the tracked prompts, compared with the pages you left alone.

Be honest about attribution. Other things change at the same time, including competitor pages, engine updates, and your own content edits. If the changed group moves and the control group doesn't, that's a reasonable signal. If both move, schema probably wasn't the reason.

Where schema fits

In our audits structured data sits after crawler access and page content, and next to other technical hygiene. It's worth doing properly because it's cheap to maintain once it's generated from your CMS, and it keeps your facts consistent. Just don't let anyone sell it to you as the thing that gets you cited. Clear pages and good sources do that. Schema helps engines read them correctly.