Skip to content
All guides
Phase 4: AI search SEO

Structured data: a practical guide

Seoga guide · Last reviewed · 7 min readStructured data: a practical guide

What structured data is, which types are worth adding for a business site, how to write and test it, and the mistakes that make Google ignore it.

What structured data is

Structured data is a short block of code on a page that describes the page in a fixed vocabulary that machines understand. The words on a product page say “Blue trail shoe, £89, in stock”. Structured data says the same thing as labelled facts: this is a Product, its name is this, its price is 89, its currency is GBP, its availability is InStock.

The vocabulary comes from schema.org, which Google, Bing and others share. Google uses it to understand pages and, for some types, to show richer results, such as prices, ratings and stock on a product result. AI tools also read it, because labelled facts are easier to trust than facts guessed from a paragraph.

Choose thetypeWhat is thispage about?Fill it inOnly factsthe pageshowsFacts not onthe pageAdd asJSON-LDOne scriptblock in thepageTest itRich ResultsTest,validatorErrors,missingfieldsWatchreportsSearchConsoleenhancements1. Choose the typeWhat is this page about?2. Fill it inOnly facts the page showsFacts not on the page3. Add as JSON-LDOne script block in the page4. Test itRich Results Test, validatorErrors, missing fields5. Watch reportsSearch Console enhancements
The order to work in. The red boxes are the two places structured data usually goes wrong: facts the page doesn’t show, and fields that are missing or misspelt.

Use JSON-LD

There are three ways to write structured data: JSON-LD, Microdata and RDFa. Google supports all three and recommends JSON-LD, because it sits in one block, apart from the page’s layout, and is easy to add, read and change. Here is a simple one for a business:

Organization markup in JSON-LD
<script type="application/ld+json">
{
  "@context": "https://schema.org",
  "@type": "Organization",
  "name": "Example Garden Supplies",
  "url": "https://www.example.com/",
  "logo": "https://www.example.com/logo.png",
  "sameAs": [
    "https://www.linkedin.com/company/example",
    "https://www.instagram.com/example"
  ]
}
</script>

@context says the words come from schema.org, @type says what is being described, and the rest are its properties. A block with no @context or no @type is ignored: Seoga’s scan reports these as “structured data blocks don’t say they use schema.org” and “don’t say what they describe”.

Which types are worth adding

Most business sites need only a handful. Start with the ones that describe your business and your main pages:

Common structured data types for a business website
TypeWhereWhat it does
Organization (or LocalBusiness)Home pageYour name, logo, contact details and official profiles. LocalBusiness adds address and opening hours for a place people visit.
WebSiteHome pageYour site’s name, which Google can show in results.
Product, with OfferEach product pageName, picture, price, currency and stock. Can show these on the result.
BreadcrumbListPages below the home pageThe path to the page, shown in place of the address on some results.
Article or BlogPostingArticles and postsHeadline, author and dates.
FAQPagePages that show questions and answersThe questions and answers as pairs, for machines to read.
VideoObjectPages with a videoTitle, description, thumbnail and date of the video.

What changed in 2023

Google now shows FAQ results rarely, if ever, and only for well-known government and health sites, and it removed how-to results altogether. It has retired some rarer result types since. FAQ markup still helps machines read question-and-answer pairs; how-to markup no longer does much. Check Google’s current list of supported features before you build anything only for a rich result.

How to add it

  1. Check what you already have. Many site builders and shop platforms add some markup by themselves. Paste a page into the Schema Markup Validator (validator.schema.org) to see every block already there, so you don’t add a second, conflicting one.
  2. Use your platform’s tools first. On WordPress, the main SEO plugins add Organization, WebSite, BreadcrumbList and Article markup from settings. Shop platforms usually add Product markup. Fill in their settings carefully before writing any by hand.
  3. Write the rest by hand. Put the JSON-LD block in the page’s head or anywhere in its body. On a template (all product pages, all articles) fill it from the same data the page shows, so the two never drift apart.
  4. Test every type. Run Google’s Rich Results Test (search.google.com/test/rich-results) on one page of each type. It shows errors, missing recommended fields, and whether the page could get a rich result.
  5. Watch Search Console. After Google re-reads your pages, the enhancement reports (such as Product snippets, Merchant listings and Breadcrumbs) list valid items and errors across the whole site.

The rules that matter most

  • Mark up only what visitors can see. A price, rating or question in the markup must also be on the page. Markup that says something the page doesn’t is against Google’s guidelines and can lead to a manual action.
  • No made-up reviews. Ratings must be real reviews shown on the page. Ratings you wrote about yourself, or copied from elsewhere, are not allowed on your own business’s markup.
  • One business, one description. Your name, address and phone in the markup should match your pages and your profiles exactly. See author and entity signals.
  • Keep it current. A price in the markup that differs from the page, or a product marked in stock that is sold out, is worse than no markup.
  • Valid is not a promise. Google decides whether to show a rich result, page by page. Correct markup makes a page eligible; it does not make it appear.

A simple plan for a small site

You don’t need every type on day one. Work in this order, and test after each step:

  1. Home page: Organization and WebSite. Your name, address, logo, phone and official profiles, plus your site’s name. One block each, on the home page only. If people visit you in person, use LocalBusiness, or a more specific type such as Restaurant or Store, with your address and opening hours.
  2. Your main money pages. Product markup with an Offer on every product page, filled from the same data as the page. For services, describe the business well on the home page first; there is no rich result for a service page.
  3. Navigation. BreadcrumbList on pages below the home page, matching the breadcrumb trail visitors see.
  4. Articles and help pages. Article or BlogPosting with the headline, the author’s name and the dates, and FAQPage where the page shows real questions and answers.

After each step, wait for Google to re-read a few pages, then check the enhancement reports before moving on. Fixing one template is quicker than fixing a hundred pages later.

Common errors and their fixes

  • Broken JSON. A missing comma or quote and the whole block is ignored. In a scan: “pages have broken structured data”. Paste the block into a JSON checker.
  • Missing required fields. A Product with no name, or an Offer with no price, can’t be used. The Rich Results Test names the missing field.
  • Two blocks that disagree. A theme and a plugin both adding Organization, with different names. Keep one.
  • Wrong addresses. Logo or page addresses in the markup that lead to errors or redirects. Use the final https:// address.

Read next

See how your website doesA free check for Google and AI answers, in about a minute.
Check my site free