Rich schema in plain English: how your site explains your business
A Decatur equipment rental company's website carries one small block of automatic business code on its homepage and nothing on its other 11 pages. A Decatur family practice's website carries a detailed block on every one of its 80 pages. A Hartselle hometown pharmacy's carries one on all 18. We read the code behind every page of all three sites on October 15, 2026, 110 pages in all, and the differences between them are the most useful thing we learned about structured data this year.
That code is called schema, or structured data, and it is the part of your website that your customers never see and Google's systems read constantly. It matters more than it used to for a simple reason: customers increasingly meet your business on Google's own page. SparkToro's 2024 Zero-Click Search Study, built on a U.S. clickstream panel from September 2022 to May 2024, found that 58.5% of U.S. Google searches ended without a click to the open web. When the answer is a Business Profile, a map pin or an AI summary, Google is assembling it from many sources, and your website is the one source you fully control.
This post walks through real examples line by line, shares what our audit found (including the client that has almost none) and lists what schema cannot do. It is part of our Search Everywhere field study, an observational look at three DIWYM clients, not a controlled experiment.
What schema is, without the jargon
Every web page has two audiences. People read the words and look at the photos. Search engines and AI tools read the same page, but they have to guess what the words mean. Is "8 to 6" a price, a score or your opening hours? Is "Oak" a person or a street?
Schema removes the guessing. It is a short block of code, invisible to visitors, that states the facts in a shared vocabulary (schema.org) that Google, Bing and AI companies all read. It says, in effect: this is a medical clinic, this is its name, this is its address, these are its hours on Friday, this is a service it offers, and this is a question patients ask along with the answer. Google's own documentation describes structured data as giving "explicit clues about the meaning of a page," and recommends a format called JSON-LD, which is what the examples below use.
Why it matters for your Business Profile
Your Google Business Profile is the front door: it is the panel with your name, hours, phone, photos and reviews that customers see first. Google says local results are based mainly on relevance, distance and prominence, and that businesses with complete and accurate information are more likely to show up (Google Business Profile Help, "Tips to improve your local ranking on Google").
The profile is the primary record, but Google also reads your website, reviews, directories and links. Schema makes the website one of the clearest of those sources, a second, machine-readable confirmation of the facts on the profile. When the sources agree, Google and the AI tools built on it (Gemini in Maps, Ask Maps, AI Overviews) can repeat your name, hours, phone and services with confidence. When they disagree, they have to choose, or they hedge.
The profile is the front door, and the website tells Google what is behind it. Schema is how it says so in a language Google doesn't have to interpret.
A line by line walk through a real business record
Below is the business record that sits on every page of a Decatur family practice's website, trimmed and anonymized. The name, address, phone and URLs are placeholders, and a few details are changed so it can't be traced. The real version lists eight services; this one shows four.
{
"@context": "https://schema.org",
"@type": "MedicalClinic",
"@id": "https://www.example.com/#medicalclinic",
"name": "Hometown Family Practice",
"url": "https://www.example.com",
"telephone": "+1-256-555-0123",
"address": {
"@type": "PostalAddress",
"streetAddress": "123 Main St",
"addressLocality": "Decatur",
"addressRegion": "AL",
"addressCountry": "US"
},
"openingHoursSpecification": [
{
"@type": "OpeningHoursSpecification",
"dayOfWeek": ["Monday", "Tuesday", "Wednesday", "Thursday"],
"opens": "08:00",
"closes": "17:00"
},
{
"@type": "OpeningHoursSpecification",
"dayOfWeek": ["Friday"],
"opens": "08:00",
"closes": "13:00"
}
],
"medicalSpecialty": "PrimaryCare",
"areaServed": ["Decatur, AL", "Hartselle, AL", "Priceville, AL", "Madison, AL", "Huntsville, AL", "Morgan County, AL"],
"hasOfferCatalog": {
"@type": "OfferCatalog",
"name": "Services",
"itemListElement": [
{
"@type": "Offer",
"itemOffered": {
"@type": "Service",
"name": "Annual Physical",
"url": "https://www.example.com/services/annual-physical/"
}
},
{
"@type": "Offer",
"itemOffered": {
"@type": "Service",
"name": "Lab Testing",
"url": "https://www.example.com/services/lab-testing/"
}
},
{
"@type": "Offer",
"itemOffered": {
"@type": "Service",
"name": "Immunizations",
"url": "https://www.example.com/services/immunizations/"
}
},
{
"@type": "Offer",
"itemOffered": {
"@type": "Service",
"name": "Acute Illness Care",
"url": "https://www.example.com/services/acute-illness-care/"
}
}
]
}
}Here is what each part says, in plain English.
"@context": "https://schema.org" tells the reader which dictionary the words come from. Think of it as "the following is written in schema.org vocabulary."
"@type": "MedicalClinic" is the single most important line. It says what kind of business this is. A generic type like LocalBusiness would say only "this is a business." MedicalClinic tells Google it is a medical clinic without making it guess from the page copy. A pharmacy uses Pharmacy, and so on. The more specific the type, the less guessing.
"@id" is a private nickname for this record. Other blocks on the site can point to it, which you will see in the next example.
name, url, telephone are your business name, your website address and your phone number, exactly as they should appear everywhere else.
address is a small nested record: street, town, state, country. Nesting just means "these four items belong together."
openingHoursSpecification is your hours. Each entry is one rule: which days, when you open, when you close, in 24-hour time. Here Monday through Thursday share one rule and Friday gets its own, because the clinic closes earlier that day. If your hours differ by day, each pattern gets its own rule.
"medicalSpecialty": "PrimaryCare" tells Google what kind of medicine the clinic practices.
areaServed lists the towns the practice serves. The real list has ten entries, nine towns plus a county; we trimmed it here.
hasOfferCatalog is a menu of services. Each item has a name and a url pointing to the page on the site that explains that service. This is how a website says "we offer annual physicals, and here is the page about it" in a way a machine can follow.
None of this is visible to a visitor. All of it should be true, current and identical to the Business Profile.
A service page: the question and answer block
The second block sits on a service page, in this case the annual physical page. Again it is anonymized and trimmed: the real page marks up eight questions and this shows three.
{
"@context": "https://schema.org",
"@graph": [
{
"@type": "Service",
"@id": "https://www.example.com/services/annual-physical/#service",
"name": "Annual Physical",
"description": "Annual physical exams including health history review, vital signs check, and general wellness assessment, offered by Hometown Family Practice in Decatur, AL.",
"url": "https://www.example.com/services/annual-physical/",
"provider": { "@id": "https://www.example.com/#medicalclinic" },
"areaServed": ["Decatur, AL", "Hartselle, AL", "Madison, AL", "Huntsville, AL"]
},
{
"@type": "FAQPage",
"@id": "https://www.example.com/services/annual-physical/#faq",
"mainEntity": [
{
"@type": "Question",
"name": "What is included in an annual physical exam?",
"acceptedAnswer": {
"@type": "Answer",
"text": "An annual physical typically includes a review of your health history and current medications, a check of your vital signs such as blood pressure and weight, and a general wellness assessment."
}
},
{
"@type": "Question",
"name": "Do you offer same-day appointments for annual physicals?",
"acceptedAnswer": {
"@type": "Answer",
"text": "Same-day appointments are often available. We recommend calling ahead to check availability for your visit."
}
},
{
"@type": "Question",
"name": "How do I schedule an annual physical?",
"acceptedAnswer": {
"@type": "Answer",
"text": "Call us at (256) 555-0123 to schedule your visit."
}
}
]
}
]
}"@graph" is a bundle. It lets one page carry more than one record: here, a Service and a FAQPage.
The Service record names the service, describes it in a sentence, gives the page address, and lists where it is offered.
"provider": { "@id": ... } is the link back. It says "the business that provides this is the one nicknamed #medicalclinic in the first example." The page points to the business record instead of repeating the address and hours, which keeps one source of truth.
The FAQPage record holds a list of questions. Each has the question text (name) and the answer (text).
The rule that matters most: every answer in the code must be text a visitor can read on that page. Google lists "making sure your structured data matches the visible text on the page" among its best practices for AI features (Google Search Central, "AI Features and Your Website," last updated December 10, 2025). Code that says something the page doesn't is a problem, not a bonus.
Why the type matters: the pharmacy example
The hometown pharmacy's pages use the Pharmacy type, not the generic LocalBusiness. The same idea as MedicalClinic applies: name the category so Google doesn't infer it. It also describes both of the pharmacy's stores as separate records, each with its own phone number and its own hours, because the two stores keep different hours. We walk through that block line by line in Two locations, two sets of hours.
What our 110-page audit found
On October 15, 2026, we read the structured data on every page in each site's sitemap.
Pages | Pages with rich schema | Business type | Hours in schema | Services or products | |
Decatur family practice | 80 | 80 | MedicalClinic | Yes | Catalog of 8 services |
Hartselle hometown pharmacy | 18 | 18 | Pharmacy (both stores) | Yes, per store | Not yet |
Decatur equipment rental company | 12 | Homepage only, basic | LocalBusiness (generic) | No | No |

