Skip to content
TurboIndex

Structured Data Basics: Schema Markup for SEO

What structured data does and does not do for SEO, which schema types Google supports, how to add JSON-LD correctly, test it and avoid a manual action.

September 10, 20268 min read

Structured data is code, usually JSON-LD, that describes a page in a vocabulary search engines can parse: this is a product, this is its price, this is the author, these are the breadcrumbs. Google uses it to understand pages and to show rich results such as review stars, prices and breadcrumb trails. It does not get a page indexed and it is not a direct ranking boost. It makes an already indexed page eligible for a better looking listing.

What it looks like

A minimal Article example in JSON-LD, placed anywhere in the <head> or <body>:

<script type="application/ld+json">
{
  "@context": "https://schema.org",
  "@type": "Article",
  "headline": "Structured Data Basics: Schema Markup for SEO",
  "image": ["https://www.example.com/images/structured-data.jpg"],
  "datePublished": "2026-09-10T08:00:00+00:00",
  "dateModified": "2026-09-10T08:00:00+00:00",
  "author": [{
    "@type": "Person",
    "name": "Jane Example",
    "url": "https://www.example.com/authors/jane"
  }]
}
</script>

The vocabulary comes from schema.org. Google supports three syntaxes (JSON-LD, Microdata and RDFa) and recommends JSON-LD.

Keep one distinction in mind: schema.org defines hundreds of types, and Google has search features for only a fraction of them. Markup outside that fraction is harmless and may help understanding, but it produces nothing visible in Google.

What structured data does and does not do

Claim Reality
Gets pages indexed No. Indexing depends on crawlability, canonicals and quality
Boosts rankings directly No, according to Google. It can help Google understand the topic
Enables rich results Yes. This is its main purpose
Guarantees rich results No. Google's guidelines say valid markup does not guarantee display
Improves click-through rate Often, when a rich result is shown
Feeds other Google surfaces Yes: merchant listings, knowledge panels, Google Images badges, job and event experiences

One link to indexing does exist. Google's Indexing API is officially limited to pages with JobPosting markup or BroadcastEvent embedded in a VideoObject. For those page types, correct structured data is a requirement for using the API as documented. See the Google Indexing API guide.

Types worth implementing

Google adds and retires rich result types regularly. It removed HowTo rich results and restricted FAQ rich results to well-known, authoritative government and health sites in 2023, and retired several rarely used types in 2025. Always check the Search Gallery in Google's Search Central documentation before building something new. At the time of writing, these are the dependable ones:

Page type Schema type What you can get
Any inner page BreadcrumbList Breadcrumb trail in place of the raw URL
Homepage Organization Logo, company details in the knowledge panel
Blog post, news Article, NewsArticle, BlogPosting Better headline, image and date handling
Product page Product with Offer, AggregateRating Price, availability, review stars, merchant listing features
Local business LocalBusiness (or a subtype) Hours, address and details in local features
Recipe Recipe Image, rating, cook time, recipe carousel
Event Event Event listing experience
Job advert JobPosting Google job search experience, Indexing API eligibility
Video VideoObject Video results, key moments
Review of an item Review, AggregateRating Review snippet, for supported item types
Software SoftwareApplication Rating and price
Forum or Q&A DiscussionForumPosting, QAPage Forum and Q&A features
Person or organisation profile ProfilePage Better handling of creator information

If you run a normal content or business site, start with Organization, BreadcrumbList and Article or Product. That covers most of the value.

About FAQ markup

FAQPage markup is still valid schema.org and you can use it. For most sites it no longer produces a rich result in Google, because of the 2023 restriction. Other consumers, Bing among them, may still read it. Add it if it is cheap to do, but do not expect the expandable questions in Google results.

Adding it correctly

1. Generate

Most platforms handle the basics: Yoast and Rank Math on WordPress, most Shopify themes for Product, and the major frameworks have helpers. For hand-built pages, the Schema Markup Generator produces JSON-LD for Article, FAQ, Product, LocalBusiness, Breadcrumb and more.

Each Google feature has its own required and recommended properties, documented per type. Required ones missing means no rich result. Recommended ones missing means a warning in Search Console and a plainer result. A Product example with the properties Google needs for a product snippet:

<script type="application/ld+json">
{
  "@context": "https://schema.org",
  "@type": "Product",
  "name": "Trail Running Shoe X2",
  "image": ["https://www.example.com/img/x2-side.jpg"],
  "description": "Lightweight trail shoe with a 6 mm drop and a rock plate.",
  "sku": "X2-BLK-42",
  "brand": { "@type": "Brand", "name": "Example Sports" },
  "offers": {
    "@type": "Offer",
    "url": "https://www.example.com/products/trail-running-shoe-x2",
    "priceCurrency": "EUR",
    "price": "129.00",
    "availability": "https://schema.org/InStock"
  },
  "aggregateRating": {
    "@type": "AggregateRating",
    "ratingValue": "4.6",
    "reviewCount": "87"
  }
}
</script>

3. Match the visible page

