Skip to content
Technical SEO May 3, 2026 9 min read

Schema markup for AI Overviews: the technical guide 2026

How to structure JSON-LD so Google AI Overviews and LLMs cite you as a source: key types, common mistakes, and ready-to-copy templates.

JR

Jose Redondo Delgado

Founder & Director, Ad2Place Digital

Schema markup for AI Overviews — technical JSON-LD guide 2026

If your site doesn’t tell Google and the LLMs what each thing is, you don’t show up in AI Overviews. That blunt. Schema markup —structured data in JSON-LD format— is the language Google, ChatGPT, Perplexity and the rest of generative engines read to understand your content and decide whether to cite you as a source.

This article isn’t a philosophical explainer. It’s a technical manual with templates you can copy to your site today. Built for real websites, not textbook cases.

Why schema markup went from “nice to have” to mandatory

Until 2024, schema markup was mostly used for rich snippets: SERP stars, expandable FAQs, breadcrumbs. Important, but not critical.

In 2026 the game changed. Google AI Overviews, ChatGPT Search, Perplexity and Bing’s generative modes need structure to parse your content and attribute the answer to you. Without proper JSON-LD, your article is plain text the model can summarize, but rarely cite.

Practical consequences:

  • In a cluster with authority (Person + Organization + Article well-nested), citations in AI Overviews go up to 3x according to public SearchEngineLand data from February 2026.
  • Without Person schema with sameAs to LinkedIn, LLMs can’t attribute expertise to you → no citation.
  • FAQs with FAQPage schema and direct answers are one of the preferred sources for AI Overviews because of their direct question-answer format.

If you still doubt whether to invest time in this, read first the difference between GEO and SEO and the importance of E-E-A-T in the AI era. Without those two foundations, schema doesn’t pay off.

The 6 schema types that actually move the needle in GEO

Not every schema type is equally useful for generative search. These are the ones that really matter:

1. Article (or BlogPosting)

The non-negotiable. Mark every blog article with author, date, headline and inLanguage.

{
  "@context": "https://schema.org",
  "@type": "Article",
  "headline": "Schema markup for AI Overviews: the technical guide 2026",
  "description": "How to structure JSON-LD so Google and LLMs cite you.",
  "datePublished": "2026-05-03",
  "dateModified": "2026-05-03",
  "inLanguage": "en-US",
  "author": { "@id": "https://ad2place-digital.net/#jose" },
  "publisher": { "@id": "https://ad2place-digital.net/#org" },
  "mainEntityOfPage": "https://ad2place-digital.net/en/blog/schema-markup-ai-overviews-en/"
}

