- Start with a short list: Organization and WebSite on the home page, BreadcrumbList across the site, then one main type for each page template.
- SaaS sites get the most from Organization, SoftwareApplication, Article and Person. Local businesses get the most from a specific LocalBusiness subtype and Service.
- Schema won't lift rankings on its own. It removes ambiguity and makes pages eligible for rich results, which Google never guarantees.
- Give each entity one permanent @id, define it once and reference it everywhere else, so search engines see one company instead of several.
- Only mark up what visitors can see on the page, and check the live output after every launch.
The schema worth doing is a short list: Organization and WebSite markup on your home page, BreadcrumbList across the site, and one main type for each page template, all connected with consistent IDs so search engines see one entity behind every page. For a SaaS company, the main types are usually SoftwareApplication, Article and Person. For a local service business, they're a specific LocalBusiness subtype and Service. Everything else can wait until a particular page gives you a reason to add it.
That short list does more than a long one assembled by three plugins that disagree with each other. Here's what each type is for, what to skip, and how to keep the whole thing consistent.
What schema markup actually does
Structured data is a machine-readable description of what a page is and who's behind it. It doesn't push a page up the rankings by itself. What it does is remove ambiguity: this page is a service, that one is an article by a named author, and both belong to the same company with the same logo and phone number.
That has two practical benefits. First, some types make a page eligible for rich results, which change how it looks in Google. Google's general structured data guidelines are clear that eligibility isn't a guarantee. Second, clean, consistent facts help any system that reads your pages, including the assistants behind AI search.
Google recommends JSON-LD as the format. It's also the easiest to maintain, because it sits in one block instead of being woven through your HTML. Google's introduction to structured data covers the basics.
The short list every site needs
Organization
This is the anchor for everything else. Put it on the home page or the about page and describe your company once: name, URL, logo, contact details and a sameAs list pointing to profiles you control. Google's Organization documentation lists the properties it reads. A local business can use a LocalBusiness subtype here instead, since LocalBusiness is a kind of Organization.
WebSite
A small block that names your site. Google uses it as one of the signals for the site name it shows in results, which matters if your brand name is also a common word.
BreadcrumbList
It describes where a page sits in your site's hierarchy. It's cheap to generate from your URL structure or navigation, and Google uses it to categorize the page in search results. The breadcrumb documentation has the required properties.
One main type per template
Every page template gets the type that describes it best: Article or BlogPosting for posts, Service for service pages, a LocalBusiness subtype for location pages, SoftwareApplication for a product page. Template is the key word. You don't write schema page by page. You write it once per page type and let the CMS fill in the details.
What matters for SaaS sites
A software company's site has three jobs here: describe the company, describe the product, and show that real people with real expertise wrote the content.
- Organization with a full sameAs list. Link your LinkedIn company page, your review site profiles and any other listing you control. This is how a brand name that could mean several things gets tied to one company.
- SoftwareApplication on the product or pricing page. It describes the product, its category and its offers. Google's software app documentation ties the rich result to ratings or reviews, so without genuine ratings to show, treat this markup as description rather than a route to stars. Never invent a rating to qualify.
- Article or BlogPosting with a real author. The author should be a Person with a name, a link to their author page and sameAs links to their professional profiles. The publisher should point back to your Organization.
- Person for founders and authors. Define each person once, on their author or team page, and reference them from every article they write.
FAQPage is the one I'd be careful with. Google stopped showing FAQ rich results in Search in May 2026 and has removed the documentation for the feature. Marking up a visible FAQ section is still an accurate description for other systems that read your pages, but don't add it expecting dropdowns in search.
What matters for local businesses
For a trade or service business, schema's main job is to confirm the same facts your Google Business Profile states: who you are, where you are, when you're open and what you do.
- The most specific LocalBusiness subtype. Schema.org has types such as Plumber, Electrician, RoofingContractor, GeneralContractor and Bakery. Use the closest match, and fall back to a broader type like HomeAndConstructionBusiness when nothing fits. Google's local business documentation lists the properties it wants.
- Details that match your profile exactly. Name, address, phone number and hours should read the same in your schema, your footer, your contact page and your Google Business Profile.
- areaServed for service-area businesses. List the towns or regions you actually cover.
- Service markup on each service page, with a provider that points back to your business. There's no rich result for it, but it tells machines which services you offer and where.
- One LocalBusiness per location if you have more than one, each on its own location page with its own ID.
One common mistake is wrapping your own testimonials in review or rating markup. Google's review snippet guidelines make a LocalBusiness or Organization ineligible for star ratings when the business controls the reviews about itself, and testimonials on your own site fall into that group. Keep them on the page for visitors, and put the effort into Google reviews instead. My local SEO work covers that side.
How to keep entities consistent
This is where most of the value is, and where many sites fall down. A theme outputs one Organization, an SEO plugin outputs another with a different logo, and a page builder adds a third. Search engines are left to guess which one is right.
- Write down the facts once. Brand name, legal name if it's different, URL, logo file, phone, address, hours, founders and the profiles you control. This list becomes the source for every schema block, your footer and your profiles.
- Give each entity a permanent @id. A common pattern is your home page URL with a fragment such as #organization, and an author page URL with #person. Always use the live domain.
- Define each entity in full once. Everywhere else, reference it by its @id. An article's publisher, a service's provider and an employee's worksFor all point to the same Organization.
- Use sameAs for profiles you control. LinkedIn, review sites, social profiles and directory listings. Leave out any profile you can't keep accurate.
- Keep visible text and markup in step. Google's guidelines say to mark up only content visitors can see on the page. If your footer shows one phone number and your schema another, fix both together.
- Pick one source of output. If a plugin and your own code both output Organization, turn one of them off.
Launches are when details drift. On one recent launch for a local service business, the canonical tags still pointed at the staging domain when the site went live, and LocalBusiness schema was one of the fixes I added straight afterwards. Staging URLs in canonicals and schema IDs are easy to miss because the pages look fine. After any launch or domain change, view the source of a few live pages and check.
Generate schema from your sitemap, not page by page
My method is the same on every site. I parse the sitemap, classify every URL by page type, and write JSON-LD for each type rather than each page. A large site often runs on a handful of templates, so the work grows with the number of templates, not the number of pages.
- Map. Group every URL in the sitemap by page type: home, service, location, article, product, case study and so on.
- Decide. Choose the main type for each group and the properties it needs.
- Check the data exists. Schema is only as good as the fields behind it. For Kitchen & Bath World, I added CMS fields so each vanity's name and price could feed Product schema properly.
- Write and connect. Write the JSON-LD for each template, with every reference pointing to the shared @id values.
- Implement. On Webflow, the JSON-LD goes in each collection template's custom code, with CMS fields inserted into it. On WordPress, it goes in the theme, or in a plugin you've configured per template.
- Validate and verify. Test each template with Google's Rich Results Test and the Schema Markup Validator, then check the live pages once they're published.
What to skip
- Markup for content that isn't on the page. Hidden FAQs, ratings nobody can see, or services the page doesn't describe.
- Every optional property. Fill in the properties you know and can keep accurate. Wrong opening hours are worse than none.
- Types chosen for a rich result you can't qualify for. If the guidelines rule your site out, the markup adds upkeep without the payoff.
- Duplicate blocks. Two Organization definitions with different names or logos defeat the point of having one.
- Schema as a ranking tactic. It supports good pages. It doesn't replace them.
A quick schema checklist
- Organization or LocalBusiness defined once, with a permanent @id on the live domain
- WebSite and BreadcrumbList in place
- One main type per template, filled from CMS fields
- Authors and founders defined as Person and referenced by @id
- Name, address, phone and hours matching your Google Business Profile
- No review markup on your own testimonials
- One source of output for each type, with no plugin duplicates
- Every template tested before launch, and live pages checked after
- Search Console's structured data reports reviewed after each change
Where to start
Pick one page of each type on your site and look at the structured data it outputs today. If you find duplicate organizations, staging URLs or types that don't match the page, start there. The fix is usually in a template, not on every page.
If you'd rather have someone map it for you, my schema markup and entity SEO work starts from your sitemap and ends with markup checked on the live site. Get in touch and tell me what your site runs on.