SEO

Schema markup

Structured data

Machine-readable annotations describing what a page is about.

A shared vocabulary, schema.org, maintained jointly by Google, Microsoft, Yahoo and Yandex since 2011, that labels a page as an article, a product, an event, a recipe, a person or a defined term. Google recommends JSON-LD as the format.

Key takeaways

  • It does not change rankings. It makes rich results possible, and rich results change click-through rate.
  • Eligibility is not entitlement. Google decides whether to show one, and it has withdrawn support for types before.
  • FAQ and HowTo rich results were sharply cut back in 2023, which removed a deliverable a lot of agencies had sold.
  • Markup must describe what is genuinely on the page. Inventing ratings or prices is a spam violation, and it lands on the client.
  • Generate it from the same data the page renders from. Hand-written JSON-LD drifts within two content edits.

What it does, and what it does not

Structured data does not make a page rank higher. This is worth saying first because it is the single most common misunderstanding, and because a lot of proposals have been written on the opposite assumption.

What it does is remove ambiguity. A page about a product contains a price, a rating and an availability state somewhere in its text, and a search engine can infer all three imperfectly. Markup states them, in a vocabulary agreed between the major engines, so there is nothing to infer.

The commercial consequence comes one step later. Unambiguous data makes a page eligible for a rich result: review stars, a price and stock state, a breadcrumb trail, an event date, a recipe card. Those change how the result looks on the page, and how a result looks changes how many people click it.

So the honest chain is markup, then eligibility, then a richer result, then click-through rate. Every link in it is real and none of them is ranking.

Eligibility is not entitlement

Valid markup makes a page eligible for a rich result. It does not oblige Google to show one, and the gap between those two states is where client expectations go wrong.

Google chooses per query, per result, and can decline for reasons nothing to do with the markup: the query does not suit the format, the site has not earned enough trust, the layout of that particular results page has no room. A page can validate perfectly and never show a single star.

Support also gets withdrawn. In 2023 Google sharply reduced FAQ and HowTo rich results, limiting FAQ display to a small set of authoritative health and government sites and dropping HowTo on desktop. Agencies that had built FAQ markup into a standard deliverable lost it overnight, and clients who had been shown the accordion in a pitch deck asked where it went.

The way to sell this without being wrong later is to sell the markup as description rather than as a feature. Describing the page accurately is worth doing regardless, it is cheap once automated, and the rich result is the upside rather than the promise.

The one rule that carries real risk

Structured data must describe content that is genuinely on the page and visible to the user. That is the rule, it is written down in Google structured data guidelines, and breaking it is a spam violation rather than a technical error.

The version that happens most often is an aggregate rating assembled from testimonials that live somewhere else, or from an internal figure nobody publishes. The stars appear in the results, the click-through rate improves, and the markup is describing something the page does not contain.

Prices and availability drift into the same territory by accident. Markup written once and never regenerated will keep declaring a price the page stopped showing months ago, which is the same violation reached by neglect rather than intent.

The consequence lands on the client domain as a manual action, and it is the sort that removes rich results across a whole site rather than one page. Worth being explicit about in a proposal, because a competitor offering review stars on a site with no reviews is offering the client a risk they will not have priced.

Keeping it true after the first edit

Markup is easy to add and easy to leave behind. The failure is almost never the initial implementation; it is the second content edit, or the template change six months later.

The structural answer is to generate the JSON-LD from the same data the page renders from, rather than writing it alongside. If the price in the markup is the same variable the page prints, they cannot disagree. If it is a hand-typed string in a template, they will disagree within two edits and nobody will notice, because the markup is invisible to everybody reading the page.

The other habit worth having is validating after deployment rather than only before. The Rich Results Test tells you whether a live URL is eligible, which is a different question from whether the JSON validates, and template changes break markup silently.

For an agency, the useful posture is to own the shape of the markup and hand the generation to the developers, with a check in the monthly reporting. Structured data that nobody looks at again is the normal outcome, and it is the reason so many sites are still describing a layout they stopped using.

What it means for an agency

Validate with the Rich Results Test before shipping, and keep the markup generated from the same data the page renders from. Hand-written JSON-LD drifts out of sync with the page within two content edits.

Where it goes wrong

  • Marking up an aggregate rating built from testimonials that are not on the page.
  • Leaving structured data behind after a template change, so it describes a page layout that no longer exists.
  • Selling a rich result as a deliverable, when Google decides per query and has withdrawn types before.
  • Validating the JSON rather than the live URL, which are different checks.

In short

Structured data is worth doing and easy to oversell. Generated from the data the page already holds, it costs almost nothing and describes the site accurately for as long as the site exists. Written by hand to win a feature that Google may withdraw, it becomes a liability the first time somebody edits the page.

Frequently asked questions

Does schema markup improve rankings?

No, not directly. It removes ambiguity about what a page contains, which makes the page eligible for rich results, and rich results change click-through rate. That is a real commercial effect, but it arrives through how the result looks rather than through where it sits.

Why is my rich result not showing even though the markup validates?

Because valid markup makes a page eligible rather than entitled. Google decides per query and per result, and can decline because the query does not suit the format, because the site has not earned enough trust, or because that results page has no room. Google has also withdrawn support for types before, most visibly FAQ and HowTo in 2023.

Can I mark up reviews that are not on the page?

No. Structured data has to describe content that is genuinely present and visible, and an aggregate rating built from testimonials held elsewhere breaks that rule. It is treated as spam rather than as a technical error, and the manual action lands on the client domain, usually removing rich results across the whole site.

What format should I use, JSON-LD or microdata?

JSON-LD, which is what Google recommends. It sits in a script block rather than being woven through the markup, so it survives template changes better and can be generated from the same data the page renders from. That last point is what stops it drifting out of sync with the page.

Related terms

Sources

Last reviewed

Keplent keeps track of these for you.

It holds what each client agreed to, watches what their campaigns actually did, and tells you in plain sentences what needs you this week.

Join the waitlist