Schema Markup for AI Citations: The Complete Guide

Arber X · March 27, 2026 · 6 min read

Schema markup is the single highest-weighted factor in our AEO scoring framework. Out of 13 factors we measure, structured data carries 12 out of 100 possible points. And in our real monitoring data, the gap between sites with strong schema and sites without it is stark.

This guide is technical. It assumes you know enough HTML to add a script tag, or you work with someone who does.

What the data shows

The @ainyc/aeo-audit tool scores any website's schema implementation (you give it a URL, it returns a score out of 100 across 13 factors). We then correlate those scores with citation outcomes tracked by canonry, which monitors whether AI models actually mention a business in their answers. Here is a real comparison:

Schema factorCited site (90/100 overall)Uncited site (48/100 overall)
Structured Data100 (A+)42 (F)
Schema Completeness100 (A+)55 (F)

The cited site has 9 JSON-LD blocks: LocalBusiness, FAQPage, Service, HowTo, and more. The uncited site has 6 blocks but they are incomplete, missing required properties and lacking entity connections between schemas.

The cited site gets recommended on 5 of 11 tracked keywords across 66 monitoring runs. The uncited site: 0 of 23.

Schema alone does not guarantee citation. But the absence of good schema almost guarantees you will not be cited.

Why schema matters more for AI than for traditional SEO

Google has used structured data for years to power rich snippets and knowledge panels. But Google also has a massive knowledge graph and 25 years of link analysis to fall back on if your schema is missing or incomplete.

AI models do not have that fallback. When Gemini is grounding an answer, or ChatGPT is browsing the web, or Perplexity is running real-time search, or Claude is pulling web results, and your site has LocalBusiness schema with areaServed, serviceType, and address properties, any of those models can match you to the query with high confidence. Without schema, they have to parse your HTML and hope the relevant facts are extractable.

The audit data backs this up. Content depth (word count, headings) only partially compensates for missing schema. The uncited site in the comparison scores 72/100 on content depth but 42/100 on structured data. The content exists, but the model cannot efficiently extract the entity facts it needs.

The four schemas every business needs

1. LocalBusiness (or Organization)

The foundation. Tells AI who you are, where you are, and how to reach you.

{
  "@context": "https://schema.org",
  "@type": "LocalBusiness",
  "name": "Your Business Name",
  "description": "A clear one-sentence description of what your business does",
  "url": "https://yourbusiness.com",
  "telephone": "+1-555-123-4567",
  "email": "hello@yourbusiness.com",
  "address": {
    "@type": "PostalAddress",
    "streetAddress": "123 Main St",
    "addressLocality": "New York",
    "addressRegion": "NY",
    "postalCode": "10001",
    "addressCountry": "US"
  },
  "geo": {
    "@type": "GeoCoordinates",
    "latitude": 40.7128,
    "longitude": -74.0060
  },
  "areaServed": [
    { "@type": "City", "name": "New York" },
    { "@type": "State", "name": "New York" }
  ],
  "openingHoursSpecification": {
    "@type": "OpeningHoursSpecification",
    "dayOfWeek": ["Monday", "Tuesday", "Wednesday", "Thursday", "Friday"],
    "opens": "09:00",
    "closes": "17:00"
  },
  "sameAs": [
    "https://www.google.com/maps/place/your-business",
    "https://www.yelp.com/biz/your-business",
    "https://www.linkedin.com/company/your-business"
  ]
}

Properties AI models actually use:

  • name and description are the first things models extract
  • areaServed is critical for location queries. Without it, the model does not know where you operate. Schema.org areaServed docs cover accepted formats.
  • sameAs links help with entity resolution, connecting your website to other platform profiles
  • geo coordinates remove location ambiguity

Use Schema.org's LocalBusiness subtypes for specificity: RoofingContractor, Dentist, LegalService, RealEstateAgent, etc.

2. Service

Connects what you do to who you are.

{
  "@context": "https://schema.org",
  "@type": "Service",
  "name": "Commercial Roof Coating",
  "description": "Industrial-grade polyurea roof coating for commercial flat roofs. Extends roof life 20+ years.",
  "provider": {
    "@type": "LocalBusiness",
    "name": "Your Business Name",
    "url": "https://yourbusiness.com"
  },
  "areaServed": { "@type": "State", "name": "New York" },
  "serviceType": "Roof Coating"
}

The provider property links Service to your LocalBusiness entity. Without it, the schema describes a service floating in space with no connection to your business. Models need that connection to build a recommendation.

3. FAQPage

Directly extractable Q&A format. One of the highest-impact schemas for AI because models can pull answers verbatim.

{
  "@context": "https://schema.org",
  "@type": "FAQPage",
  "mainEntity": [
    {
      "@type": "Question",
      "name": "How much does commercial roof coating cost?",
      "acceptedAnswer": {
        "@type": "Answer",
        "text": "Commercial roof coating typically costs $3-$7 per square foot. A 10,000 sq ft flat roof usually runs $30,000-$70,000 for a complete polyurea system."
      }
    }
  ]
}

Google's FAQPage documentation has the full spec. Use questions people actually ask AI, not marketing questions. AnswerThePublic and AlsoAsked help you find real questions.

