Schema markup is a block of code — almost always in a format called JSON-LD — that tells search engines, in a vocabulary they already understand, exactly what a page is: a plumbing company, its address, its hours, a list of questions and answers. Humans never see it. Google reads it as a plain statement to check against the page and your other listings, rather than inferring everything from prose.
Here is the honest version of what schema markup for small business sites actually does. It does not directly raise your rankings — Google has been clear about that for years. It makes you eligible for rich results (the breadcrumb paths, dates, and other extras in some listings), and it gives Google and AI systems clean, unambiguous facts about who you are, what you do, and where you operate.
Below: which types a local or service business needs, which rich results are still real, the mistakes we see most in audits, and how to test it.
What structured data is — and what it isn’t
Structured data is information formatted so a machine can read it without interpreting it. Schema.org is the shared vocabulary — a dictionary of types (LocalBusiness, Article, FAQPage) and properties (name, telephone, datePublished) that Google, Microsoft, and others founded and an open community now maintains. “Schema markup” is what people call that vocabulary once it is on a web page.
JSON-LD (JavaScript Object Notation for Linked Data) is the format Google recommends: a self-contained script block, usually in the page’s head, that never touches your visible HTML. The older formats, microdata and RDFa, wrap attributes around your HTML and break easily in a redesign. Use JSON-LD.
A minimal example: { "@context": "https://schema.org", "@type": "Plumber", "name": "Example Plumbing", "telephone": "+1-817-555-0100", "address": { "@type": "PostalAddress", "addressLocality": "Fort Worth", "addressRegion": "TX" } }. Google reads that as a clear statement that this is a plumbing business in Fort Worth — one it checks against the page and your other listings rather than guessing.
Schema markup for small business sites: which types matter
Schema.org has hundreds of types. A local or service business needs about five, plus two in support.
LocalBusiness schema — or a more specific subtype
This describes your business as an entity; use the most specific subtype that fits — Plumber, RoofingContractor, Dentist, LegalService, HVACBusiness — because specificity is the whole point. If no subtype fits, use plain LocalBusiness (or Organization if you have no physical presence or service territory). Older guides recommend ProfessionalService; schema.org has since deprecated it, so avoid it on new builds.
Properties worth filling in:
| Property | What it holds | Notes |
|---|---|---|
name | Business name | Match your Business Profile |
address | A PostalAddress block | Street, city, state, ZIP |
telephone | Main number | Same format everywhere |
url | Your homepage | Canonical version |
openingHoursSpecification | Hours by day | Skip if appointment-only |
geo | Latitude and longitude | Street addresses only |
areaServed | Cities or counties you cover | For service-area businesses |
priceRange | A rough range | Optional |
sameAs | Links to your profiles | Profile and social pages |
image / logo | Photo and logo URLs | Full URLs |
@id | A unique label for this block | Other blocks point to it |
Declare it once, on your homepage — or once per location page. Say you run a roofing company in Arlington with a second office in Denton: that is two LocalBusiness entities on two pages, not one with a list of cities.
Service
Service describes one specific thing you do — water heater replacement, commercial roofing, SEO — with a provider (your LocalBusiness) and an area served. There is no rich result for it; its value is in tying a service page to the entity that provides it. We put it on every service page.
FAQPage
FAQPage schema marks up questions and answers exactly as they appear on the page. It used to produce expandable dropdowns for almost anyone; since August 2023 Google shows them only for well-known, authoritative government and health websites. Still worth adding where you genuinely have FAQs — our FAQ page carries it — but stop expecting a visible payoff.
BreadcrumbList
Breadcrumbs describe where a page sits in your site: Home › Services › Web Development. On desktop, Google uses this to show a readable path instead of a raw URL; since January 2025, mobile results show only your domain name. Still worth adding: it is cheap, it clarifies your site structure, and on desktop it is the most consistently displayed rich result. Put it on every page below the homepage.
Article
Article (or its BlogPosting subtype) is for posts and guides — headline, author, dates, featured image — and helps Google show the right date and byline. The post you are reading carries it.
Organization and WebSite, in support
Organization describes the company behind the site — logo, legal name, contact points — and WebSite names the site itself. Both belong on the homepage, giving the other types something to reference by @id so Google sees one connected graph. Organization and LocalBusiness can coexist there if they are linked by @id; the problem is unlinked duplicates, or Organization used instead of a LocalBusiness type.
Which rich results you can realistically get today
Rich results are the enhanced listings Google builds from structured data. The menu shrinks and grows, and much of the advice on schema markup for small business sites still describes features Google has retired. Here is where things stand today.
| Type | What it can show | Realistic for you? |
|---|---|---|
| BreadcrumbList | Readable path instead of a URL | Yes on desktop; mobile shows only your domain |
| LocalBusiness | Hours, phone, address in a knowledge panel (Google’s business info box) | Partly — your Google Business Profile drives most of it |
| Article | Date, author, image on the listing | Yes, for blog posts |
| FAQPage | Expandable Q&A | No — only government and health sites |
| Review / AggregateRating | Star ratings | Not for your own business on your own site |
| Product | Price and availability | Only if you sell products online |
| Event, JobPosting, Video | Event cards, job listings, video thumbnails | Only if you genuinely have that content |
Two caveats. First, star ratings are off the table for reviews of your own business on your own site — Google’s guidelines call that self-serving. Competitors’ stars come from third-party review platforms or product pages. Second, eligibility is not a promise: Google’s documentation says markup makes a feature possible, not guaranteed. You can do everything right and still get a plain blue link.
Google’s structured data gallery lists every supported feature; if an article promises one that is not there, it is out of date.
Beyond rich results: entity clarity for Google and AI search
Rich results are not the main reason to do this. Entity clarity is.
Google’s local ranking factors are relevance, distance, and prominence. Relevance depends on Google understanding what you do and where, and structured data is the most direct way to state both. A page with “HVAC repair” in a heading is a signal. A page that also declares, in machine-readable form, that it is an HVACBusiness at a specific McKinney address serving Collin County is a fact.
That matters more now that results are partly written by AI. AI Overviews and AI Mode draw on pages Google already understands well; Google says there is nothing extra to add for them, but clean structured data removes any doubt about who you are, what you offer, and where. The strategy side is in our guide to AI Overviews and AI search.
Six schema mistakes we see most often in audits
Most broken schema falls into one of these.
- Marking up content that is not on the page. Google’s guidelines require structured data to reflect what visitors can see. FAQ questions that appear nowhere on the page, or reviews that exist only in code, can get your markup ignored or earn a manual action — a penalty applied by a human reviewer at Google that you must fix and appeal.
- Self-serving star ratings. Adding aggregateRating to your own LocalBusiness on your own site is one of the most common guideline violations we see. Remove it.
- Organization when you mean LocalBusiness. Organization describes a company in general, not a place people visit or a territory you serve. If customers come to you or you go to them, use a LocalBusiness subtype — it is a kind of Organization anyway.
- LocalBusiness on every page. One business, one entity, declared once per location. Repeating it on fifty pages does not multiply the signal; it creates fifty places for it to drift out of sync.
- Stacked plugins. On WordPress sites we regularly find three copies of Organization — from the SEO plugin, the theme, and a page builder — all slightly different. Google has to pick one.
- Details that don’t match your Google Business Profile. “Ste 200” in schema, “Suite 200” on the profile, “#200” in the footer. Pick one and use it everywhere — schema and your Google Business Profile reinforce each other only when they agree.
How to add schema to your site
There are three ways to get JSON-LD onto a page, depending on how your site was built.
Hand-coded into the templates
On a hand-coded or static-generator site, schema lives in the page templates: LocalBusiness on the homepage, Service on the service template, Article on the post template, breadcrumbs from the URL path. It renders on the server, and only a deliberate template edit can change it — no plugin update or theme swap will touch it. This is how we work: structure, schema, and speed are part of our web development from day one.
A CMS plugin or built-in setting
On WordPress, Squarespace, Wix, and similar platforms, a plugin or built-in setting generates the basics, fine for a straightforward site. The risks are the ones above — duplicates, generic types, defaults nobody reviewed — so audit the output with the tools below rather than trusting the plugin’s green checkmark.
Injection through a tag manager
Google Tag Manager can inject JSON-LD as a stopgap when you cannot touch the site code, but it depends on JavaScript rendering, it is invisible to whoever maintains the site later, and it is the first thing lost in a container cleanup. Treat it as temporary.
How to test schema markup and keep it working
Testing takes a few minutes and catches most problems.
- Rich Results Test. Paste a URL into Google’s Rich Results Test. It separates errors (which block eligibility) from warnings (missing recommended properties — worth fixing, not urgent). It only checks types with rich results, so a Service block will not appear.
- Schema Markup Validator. Schema.org’s own Schema Markup Validator checks syntax against the whole vocabulary, including types Google ignores. Use it for your Service and Organization blocks.
- Search Console enhancements. Once Google has crawled your pages, Search Console’s Enhancements reports show valid and invalid counts per rich-result type detected, plus an “Unparsable structured data” report for JSON too broken to identify. Check them monthly; they are how you learn a template change broke something.
- Look at the actual result. Search your business name, then your main service plus your city. Do breadcrumbs show on desktop? Is the date on your latest post right? Search Console tells you eligibility; the results page tells you reality.
Re-test after any redesign, theme update, or plugin change. Structured data breaks quietly — the page looks fine, and the only symptom is a line in a report you have not opened.
Where schema belongs on your priority list
Schema is a finishing layer: important, inexpensive, and not the foundation.
If you are deciding what to do first: claim and complete your Google Business Profile, make the site fast enough to pass Core Web Vitals, write service pages that actually explain what you do and where, then add structured data so all of it is unambiguous. Our technical SEO checklist puts schema alongside the other fixes that matter.
On a new build it is part of the template work in our process, not a separate line item. Every site we ship — from a $1,500 Starter Website up — launches with the structured data that fits it: a LocalBusiness subtype, Service on each service page, BreadcrumbList everywhere, and Article and FAQPage wherever the site actually has posts and FAQs. If you already have a site, auditing the existing markup is quick; the fixes are usually deletions and corrections, not additions.
Then give it time. Structured data gets picked up on the next crawl, shows up in Search Console over the following weeks, and joins the same three-to-six-month arc that all SEO work follows. It will not be the reason you rank. It will be one of the reasons Google was sure enough about you to try.
Key takeaways
- Schema markup is machine-readable labeling in JSON-LD: it clarifies what a page is, it does not rank the page.
- A local or service business needs about five types — a LocalBusiness subtype, Service, BreadcrumbList, Article, and FAQPage — plus Organization and WebSite in support.
- Breadcrumbs (on desktop) and article details are the most reliable rich results today; FAQ dropdowns are gone for businesses, and star ratings for your own business are against Google’s guidelines.
- Keep name, address, phone, and hours identical to your Google Business Profile — schema and the profile reinforce each other only when they agree.
- Declare one LocalBusiness entity per location, give it an @id, and have every Service and Article block reference it instead of repeating the business on every page.
- Test with the Rich Results Test, then watch Search Console’s Enhancements reports after every redesign or plugin change.
- On a well-built site schema is included from day one — it is a finishing layer, not a separate project.
Frequently asked questions
Not directly. Google has said structured data by itself is not a ranking factor. It makes your pages eligible for rich results and helps Google understand what your business is and where it operates, which supports everything else you do for SEO.
Yes. Your profile feeds Maps and the local pack (the three-business map box at the top of local results); schema on your own site confirms the same name, address, phone, and hours from a second source. When the two agree, each one makes the other more credible.
Usually. A CMS plugin or built-in setting can add JSON-LD without touching code, and Google Tag Manager works as a stopgap. Either way, run the result through the Rich Results Test and check for duplicate blocks, because plugins often overlap.
Google reads it on the next crawl, which can be days to a few weeks depending on how often your site is crawled. Search Console’s Enhancements reports lag behind that, and a rich result is never guaranteed even when the markup is valid.
If customers visit you or you serve a territory, use the most specific LocalBusiness subtype that fits, such as Plumber or Dentist. LocalBusiness is itself a type of Organization, so one LocalBusiness node can carry the logo and contact details too. If you add a separate Organization block, connect it to the LocalBusiness with the same @id so Google sees one entity, not two.
Want your schema done right the first time?
Every site we build ships with the structured data that fits it already in place. If you have an existing site and are not sure what its markup is doing, tell us about it — checking what is there is one of the first things we do in any SEO engagement, and we will tell you plainly what we find.