Schema Markup for AI Citations: The Complete Guide

Arber Xhindoli · March 27, 2026 · 6 min read

Structured Data has the highest base weight in our current AEO scoring model. It is one of 16 onsite technical signals, and it gives machines a clearer description of a business and its services. The historical comparison below shows a strong association, not proof of causation.

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

Canonry's free onsite technical audit scores a webpage's schema implementation and returns a score out of 100 across 16 factors. We then correlate those scores with citation outcomes tracked by canonry, the agent-first operating system for AEO that runs scheduled agents to record 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. Missing or contradictory schema can leave important business facts harder to verify, especially when the visible page is also unclear.

Why schema matters more for AI than for traditional SEO

Google has used structured data for years to support rich results and other features. It is one useful representation of the information on a page.

The detailed retrieval paths of AI products are not public and can change. When a site includes LocalBusiness schema with areaServed, serviceType, and address properties that agree with its visible copy, it provides a clearer source of business facts. Without schema, systems must rely more heavily on the page's HTML and other sources.

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 the free onsite technical audit and note your Structured Data and Schema Completeness scores.
  2. Implement schema. Deploy using the examples above.
  3. Audit after. Run the onsite technical audit again and compare the Structured Data and Schema Completeness findings. If the result is not what you expect, use the validator to check the markup.
  4. 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.

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 Schema Completeness factor catches this.
  • Schema that contradicts page content. If schema says New York but page content says Los Angeles, the business facts are harder for any system to interpret consistently.
  • No entity connections. Service schema should reference LocalBusiness via provider. Person via worksFor. These connections make the relationship between facts explicit.
  • 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 are useful for an AEO baseline?

For many business sites, LocalBusiness (or Organization), Service, FAQPage, and Person make core facts clearer. The current audit gives Structured Data the highest base weight, but no schema type guarantees a recommendation.

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 Canonry's free onsite technical audit for AI-specific scoring. All three are free.

Does schema replace content optimization?

No. Structured Data has the highest base weight in the current audit model (12 before normalization), while content depth, extractability, definition blocks, and other signals still matter. You need both.

Continue with the platform.

Inspect the technical workflow, run it on your own site, or add live visibility reporting to an agency portal.

Schema Markup for AI Citations: The Complete Guide | Canonry