4. Person

E-E-A-T signal. Explicitly declares who has expertise and in what.

{
  "@context": "https://schema.org",
  "@type": "Person",
  "name": "Founder Name",
  "jobTitle": "Founder & CEO",
  "worksFor": {
    "@type": "LocalBusiness",
    "name": "Your Business Name"
  },
  "knowsAbout": ["commercial roofing", "polyurea coatings", "industrial waterproofing"],
  "sameAs": ["https://www.linkedin.com/in/founder-name"]
}

The knowsAbout array connects a real person to topic expertise. Models use this for authority scoring. The uncited site in the comparison scores 25/100 on E-E-A-T because it has no author attribution or Person schema.

Bonus schemas that give you an edge

AggregateRating (nest inside LocalBusiness):

{ "@type": "AggregateRating", "ratingValue": "4.8", "reviewCount": "47", "bestRating": "5" }

HowTo (for process-oriented content):

{
  "@type": "HowTo",
  "name": "How Commercial Roof Coating Is Applied",
  "step": [
    { "@type": "HowToStep", "name": "Inspection", "text": "Complete assessment of current roof condition." },
    { "@type": "HowToStep", "name": "Surface Prep", "text": "Power washing, repair, and primer application." }
  ]
}

Article (for blog posts, signals authorship and freshness):

{
  "@type": "Article",
  "headline": "Title",
  "author": { "@type": "Person", "name": "Author" },
  "datePublished": "2026-03-27",
  "dateModified": "2026-03-27"
}

Implementation by platform

WordPress

Most WordPress SEO plugins (Yoast, Rank Math, All in One SEO) handle Organization schema automatically. For LocalBusiness and Service, you can use plugin extensions or add custom JSON-LD via a code snippets plugin like "Insert Headers and Footers" or "WPCode."

Next.js / React

Add JSON-LD directly in components:

<script
  type="application/ld+json"
  dangerouslySetInnerHTML={{ __html: JSON.stringify(schemaData) }}
/>

Or use next-seo and schema-dts for type safety.

Shopify

Edit theme.liquid to add JSON-LD in the <head>, or use JSON-LD for SEO.

Any platform

Add <script type="application/ld+json"> in your page <head>. No build tools required.

Validation

Always validate before deploying:

  1. Google Rich Results Test for Google compatibility
  2. Schema.org Validator for structural correctness
  3. JSON-LD Playground for complex nesting issues

Run all three. Google's tool only validates types they support for rich results. Schema.org catches issues Google misses.

Measuring schema impact

Adding schema is not a set-and-forget task. You need to verify it works and track whether it changes your citation outcomes.

The recommended workflow:

  1. Audit before. Run aeo-audit and note your Structured Data and Schema Completeness scores:
npx @ainyc/aeo-audit@latest "https://yourbusiness.com" --format json
  1. Implement schema. Deploy using the examples above.
  2. Audit after. Run aeo-audit again. Your Structured Data score should jump. If it does not, the validator will tell you what is missing.
  3. Monitor citation changes. Set up canonry to track whether ChatGPT, Gemini, Claude, and Perplexity start citing you for your target queries over the following weeks.

The audit gives you the before/after on technical readiness. The monitoring gives you the actual citation impact. Both are open source.

Common mistakes

  • Using Microdata instead of JSON-LD. JSON-LD is what Google recommends and what AI models parse most reliably.
  • Incomplete schemas. LocalBusiness with just a name and no address or service area is almost useless. Fill out every relevant property. The aeo-audit Schema Completeness factor catches this.
  • Schema that contradicts page content. If schema says New York but page content says Los Angeles, models flag the inconsistency.
  • No entity connections. Service schema should reference LocalBusiness via provider. Person via worksFor. These connections build the entity graph models use for recommendations.
  • Forgetting to re-audit. Schema is not static. As you add pages and services, re-run the audit to make sure new content has matching schema.
Does schema markup directly cause AI citations?

Not directly, but in our monitoring data, the site with perfect schema scores (100/100 on structured data and schema completeness) gets cited on 5 of 11 keywords. The site scoring 42/100 on structured data gets cited on 0 of 23. The correlation is strong.

Which schema types matter most for AI?

Based on our audit scoring: LocalBusiness (or Organization), Service, FAQPage, and Person. These carry the highest weight because they give models the core entity facts needed for recommendations.

Can I add schema to any website platform?

Yes. JSON-LD goes in a script tag in your page HTML. WordPress, Shopify, Next.js, Squarespace, and Webflow all support this either natively, through plugins, or by editing page templates.

How do I test my schema markup?

Use Google's Rich Results Test (search.google.com/test/rich-results) for Google compatibility, Schema.org's validator (validator.schema.org) for general validation, and our aeo-audit tool for AI-specific scoring. All three are free.

Does schema replace content optimization?

No. In our scoring framework, structured data is the highest-weighted single factor (12/100) but content depth (10/100), extractability (6/100), and definition blocks (6/100) together outweigh it. You need both.

Try it yourself.

Run a free AEO audit to see how your site scores, or explore the tools and pages referenced in this article.