Google's structured data guidelines are strict on this: mark up only content that is visible to users on that page. The price in the markup has to be the price on the page. Reviews in the markup have to be readable on the page. Marking up content that is hidden or does not exist is the most common route to a manual action.

4. Put it on the right page

  • Mark up the page the data belongs to. Do not put Product markup for one item on a category page listing twenty.
  • Put Organization on the homepage, not on every URL.
  • Keep the same markup on the mobile version. Google indexes mobile.
  • Duplicate pages should carry the same markup as their canonical.

5. Test

Tool What it checks
Google Rich Results Test Whether the page is eligible for Google rich results, with errors and warnings. Tests live URLs or pasted code, renders JavaScript
Schema Markup Validator (validator.schema.org) Syntax and vocabulary against schema.org in general, with no Google-specific rules
Search Console > URL Inspection What Google detected on the indexed version and in a live test
Search Console > Enhancements and Shopping reports Site-wide valid and invalid item counts over time

To see which JSON-LD blocks a page currently outputs, including blocks from plugins you forgot about, use the Structured Data Viewer. Two plugins emitting conflicting Product or Article blocks is a frequent finding.

6. Monitor

After deployment, reports appear in Search Console under Enhancements (and Shopping for products) once Google has recrawled some pages. Fix errors first, since those remove eligibility, and then warnings. After a fix, use Validate fix. Search Console also emails owners when new structured data issues spike, which often happens after a theme or plugin update.

Common errors and what they mean

Message Cause Fix
Missing field "x" A required property is absent Add it, with real data
Either "offers", "review" or "aggregateRating" should be specified Product with no supporting data Add at least one of them
Invalid value type / Invalid enum value For example, availability: "in stock" Use the schema.org URL: https://schema.org/InStock
Invalid date format 10/09/2026 Use ISO 8601: 2026-09-10
Unparsable structured data Broken JSON: trailing comma, smart quotes, unescaped characters Validate the JSON, escape quotes inside strings
Review has multiple aggregate ratings Duplicate markup from theme and plugin Disable one source

Rules that get sites into trouble

Google can issue a manual action for structured data. The site stays indexed and loses rich result eligibility until it is fixed and a reconsideration request is approved. The usual causes:

  • Self-serving reviews. Google does not show review stars for LocalBusiness and Organization when the entity controls the reviews about itself, for example by marking up testimonials on its own site. Do not try to work around it with a different type.
  • Invented ratings. An AggregateRating with no real, visible reviews behind it.
  • Marking up hidden content.
  • Wrong type on purpose. Marking a service page as Product or an advert as Event to get a richer result.
  • Site-wide copies. The same Product or rating markup repeated on every page.

If a rich result you had disappears, check Security & Manual Actions > Manual actions first.

Structured data and indexing: how they interact

The interaction runs mostly one way. Structured data is read at indexing time, so:

  • A page that is not indexed gets no rich results, whatever the markup says. Confirm indexing first with URL Inspection. See how to check if a page is indexed.
  • Markup updates need a recrawl. A changed price or new rating appears in results only after Google recrawls the page. For products with frequent price changes, a Merchant Center feed is the more reliable channel.
  • JavaScript-injected markup depends on rendering, which may happen later than the first crawl. Server-rendered JSON-LD is picked up with the HTML.
  • Blocked resources break it. If the page or the script that injects markup is disallowed in robots.txt, Google never sees it.

A sensible rollout plan

  1. List your page templates: home, category, product, article, location, and so on.
  2. Pick one or two supported types for each from the table above.
  3. Implement in the template, server-side, with data from the same source as the visible page.
  4. Test three URLs per template in the Rich Results Test.
  5. Deploy, then watch Search Console's enhancement reports for two to four weeks.
  6. Revisit after every theme, plugin or template change, because that is when markup breaks.

Structured data is a finishing step. Get crawling, indexing and content right first, as described in how Google Search works, then use markup to make the indexed pages look their best.

Frequently asked questions

Does structured data help pages get indexed?
No. Structured data does not influence whether Google indexes a page. It helps Google understand an indexed page and makes it eligible for rich results. The one indirect link is that JobPosting and BroadcastEvent markup are the page types Google's Indexing API officially supports.
Is structured data a ranking factor?
Google has said that structured data itself is not a generic ranking boost. Rich results can improve click-through rate because the listing is larger and more informative, and markup helps Google understand what the page is about.
Which format should I use: JSON-LD, Microdata or RDFa?
Google supports all three and recommends JSON-LD, because it sits in one script block that is separate from the HTML and is easier to maintain at scale.
Why is my valid structured data not showing rich results?
Valid markup makes a page eligible and nothing more. Google's documentation says rich results are not guaranteed. Common reasons are that the page is not indexed, the markup does not match visible content, the rich result type is restricted to certain sites, or Google's systems judge that a plain result serves the query better.
Can I add structured data with Google Tag Manager?
Yes, Google can read JSON-LD injected by JavaScript, including through Tag Manager. It depends on rendering, which is slower and less reliable than markup in the server HTML, so server-side output is the safer choice for Product and other frequently changing data.

Keep reading