DefinitionCode (usually JSON-LD using Schema.org vocabulary) added to a page so search engines understand what it is about, for example a product, article or FAQ. It can unlock rich results in Google.
Structured data is a layer of labels on top of your page content. The visible page says “€49,95” and “Op voorraad”; the structured data says, in a format machines can parse, that this is a Product, that its price is 49.95 in EUR and that its availability is InStock. Google uses those labels to understand the page with certainty rather than guessing, and in return can show richer results: star ratings, prices, FAQ dropdowns, breadcrumbs, event dates. The thing people get wrong is expecting structured data to improve rankings on its own. It does not. It improves how a result looks and how well Google understands it, which affects clicks and, indirectly, everything downstream.
Why it matters for clicks and revenue
Two product pages sit next to each other in the results. One shows a plain blue title and a description. The other shows a 4.7-star rating from 312 reviews, a price and “In stock”. Nearly everyone clicks the second one. On a Dutch webshop I worked with, adding valid Product markup with review ratings across the catalogue lifted organic click-through rate on product pages by a few percentage points, which on tens of thousands of impressions is a meaningful number of extra visits at no extra ranking effort.
For B2B sites the gains are different but real: Organization markup helps Google connect your brand name, logo and social profiles; BreadcrumbList markup turns the URL in the result into readable navigation; FAQ markup on service pages can earn extra space in the results. Structured data is also becoming the way Google Merchant Center reads product data straight from the page, and how AI search features identify what an entity is. It sits squarely within technical SEO, but it is one of the few technical tasks with a visible effect in the results.
How to check what you have and whether it works
Google’s Rich Results Test takes a URL and tells you which rich result types it detected and whether there are errors or warnings. The Schema.org validator does the same for markup that Google does not use for rich results. To see what is already on a page, open the browser dev tools, view the source and search for “application/ld+json”; most platforms output a block of JSON-LD in the head or footer.
At scale, Screaming Frog can extract and validate structured data across an entire crawl: enable it under Configuration, then check the Structured Data tab for pages with errors, warnings or missing markup. Google Search Console reports on each rich result type under Enhancements, listing valid, warning and error items with the specific field that is wrong. And the Performance report has a Search appearance filter, so you can see how many clicks came from results with product snippets or FAQ rich results versus plain results.
Mistakes that make structured data useless or risky
Markup that does not match the page. A rating in the code that is not visible on the page, or a price that differs from the one shown. Google treats this as spam and can remove rich results for the whole site.
Plugin stacking. The theme adds Product markup, the SEO plugin adds it again and a review plugin adds a third block. Google sees three conflicting Products on one page and often shows nothing.
Missing required fields. A Product without offers, an Article without a date, a LocalBusiness without an address. The markup validates as JSON but does not qualify for a rich result.
FAQ markup on everything. Since Google restricted FAQ rich results in 2023, plastering FAQ schema on every page does nothing except bloat the code. Use it where it is genuinely a FAQ on a page that qualifies.
Markup that breaks on variants. A product with ten sizes outputs the price of the first one only, or outputs “out of stock” because one variant is. This is extremely common on WooCommerce and Shopify themes.
How I approach structured data for clients
I start with an inventory: a crawl that shows which types exist on which templates, and a Search Console check for existing errors. Then I remove duplicates, because fixing one clean source of markup is far easier than reconciling three. For webshops the priority is Product markup with correct offers, availability and aggregate ratings on product pages, plus BreadcrumbList sitewide. For B2B sites it is Organization, BreadcrumbList and, where relevant, Service or LocalBusiness on the pages that describe what the company does and where.
I write JSON-LD rather than microdata because it is easier to maintain and does not depend on the HTML structure of the theme. On platforms like PrestaShop or Magento that means a small module or a template change; on WordPress it usually means configuring the SEO plugin properly and switching off whatever the theme was doing. It is one of the standard items in my technical SEO service, and I always recheck it after any theme update, because that is when markup silently breaks. Where it makes sense, structured data also supports local SEO through LocalBusiness markup on location pages.
Frequently asked questions
Is structured data a ranking factor?
No. Google has been consistent that markup by itself does not change where a page ranks. What it changes is understanding and presentation: Google knows with certainty what the page is about, and the result can show extra information that attracts clicks. Higher click-through rate and better-qualified visitors are the real payoff.
JSON-LD, microdata or RDFa?
JSON-LD. Google recommends it, it lives in a single script block separate from the visible HTML, and it can be generated from the same data your templates already use. Microdata still works but ties the markup to the HTML structure, so a design change can break it. RDFa is rarely worth the effort today.
Why does valid markup not show as a rich result?
Valid markup makes a page eligible, not guaranteed. Google decides per query whether to show a rich result, and it will not show one if the page has quality issues, if the markup contradicts the content, or if the result type is not relevant to the search. It can also take weeks after implementation before rich results appear.