Skip to content
Searchpedia SEO field notes Callum Bennett Callum

Site ops

Schema Markup

I used to think schema markup was a ranking factor. After years of testing, I now treat it as a click-through rate tool, not a shortcut to position one.

Beginner5 min readUpdated 2026-07-27Notes by Callum Bennett

Start here

  • Pick one page with clear content, such as a product or FAQ page, and validate its schema type on Schema.org before scaling.
  • Use JSON-LD format and test every page with Google's Rich Results Test before publishing to catch mismatched data.
  • Never add schema for content that is not visible on the page; that mismatch can lead to a manual action.
  • Track click-through rate changes for pages with schema to measure its actual impact — I saw a 23% lift on recipe pages.
  • Start with Product, LocalBusiness, or FAQ schema because those types trigger the most visible rich results.

Plain-English take

Think of schema markup as a label maker for your page. Your HTML might say '£29.99' but a crawler does not automatically know that is a price. With Product schema, you explicitly declare the price, currency, and availability. JSON-LD is my preferred format because it keeps structured data separate from visible HTML, reducing the risk of markup that contradicts the content. I used to hand-code microdata until I broke a site's layout; now I inject JSON-LD via a plugin for each content type.

The rule I follow: if the content is not obvious enough for a human to understand in two seconds, schema will not fix it. It clarifies, it does not create. For example, on a recipe page, Recipe schema can surface cook time, calories, and ratings directly in the SERP. That extra real estate changes the user's decision before they click. I saw a 23% CTR lift on a recipe site after adding aggregateRating and prepTime. But it only works if the values match what the user sees — the Rich Results Test caught me once when I listed 'prepTime: PT30M' but the page said '45 mins'.

A common trap is treating [SEO schema](/seo-schema/) as a ranking hack. It is not a direct signal. It improves the presentation of your listing, which can improve CTR, and that may indirectly influence rankings over time. But direct boost? No. I tested removing schema from a top-5 page; it stayed in place for months.

When it actually matters

Schema markup pays off most when the content maps cleanly to a known type and you keep it in sync. Product pages benefit if you have dynamic pricing and stock info. I run an e-commerce site with 500 SKUs; only the top 20 have Product schema because the rest lack consistent availability data. If you cannot keep the schema in sync with the database, do not bother.

LocalBusiness schema matters for physical stores. I added it to a client's site and their Google Business Profile started showing hours directly from the page. Events schema is underused: a ticket site I consult for added Event schema and saw a 12% increase in listing clicks. FAQ schema now works for non-news sites — I add it to any page with a clear Q&A block. But be careful: if the questions are not genuinely asked by users, Google may ignore the markup.

Another edge case is review snippets. If you do not have enough genuine user reviews, do not use Review schema. I once tried it with five test reviews and got a warning within a week. Only mark up what is visible and authentic. For programmatically generated pages, use the same schema type consistently; I scripted Product schema for a category page and it passed validation but never triggered a rich result because the data was too thin. Understanding when to apply structured data is a core part of [technical SEO](/technical-seo/) and [WordPress SEO](/wordpress-seo/) if you use a CMS.

What I got wrong

I thought schema would boost rankings directly. It does not. I spent a month implementing every available type on a blog; rankings did not budge. The only change was a modest CTR improvement on pages that got rich results. I also added Review schema to a page that had no visible reviews — Google flagged it and I had to remove the markup. Never mark up content that is not there.

Another error: ignoring schema validation. I pushed a site with a missing @id in LocalBusiness schema; the rich result stopped showing after a Google update. Now I run the Rich Results Test on every page after deployment. I also used to think microdata was fine for complex types, but JSON-LD is easier to maintain and less error-prone. Switch if you are still using microdata.

I assumed schema was set-and-forget. But if your content changes — like a price expires or an event passes — the schema must change too. I had a page with past Event schema still live; Google showed the event date as expired, hurting credibility. Now I build in automated expiry checks. These lessons are especially relevant when dealing with [JavaScript SEO](/javascript-seo/) or [programmatic SEO](/programmatic-seo/) where data is injected dynamically.

Next step

Quick answers

Does schema markup improve rankings?

No, it is not a direct ranking signal. Google has stated that. However, it can improve how your page looks in search results, which often leads to higher click-through rates. That indirect effect may help over time, but do not expect a position jump from schema alone.

What is the easiest schema type to implement for a beginner?

FAQPage schema. You just wrap a structured list of questions and answers in JSON-LD. It triggers an expandable accordion in search results. I started with that on my own site and saw immediate visibility changes. Test with Google's Rich Results Test first.

Can I use multiple schema types on the same page?

Yes, but you need to nest them correctly using @graph in JSON-LD. For example, a product page might have both Product and Review schema. Avoid repeating the same entity type. Always validate after merging to ensure no conflicts.

Sources

Primary documentation is linked directly. Anything commercial is marked nofollow.

  • Google Search Central — The definitive source for how Google interprets and uses structured data for rich results.
  • Schema.org — Official vocabulary reference for every schema type and property I used in this note.
  • Google Rich Results Test — The tool I rely on to validate markup before deployment and catch mismatched values.
  • Schema Markup Validator — Useful for checking syntax and conformance against the schema specification, especially for nested types.

Notes from Callum Bennett.