Schema markup will not lift a weak page up the rankings. What it does is remove guesswork: it tells search engines and AI systems exactly who you are, what a page is and who stands behind it.
For a B2B website, that clarity is worth an afternoon of work. Most sites need only a handful of types, added once to each page template. The trouble is that advice online still recommends types Google no longer shows, so this list is current to November 2026 and says plainly which types earn a visible result and which only add clarity.
Use the finder below to see which types your page needs, copy the code for each, and tick the ones you already have.
The short answer
Most B2B websites need nine schema types at most: Organization, WebSite and BreadcrumbList across the site, Article and Person for content, Service for service pages, and LocalBusiness, VideoObject or SoftwareApplication only where a page fits them. Use JSON-LD, mark up only what visitors can see, and skip FAQ markup: Google stopped showing FAQ rich results on 7 May 2026.
Quick finder
Which schema does this page need?
Pick the kind of page you are working on. The types it needs are marked in the list below.
Choose a page type to see its list.
0 of 0 types in place
Tick each type your site already has. The count is saved in this browser.
A start. Organization, WebSite and BreadcrumbList are the base most B2B sites build on.
Solid coverage. Check the remaining types against the pages you actually publish.
All nine in place. Test a sample of pages after every template change.
1. Organization
Organization markup states the basic facts about your company: name, website, logo, profiles and contact details. Google says it helps it understand and tell your organization apart from others, and some properties can influence the logo shown in results and details in the knowledge panel.
No property is required, but the useful ones are name, url, logo (at least 112 by 112 pixels), description, sameAs links to your official profiles, and contact details. Put it on the home page or the About page, and keep the facts identical to what your pages and profiles say.
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "Organization",
"name": "Example Ltd",
"url": "https://www.example.com/",
"logo": "https://www.example.com/images/logo-512.png",
"description": "Industrial sensors and calibration services.",
"sameAs": [
"https://www.linkedin.com/company/example",
"https://www.youtube.com/@example"
],
"contactPoint": {
"@type": "ContactPoint",
"contactType": "sales",
"email": "sales@example.com",
"telephone": "+1-555-0100"
}
}
</script>
2. WebSite
WebSite markup is the main signal Google reads to choose the site name shown in search results. It belongs on the home page of the domain or subdomain, not on inner pages, and it needs only a name and a URL. Add alternateName for shorter or older versions of your name, in order of preference.
One catch: the Rich Results Test does not check site names. Use the Schema Markup Validator instead.
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "WebSite",
"name": "Example",
"alternateName": ["Example Ltd", "EX Sensors"],
"url": "https://www.example.com/"
}
</script>
3. BreadcrumbList
Breadcrumb markup shows where a page sits in your site, and Google can display that trail instead of the raw URL. Since January 2025 the trail appears on desktop results only, but it still helps Google read your site's structure.
Per Google's breadcrumb guidelines, you need at least two items, each with a name, a position and a URL (the last item can leave out the URL). Follow the path a visitor would take, which is not always the same as your folder structure.
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "BreadcrumbList",
"itemListElement": [
{ "@type": "ListItem", "position": 1, "name": "Services", "item": "https://www.example.com/services/" },
{ "@type": "ListItem", "position": 2, "name": "Calibration", "item": "https://www.example.com/services/calibration/" }
]
}
</script>
4. Article and BlogPosting
Article markup, or its more specific form BlogPosting, tells Google who wrote a piece and when. Google's article documentation requires no properties but recommends a headline, images, the published and modified dates, and an author with a name and a URL that points to a page about that person.
Dates deserve care. Google's guidance on byline dates asks for a visible, labelled date that matches the markup, and no future dates. Change dateModified only when the content really changes.
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "BlogPosting",
"headline": "How to Choose a Calibration Partner",
"image": ["https://www.example.com/images/calibration-16x9.jpg"],
"datePublished": "2026-11-09T09:00:00+00:00",
"dateModified": "2026-11-09T09:00:00+00:00",
"author": [{
"@type": "Person",
"name": "Alex Morgan",
"url": "https://www.example.com/team/alex-morgan/"
}]
}
</script>
5. LocalBusiness
LocalBusiness markup describes a physical place of business. Google's local business guidelines require a name and the address of that location, and recommend a phone number, URL and opening hours. If you have several offices, give each one its own page and its own markup.
Two cautions. First, use it only for an address people can visit or that you actually work from. Second, do not default to the old ProfessionalService type: schema.org now flags it as deprecated because it was confused with Service. Plain LocalBusiness, or a specific subtype that truly fits, is safer.
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "LocalBusiness",
"name": "Example Ltd, Springfield office",
"url": "https://www.example.com/locations/springfield/",
"telephone": "+1-555-0100",
"address": {
"@type": "PostalAddress",
"streetAddress": "1 Example Street",
"addressLocality": "Springfield",
"postalCode": "00000",
"addressCountry": "US"
},
"openingHoursSpecification": [{
"@type": "OpeningHoursSpecification",
"dayOfWeek": ["Monday", "Tuesday", "Wednesday", "Thursday", "Friday"],
"opens": "09:00",
"closes": "17:30"
}]
}
</script>
6. Service
Google has no rich result for the Service type, and we would rather say so than pretend otherwise. We still add it to every service page, because it states your offer in terms no system has to guess: what the service is, who provides it and where it is available.
Keep it honest and close to the visible copy. If the page says you serve clients worldwide, say the same in areaServed. If it names a specific region, use that.
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "Service",
"name": "Sensor calibration",
"serviceType": "Calibration service",
"description": "On-site and lab calibration for pressure and temperature sensors.",
"url": "https://www.example.com/services/calibration/",
"provider": {
"@type": "Organization",
"name": "Example Ltd",
"url": "https://www.example.com/"
},
"areaServed": "Worldwide"
}
</script>
7. VideoObject
If you publish product demos, webinar recordings or lab tours, VideoObject helps Google find and present them. Its video guidelines require three properties: a name, a thumbnail URL and an upload date. A description, the duration and a content or embed URL are recommended.
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "VideoObject",
"name": "Calibration lab tour",
"description": "A four-minute walk through our calibration lab.",
"thumbnailUrl": ["https://www.example.com/video/lab-tour-thumb.jpg"],
"uploadDate": "2026-10-20T08:00:00+00:00",
"duration": "PT4M12S",
"contentUrl": "https://www.example.com/video/lab-tour.mp4"
}
</script>
8. SoftwareApplication
For SaaS and other software products, SoftwareApplication can show a rating and price in results. The bar is higher than for other types: Google's software app guidelines require a name, a price (0 if free) and a rating or review. Only use it when real ratings from real users appear on the page.
The values below are placeholders. Replace every one with your own.
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "SoftwareApplication",
"name": "Example Monitor",
"applicationCategory": "BusinessApplication",
"operatingSystem": "Web",
"offers": { "@type": "Offer", "price": "49.00", "priceCurrency": "USD" },
"aggregateRating": { "@type": "AggregateRating", "ratingValue": "4.6", "ratingCount": "120" }
}
</script>
9. Person
Article markup recommends an author with a URL. That URL should land on a real page about the person, and Person markup on that page completes the link: name, role, employer and official profiles. There is no rich result for it. The value is that your authors' expertise is stated once, clearly, and connected to everything they write.
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "Person",
"name": "Alex Morgan",
"jobTitle": "Head of Engineering",
"url": "https://www.example.com/team/alex-morgan/",
"worksFor": {
"@type": "Organization",
"name": "Example Ltd",
"url": "https://www.example.com/"
},
"sameAs": ["https://www.linkedin.com/in/example"]
}
</script>
Types to Skip, or Stop Expecting Results From
Plenty of schema advice online is out of date. These are the types worth leaving off your list, or keeping without expecting a rich result.
- FAQPage
- Google stopped showing FAQ rich results on 7 May 2026 and removed the documentation the following month. Existing markup does no harm, but adding it now earns nothing in Google.
- HowTo
- HowTo rich results were withdrawn in 2023, at the same time FAQ results were limited.
- Review stars about yourself
- Testimonials on your own site are self-serving reviews: pages with LocalBusiness or Organization markup are not eligible for review stars, even when the reviews come from an embedded widget.
- Event, for online-only webinars
- Google's event guidelines now cover events at a physical location only, so a purely virtual webinar does not qualify.
- Retired types
- Google phased out several rich results in 2025, including Course Info, Claim Review, Estimated Salary, Learning Video, Special Announcement and Vehicle Listing.
How to Add and Test Your Markup
- Use JSON-LD. Google marks it as the recommended format, because a script block is easier to maintain than tags woven through your HTML.
- Generate it from your page data. Build markup into each template from the same fields the page displays, so the two can never disagree.
- Mark up only what people can see. Google's general guidelines rule out describing content that is hidden from readers.
- Test before and after release. Use the Rich Results Test for types with rich results and the Schema Markup Validator for everything else.
- Watch Search Console. Its enhancement reports flag errors across the whole site, not just the pages you tested.