Critical trick: use @id with anchors (#jose, #org) instead of duplicating the Person/Organization object inside every article. Smaller payload, coherent graph.

2. Person with sameAs

Without this, LLMs don’t know who signs the content and can’t attribute authority to you. sameAs should point to verifiable profiles: LinkedIn, X, Crunchbase, GitHub.

{
  "@context": "https://schema.org",
  "@type": "Person",
  "@id": "https://ad2place-digital.net/#jose",
  "name": "José Redondo Delgado",
  "jobTitle": "Director at Ad2Place Digital",
  "sameAs": [
    "https://www.linkedin.com/in/jose-redondo-delgado-8b560214b/"
  ],
  "knowsAbout": ["SEO", "GEO", "Digital Marketing", "Schema Markup"],
  "worksFor": { "@id": "https://ad2place-digital.net/#org" }
}

knowsAbout is optional but helps profile topical authority. Stick to 4-6 real areas, don’t spam 30 keywords.

3. Organization (or LocalBusiness)

Your company’s identity. Declared once on the homepage, referenced via @id from the rest of the site.

{
  "@context": "https://schema.org",
  "@type": "Organization",
  "@id": "https://ad2place-digital.net/#org",
  "name": "Ad2Place Digital",
  "url": "https://ad2place-digital.net/",
  "logo": "https://ad2place-digital.net/logo.webp",
  "sameAs": [
    "https://www.linkedin.com/company/ad2place"
  ]
}

If you have a physical location, use LocalBusiness with address, geo and openingHoursSpecification added. Local AI Overviews (the map-with-results panel) use those directly.

4. FAQPage

The format AI Overviews prefer. Literal Q&A, no fluff, one entity per real question.

{
  "@context": "https://schema.org",
  "@type": "FAQPage",
  "mainEntity": [
    {
      "@type": "Question",
      "name": "Do I need schema markup to appear in AI Overviews?",
      "acceptedAnswer": {
        "@type": "Answer",
        "text": "Yes. Without well-structured JSON-LD, LLMs may summarize your content but rarely cite you as an attributed source."
      }
    }
  ]
}

Hard rule: the schema answer must match the visible HTML literally. If they diverge, Google penalizes for hidden content.

5. HowTo

For step-by-step tutorials. AI Overviews shows them often when the query is actionable (“how to set up X”, “steps to do Y”).

{
  "@type": "HowTo",
  "name": "How to add FAQ schema to a page",
  "step": [
    { "@type": "HowToStep", "name": "Identify the real questions",  "text": "..." },
    { "@type": "HowToStep", "name": "Generate the JSON-LD",         "text": "..." },
    { "@type": "HowToStep", "name": "Validate with Rich Results",   "text": "..." }
  ]
}

6. BreadcrumbList

Navigation hierarchy. Helps LLMs understand the topical context of each URL.

{
  "@type": "BreadcrumbList",
  "itemListElement": [
    { "@type": "ListItem", "position": 1, "name": "Home",  "item": "https://ad2place-digital.net/" },
    { "@type": "ListItem", "position": 2, "name": "Blog",  "item": "https://ad2place-digital.net/en/blog/" },
    { "@type": "ListItem", "position": 3, "name": "Schema markup for AI Overviews" }
  ]
}

The @graph pattern: how to nest everything without duplicating

The most common mistake is declaring 5 separate JSON-LD blocks, each with its own entities. The result: bloated HTML, Google parses worse, and the relations between entities are lost.

The fix is @graph: a single <script type="application/ld+json"> containing an array of entities referenced via @id. Each thing is declared once.

{
  "@context": "https://schema.org",
  "@graph": [
    { "@type": "Organization", "@id": "https://example.com/#org",  "name": "Ad2Place" },
    { "@type": "Person",       "@id": "https://example.com/#jose", "name": "José Redondo", "worksFor": { "@id": "https://example.com/#org" } },
    { "@type": "Article",      "headline": "...", "author": { "@id": "https://example.com/#jose" }, "publisher": { "@id": "https://example.com/#org" } },
    { "@type": "BreadcrumbList", "itemListElement": [...] }
  ]
}

That’s the professional way. One entity declared with @id, referenced as { "@id": ... } from anywhere it’s needed.

Common mistakes you’re making (almost certainly)

After auditing 200+ websites in recent months, these are the failures I see in 80% of projects:

  1. description copied verbatim from the meta description. Google flags it as duplicate and disables the rich snippet.
  2. Schema in the HTML but not in the static HTML. If you inject it with JavaScript after load, Googlebot sees it, but LLMs that parse raw HTML (Perplexity, Claude) don’t.
  3. author declared as a string ("author": "José Redondo") instead of a Person object. You lose attributable authority.
  4. FAQ schema with answers that don’t appear on the page. Near-automatic penalty.
  5. Same @id pointing to different entities across pages. Creates conflict in Google’s knowledge graph.
  6. mainEntityOfPage pointing to the URL without trailing slash when the site uses one. Crawlers treat them as two distinct URLs.
  7. Not declaring inLanguage on multilingual sites. Google can’t tell which hreflang version this is.

How to validate your schema without losing your mind

Three tools, in this order:

  • Schema.org Validator (validator.schema.org) — correct syntax. Strict but orthodox.
  • Rich Results Test (search.google.com/test/rich-results) — which rich snippets Google can produce. If an entity doesn’t show up here, Google ignores it.
  • Google Search Console → Enhancements — which entities Google is indexing on your live site. The unchallengeable truth.

Practical rule: if Rich Results Test passes but Search Console shows nothing after 2 weeks, something else is blocking (robots.txt, JS rendering, @id conflict).

How to roll it out without rewriting everything

If you’re starting from scratch, this is the efficient order:

  1. Home: Organization + WebSite + Person (single @graph).
  2. Blog hub /blog/: CollectionPage with mainEntity pointing to recent articles.
  3. Each article: Article + BreadcrumbList + Person (referenced by @id).
  4. Service pages: Service with provider pointing to Organization.
  5. Pages with real FAQs: FAQPage.
  6. Operational tutorials: HowTo.

You don’t need everything at once. Start with the homepage and the 5 articles with most organic traffic. The GSC impact shows up in 2-4 weeks.

Frequently asked questions

Does schema markup rank you better in classic Google? Indirectly. It’s not a direct ranking factor, but rich snippets increase CTR and CTR is a factor.

Microdata, RDFa or JSON-LD? JSON-LD. Google has officially preferred it since 2017, LLMs parse it better, and it lives separately from the HTML, so it’s cleaner to audit.

Does dynamic schema (JS-injected) count? For Google yes, with a delay (waits for JS render). For LLMs that parse raw HTML (Perplexity, ChatGPT Search), generally no. If you want to appear in AI Overviews, schema in static HTML.

How many FAQs per page? 3-7 real ones. More is spam and Google ignores them. If you have 10+ questions, move them to a dedicated /faq/ URL.

Why does my schema validate but not appear in Search Console? Common causes: robots.txt blocking, page noindex, content too new (Google takes 2-4 weeks), or your domain authority isn’t high enough yet for rich snippets to display. In this last case, schema still helps the LLMs even if it doesn’t help Google yet.

Next step

Schema markup is half of the GEO work. The other half is real topical authority (content cluster + verifiable E-E-A-T) and a technical architecture that lets LLMs parse the HTML.

If you want a review of your current schema and a prioritized rollout plan, book a free SEO consultation of 45 minutes. In that session I audit your entities in GSC, find the gaps, and leave you a concrete roadmap.

Want us to apply these strategies to your business?

Book a free 45-minute video call with me and let's review your site live. No strings attached.