A business website needs only a few types of schema markup: Organization (or a LocalBusiness subtype) on the homepage, BreadcrumbList across the site and Article on blog posts. Add Product, Event or JobPosting only on pages that actually sell, list or advertise those things. Service and FAQPage are optional. Both are valid schema.org types, but neither earns a Google rich result in 2026, because Google stopped showing FAQ rich results on 7 May 2026.
The rule I work to is simple. Match each schema type to what's visible on the page, generate the JSON-LD, validate it, and leave out anything that stretches the truth. Below is the page-by-page map I use, what Google still shows for each type, and how to keep your markup out of trouble.
What does schema markup actually do?
Schema markup makes a page eligible for Google rich results and helps Google connect a website to the business behind it. It doesn't guarantee either, and fewer schema types produce anything visible in Google than they did a few years ago.
Schema markup is structured data, usually a JSON-LD script in the page head. It tells search engines, in a format machines can read, what the page is about: this is a business, this is its logo, this product costs this much and is in stock. If you want the mechanics first, my JSON-LD structured data guide covers the syntax.
It does two jobs. First, it makes a page eligible for rich results, such as product prices, event listings and breadcrumb paths. Second, it helps Google tie your site to your business as an entity, which feeds knowledge panels. Google is clear that markup enables a feature but does not guarantee it. The algorithm decides per search, per device and per location.
And the list of supported features keeps getting shorter. Some markup that was worth adding a few years ago now does nothing you can see.
7
Structured data types Google phased out in June 2025
7 May 2026
Date FAQ rich results stopped showing in Google
Desktop only
Where breadcrumb rich results still show
The June 2025 cut removed seven types, including Course Info, Claim Review, Estimated Salary and Vehicle Listing. In November 2025 Google started phasing out practice problem and dataset markup from Search results. The one that matters most for business sites came in May 2026: Google's changelog says the FAQ rich result would no longer appear in Google Search starting May 7, 2026, and the documentation was pulled afterwards. Breadcrumbs have been desktop-only since January 2025.
Which schema types still earn rich results?
Organization, LocalBusiness, Product, Article, BreadcrumbList, Event, JobPosting and review snippets still produce Google rich results or knowledge panel features. Service never has, and FAQPage stopped on 7 May 2026.
This table is based on Google's current structured data search gallery and changelog.
| Schema type | What Google shows now | Worth adding? |
|---|---|---|
| Organization | Logo, legal name, address, contact details in knowledge panels | Yes, once, on the homepage |
| LocalBusiness | Opening hours, ratings, directions and actions in the knowledge panel | Yes, if customers visit you or you serve a local area |
| Product | Price, availability and review ratings | Yes, on every product page |
| Article | Article title and larger images in article features | Yes, on every blog post |
| BreadcrumbList | The page's path in the site, on desktop results only | Yes, it's cheap to add site-wide |
| Event | Interactive event listings | Yes, if you list or sell events |
| JobPosting | Google's job search experience | Yes, for live vacancies only |
| Review snippet | Star ratings for products, local businesses and more | Only with genuine, eligible reviews |
| Service | No Google rich result | Optional, it describes your offer |
| FAQPage | Not shown since 7 May 2026 | Optional, only if the FAQ is visible |
Which schema markup goes on which page of a business website?
The homepage carries the business entity (Organization or LocalBusiness plus WebSite). Service pages carry Service, product pages carry Product, blog posts carry Article and event pages carry Event, with BreadcrumbList on everything below the homepage. Set the markup per template, not page by page, so a new service page or product picks up the right schema without anyone having to remember it.
| Page template | Schema types | What to include |
|---|---|---|
| Homepage | Organization or LocalBusiness subtype, plus WebSite | One business entity with a stable @id, logo, contact details and sameAs links to your official profiles |
| About | Reference the homepage entity by @id | Don't create a second organisation; ProfilePage only if the page is about one person |
| Contact or location pages | LocalBusiness subtype | Real address, phone, opening hours; one entity per physical location |
| Service pages | Service, BreadcrumbList | Service name, description, area served, provider pointing to your Organization @id |
| Product pages | Product with Offer, BreadcrumbList | Price, currency, availability, and reviews only if real |
| Blog posts | Article or BlogPosting, BreadcrumbList | Headline, author, image, datePublished, dateModified |
| Event pages | Event, BreadcrumbList | Start and end dates, venue, ticket offer, status |
| Careers | JobPosting | Only open roles, removed when filled |
The homepage entity is what holds the rest together. Give it an @id such as https://example.co.uk/#organization, and every other page can point back to it as the publisher, provider or seller. Google then sees one business, not ten slightly different copies of it.
Organization or LocalBusiness?
If customers come to you or you serve a defined area, use the most specific LocalBusiness subtype you can: Restaurant, Hotel, AccountingService, Dentist and so on. LocalBusiness is a subtype of Organization, so you lose nothing by picking it. If you sell online or work nationally with no public premises, plain Organization is the honest choice.
A minimal homepage entity for a local firm looks like this:
{
"@context": "https://schema.org",
"@type": "AccountingService",
"@id": "https://example.co.uk/#organization",
"name": "Example Accountants",
"url": "https://example.co.uk/",
"logo": "https://example.co.uk/logo.png",
"telephone": "+44 20 0000 0000",
"address": {
"@type": "PostalAddress",
"streetAddress": "1 High Street",
"addressLocality": "Kingston upon Thames",
"postalCode": "KT1 1AA",
"addressCountry": "GB"
},
"sameAs": ["https://www.linkedin.com/company/example"]
}
The map changes with the business. A hospitality site like the Ravens Ait venue website, with 20+ event pages, suits a LocalBusiness subtype plus Event markup on each event. A catalogue store like Nortek LED gets the most out of Product markup on every product page. A tax firm like Taxocity needs little beyond the business entity, Service pages and Article markup on the blog.
Should you still add FAQPage and Service schema?
Neither FAQPage nor Service schema produces a Google rich result now. Add them only to describe content accurately, never to change how your search result looks. Both are optional.
FAQPage: don't add it expecting anything in Google. The FAQ rich result has been gone since 7 May 2026. If your page already shows a real FAQ and the markup is already there, leave it. It still accurately describes visible content and does no harm. What I'd stop doing is bolting FAQ blocks onto every page to win the expandable questions. That reason is gone. Write FAQs for readers, and only mark up the ones the page actually shows.
Service: Google has no rich result for Service schema. I still add it on service pages when I'm building the schema graph anyway. It says plainly what you offer, who provides it and where, and it costs a few lines of JSON. Just don't expect your search result to look any different.
What about AI answers? Google's changelog notes that its spam policies also apply to generative AI responses in Search, so markup that would mislead ordinary results is no safer there. Clear structured data helps Google understand you. It isn't a back door into AI Overviews.
How do you generate and validate schema markup?
Map each page template to its schema types, draft the JSON-LD, output it from the same CMS data that renders the page, then test it in Google's Rich Results Test before launch and keep an eye on Search Console afterwards. Here's the order I work in:
- 1
Map templates to types
List your page templates and pick the types from the table above. Skip any type you can't fill with true, visible information.
- 2
Generate the JSON-LD
Describe the business, product, article or event in plain English and let a generator draft valid JSON-LD, then check every value.
- 3
Wire it to real data
On a CMS, output the markup from the same fields that render the page, so prices, dates and stock never drift out of sync.
- 4
Validate before launch
Run Google's Rich Results Test for supported features, and the schema.org validator for types Google ignores, such as Service.
- 5
Monitor after launch
Watch the Search Console enhancement reports for errors and check the Manual Actions report if rich results disappear.
For the drafting step I built a free Schema Markup Generator. You describe your business, product, article, FAQ, event or app, and it gives you schema.org JSON-LD to paste in. Treat what it gives you as a first draft. You know your real opening hours and prices. The tool doesn't.
Your stack decides the rest:
- WordPress: SEO plugins like Yoast and Rank Math already output Organization, WebSite, Article and breadcrumb markup, and WooCommerce adds Product data. The usual problem is duplication. The theme, the SEO plugin and a separate schema plugin all emit their own Product or Organization, sometimes with different values. Pick one source per type and turn the others off. My WooCommerce store build checklist covers this for stores.
- Next.js: render the JSON-LD on the server so it's in the initial HTML, built from the same data as the page, next to your metadata and sitemap. My Next.js technical SEO checklist covers the rest of that setup.
Test in the Rich Results Test with the live URL, not just pasted code. That way you're checking what Google actually gets once caching, plugins and scripts have all had their turn.
What counts as spammy schema markup?
Spammy schema markup is anything that describes content the page doesn't show, invents reviews, misrepresents the business or leaves stale data sitting there. Google's structured data guidelines are short, and most problems come from breaking one of these:
- Marking up content that isn't visible. If the JSON-LD describes something, the page has to show it too.
- Fake or irrelevant content. Invented reviews, ratings with no source, or markup that has nothing to do with the page's main topic.
- Misrepresenting the business. Pretending to be another organisation or claiming affiliations you don't have.
- Self-serving reviews. Stars a business collects about itself and marks up on its own LocalBusiness or Organization pages aren't eligible for review snippets under Google's review snippet guidelines. Hardcoding a 4.9 AggregateRating into the homepage is the classic mistake.
- Stale data. Past events, filled jobs and old prices left in the markup. Google says it won't show rich results for time-sensitive content that's no longer relevant.
The penalty is narrower than people fear, but it's real. A structured data manual action means the page loses eligibility for rich results. Google says it doesn't touch web search ranking. You still lose the product stars or event listings you added the markup for in the first place, and you'll have to fix it and request a review.
What should you ask a developer about schema markup?
Ask which schema types go on which templates, where the data comes from, how duplicates are prevented, and who checks Google Search Console after launch. The answers show you pretty quickly if you're getting a careful job or just someone flipping a plugin toggle:
- Which schema types go on which templates, and why?
- Is the markup generated from CMS data, or typed in by hand where it'll go stale?
- How will you stop the theme, plugins and WooCommerce from outputting duplicates?
- Will you send me Rich Results Test results for each template before launch?
- Who watches the Search Console enhancement reports after launch?
Schema is one piece of the work I do under technical SEO and Core Web Vitals, along with sitemaps, redirects and Search Console. Start with your own homepage: describe the business in the Schema Markup Generator and compare the result with what your site sends today. If the gaps run across more than one template, book a call and I'll map the markup for your whole site.