Totals: 98 pages carry full rich schema (80 plus 18), and 63 pages carry FAQ markup (62 on the practice's site, 1 on the pharmacy's). We also compared the schema against each Business Profile. On the day we checked, the practice's name, address, phone and hours matched its profile, and so did the pharmacy's for both stores. The rental company's name, address and phone matched; hours were not in its schema at all.
The practice is the before-and-after story: before July 2026, its site had no structured data, and now all 80 pages carry it.
What happened at the practice, and the limit on what we can say
From July 23, 2026, the practice's WordPress site got a technical rebuild without a redesign, then 50 new pages. Schema was part of that package, not a separate experiment.
Here is what Search Console showed. Pages with Google impressions went from 16 to 76, comparing March 30 to May 10 with August 31 to October 11, 2026 (six weeks each, spring versus fall). Comparing July 23 to October 14, 2026 against the same dates in 2025, impressions rose from 26,782 to 36,377 (+36%), and the number of different searches the site appeared for went from 970 to 2,260. The 2026 window has 81 days of data against 84 in 2025. Clicks, though, were flat: 2,154 to 2,120, down 2%. Better visibility, not more clicks.
Now the honest part. We cannot say schema caused any of that. It launched alongside new pages, new page titles and descriptions, new content and ongoing Business Profile work, and no version of this data isolates one piece. If a vendor credits their schema for a lift at a business that changed other things at the same time, ask how they separated the effects.
The counterpoint: the rental company
The equipment rental company is the best reason to be careful with "schema did this." Its site has only the basic record that Wix generates automatically on the homepage: the name, address and phone, plus a WebSite entry. No hours, no service categories, nothing on the other 11 pages.
Yet from July 23 to October 14, 2026, compared with the same dates in 2025, Google showed that site 16,873 times against 8,148 (+107%). Impressions from searches that didn't use the company's name went from 4,068 to 11,291. Clicks rose 16%, from 886 to 1,024. The site is organized by job and category, has clear pages and has changed little since it launched in January 2025. Our read is that good structure and clear pages are doing most of that work.
So, no, you don't need rich schema to grow. What schema adds is precision: hours stated exactly, each service tied to its own page, the right business type. That is why page-level schema for each equipment category, with hours, is the rental company's next step. We will call it a lever worth pulling, not a cause.
What schema can't do
Schema is often oversold. Here is what Google itself says, and what we tell every client.
It doesn't guarantee special results. Structured data can enable richer search results, but Google decides whether to show them. Source: Google Search Central, "Intro to How Structured Data Markup Works."
FAQ rich results are now rare. Since August 8, 2023, Google shows them only for well-known, authoritative government and health websites. We add FAQ markup to state answers precisely, not to win a special format. Source: Google Search Central Blog, "Changes to HowTo and FAQ rich results."
There is no secret AI markup. Google says no special schema, and no llms.txt file, is needed to appear in AI Overviews or AI Mode. Schema helps because it makes a page unambiguous. Source: Google Search Central, "AI Features and Your Website," last updated December 10, 2025.
It doesn't override your Business Profile. The profile is the primary record. Schema supports it and can't fix a wrong profile. Source: Google Business Profile Help, "Tips to improve your local ranking on Google."
It isn't a ranking switch. As above: we can't separate its effect from everything launched with it, and we don't claim to.
Check your own site today
You can do this in about ten minutes, with no developer.
See whether you have any. Open your homepage, right-click, choose "View page source," and search for application/ld+json. If it isn't there, your site likely has no structured data. If it is, note the @type. If it says only LocalBusiness or Organization, you have the generic version.
Run Google's Rich Results Test. Paste a page address into the tool and look at what it detects. Does it show your business type, address and hours?
Compare it to your profile. Search your business name on Google and read your name, phone and hours in the panel. Then read what the markup says. They should match exactly.
Check one service page. If a page has FAQ markup, read every question and answer in the code, then find the same words on the visible page.
How we approach it
We confirm the name, address, phone, hours, services and service area with the owner and make the Business Profile match first. Then we audit every page, choose the most specific business type, put a business record on every page and give each service its own page. When hours or services change, the schema changes the same day as the profile. Our local SEO and AI enhancements work covers this, and our location presence service covers the profile side.
For a deeper primer on the format itself, see our earlier guide, Schema markup 101. To confirm your site and profile agree, our five minute consistency check walks you through it.
Frequently asked questions
What is schema markup, in one sentence?
Schema markup is a block of code on your web page, invisible to visitors, that states facts such as your business type, address, hours, services and common questions in a format Google and AI tools read exactly instead of guessing. Google's documentation describes structured data as giving explicit clues about the meaning of a page, and recommends the JSON-LD format, which is what our examples use.
Do I need schema to show up on Google or in AI answers?
No. A Decatur equipment rental company with only its website builder's basic homepage markup saw Google show its site 16,873 times from July 23 to October 14, 2026, against 8,148 in the same dates of 2025. Google also says no special markup is required for AI Overviews or AI Mode. Schema adds precision, such as exact hours and services, but it is not a requirement.
Will schema make my rankings jump?
We can't promise that, and Google doesn't either. Structured data can enable richer results but doesn't guarantee them. At a Decatur family practice, impressions rose 36% (July 23 to October 14, 2026 versus 2025) after a rebuild that included schema, but the schema launched with 50 new pages and other work, so we can't isolate its effect. Clicks were flat, down 2%.
What does it cost to add schema to a website?
It depends on the site. Many website builders add a basic record automatically, and WordPress SEO plugins can add more. A complete setup, with the right business type, hours per location, services and matching question blocks on every page, takes planning and an audit afterward. We don't quote prices in a blog post; call us and we will look at what your site already has.
What is the difference between LocalBusiness and a specific type like MedicalClinic?
LocalBusiness is the general label for any local business. Specific types such as MedicalClinic or Pharmacy say exactly what you are, so Google doesn't have to infer it from your page copy. Our audit found the family practice uses MedicalClinic on all 80 pages and the hometown pharmacy uses Pharmacy on all 18, while the rental company has only the generic LocalBusiness on its homepage.
Can schema fix a wrong Business Profile?
No. The Business Profile is the primary record for local results, and Google says complete, accurate information makes a business more likely to show up. Schema supports the profile by confirming the same facts from your website. If the two disagree, fix the profile and the site so they say the same thing, rather than expecting code to settle it.
Keep reading
What three North Alabama businesses taught us about search in the AI era: the full study, with every trend and its limits
Two locations, two sets of hours: the two-store pharmacy block, line by line
The five minute consistency check: confirm your website and profile say the same thing
AI search settings checklist: crawlers, llms.txt, FAQ markup and titles
Schema markup 101: our earlier practical guide to structured data
Entity-based SEO: why who you are wins in AI search
If your website and your Business Profile aren't telling Google the same story, you are leaving the explaining to a machine. Call (256) 274-1289 or message us for a free visibility check.