What schema markup is

Schema markup is a way to describe a page’s content so that a machine understands it unambiguously. A person looking at a product page has no trouble telling the name from the price, or the price from the SKU. A parser sees only text inside tags, and without hints it has to guess.

The vocabulary the markup is built on is Schema.org: a joint project of Google, Microsoft, Yahoo and Yandex that describes entity types (Product, Organization, Review) and their properties (price, availability, ratingValue).

Markup changes nothing for a site visitor. Its consumers are search crawlers, aggregators, messaging apps building link previews and, more recently, the crawlers of language models.

Formats: JSON-LD, microdata, RDFa

Format What it looks like When it is used
JSON-LD A separate <script type="application/ld+json"> block in the head or body The default choice: decoupled from the layout, generated on the back end, easy to validate
Microdata The itemscope, itemtype and itemprop attributes inside the HTML tags Legacy projects; a redesign takes the markup away with the layout
RDFa The vocab, typeof and property attributes Rare, mostly in academic and government sources

An example JSON-LD structure for a product page:

{
  "@context": "https://schema.org",
  "@type": "Product",
  "name": "the name exactly as in the H1",
  "sku": "the SKU",
  "brand": { "@type": "Brand", "name": "the brand" },
  "aggregateRating": {
    "@type": "AggregateRating",
    "ratingValue": "4.6",
    "reviewCount": "128"
  },
  "offers": {
    "@type": "Offer",
    "price": "249.00",
    "priceCurrency": "USD",
    "availability": "https://schema.org/InStock"
  }
}
⚠

One page, one primary entity. If the product page is marked up by the theme template, by a plugin and by an external review script all at once, the search engine receives several conflicting Product objects and most often shows no rich snippet at all. Before adding new markup, check what the page already outputs.

The key types for e-commerce

Type What it describes What it gives you in the results
Product The product: name, SKU, brand, image A product snippet and entry into shopping blocks
Offer The offer: price, currency, availability, validity Price and stock status directly in the results
AggregateRating The aggregate rating and review count Rating stars — a noticeable CTR lift
Review An individual review with author and score Review fragments in the rich result
BreadcrumbList The path through the catalogue A navigation trail instead of a long URL
FAQPage Questions and answers on the page Expandable questions under the snippet, material for AI answers
Organization The company: logo, contacts, profiles A brand panel and a link to the knowledge graph
ItemList The list of products in a category Understanding of the listing structure, carousels
Article A blog article: author, dates, section Authorship and freshness signals for E-E-A-T
VideoObject Video on the page A video preview in the results

For an online store the minimum working set looks like this: Organization on every page, BreadcrumbList throughout the catalogue, Product plus Offer on product pages, AggregateRating wherever reviews genuinely exist, ItemList on listings and FAQPage on pages that carry a question block.

Why markup matters more since AI search arrived

The classic role of markup is to earn a better snippet. A second, more significant role has been added to it.

Generative systems — AI Overviews, assistants, search chats — assemble an answer from fragments of many pages. A model parsing HTML has to reconstruct meaning from the layout: which figure is the price and which is the struck-through old price, whether the rating belongs to the product or to the store. An explicitly labelled fact removes that uncertainty.

The practical consequences for GEO and AEO:

  • FAQPage is ready-made citation material. A question paired with a short, precise answer drops into a generated answer almost unchanged.
  • Organization ties the site to the brand entity. The logo, the legal name and directory profiles help a model understand which company stands behind the content and work more accurately with the knowledge graph.
  • Article with an author and a date supports E-E-A-T signals: a claim acquires a source and a time.
  • Accurate price and availability matter more than before. An assistant quoting the wrong price damages a brand more than a stale snippet: the user gets an answer and never visits the site to check it.

Markup does not replace the rest of the work: it makes a page readable, not authoritative. Crawler accessibility, indexation and the llms.txt file remain separate tasks.

Common mistakes

  1. The markup does not match the visible content. One set of attributes in the JSON-LD, another on the page. The most direct route to losing rich results.
  2. Price and availability diverge from the site. The markup is generated from a cache or from an overnight export while the storefront price updates in real time. What you need to check is not that markup exists but that its values match the feed.
  3. A rating with no reviews. AggregateRating with reviewCount: 0, or a rating set purely for decoration, is a straightforward rule violation.
  4. Store reviews on a product page. A Review inside Product must relate to that product, not to delivery quality.
  5. Duplicated entities. The theme, a plugin and an external widget mark up the same thing — the search engine picks a version at random or ignores all of them.
  6. Markup for a hidden block. FAQPage for questions that are not in the visible part of the page counts as a content mismatch.
  7. ItemList on pagination without accounting for pages. An identical list on every pagination page confuses the engine’s model of the catalogue structure.
  8. Markup forgotten after a redesign. Microdata lived in layout attributes and vanished with them — the CTR drop is noticed a month later.

How to check

Tool What it shows When to use it
validator.schema.org Syntax and conformance to the vocabulary While developing new markup
Google Rich Results Test Which rich results the page qualifies for Before shipping a template
Google Search Console, Enhancements Errors across the whole site, over time Continuous monitoring
Yandex Webmaster structured data validator Markup errors for Yandex, the dominant search engine in Russia and several CIS markets Checking the catalogue and product data
Your own crawler plus a feed comparison Price and availability gaps between markup and the product database Regular automated control
💡

A one-off check of ten URLs does not catch the main problem, which is data drift. One scheduled report is far more useful: once a week, crawl a sample of product pages, pull price and availability from the JSON-LD and compare them with the product feed. A gap above a fraction of a percent is a signal that the markup cache has started living its own life.