OUR SERVICE AREA
DM. Digital serves businesses across the USA and is open 24/7 for SEO in the USA. We handle Google Business Profile, Local SEO, Website Design, Content Strategy, Analytics & Performance and AI Visibility, measured by the calls and forms they bring in.
Let's get you more clients
Get your free SEO audit. We'll help you get more leads, visibility, and clients for your local business.

Short answer: schema markup is code that labels the facts on a page, such as your business name, address, phone, hours, services and reviews, so search engines and AI systems can read them reliably. For a local business, the core is a JSON-LD LocalBusiness block using the most specific subtype available, with details that match your visible page and your Google Business Profile exactly, plus Service markup for each service page, all tied together with @id references. Be clear about what schema does not do. Google says structured data is not required for its AI features and is not a ranking signal. Since 2019 Google has not shown review stars for a business's own reviews of itself. FAQ rich results stopped appearing in Google Search on May 7, 2026. Microsoft has said schema helps its language models understand content, and OpenAI, Perplexity and Anthropic have not said either way. Schema is a labeling layer that keeps your facts accurate and unambiguous. It is not a shortcut to AI citations.
This guide explains what schema does and does not do, then walks through LocalBusiness, Service, FAQ and Review markup with example code, how to connect them, how to test and maintain them, and the mistakes and myths that cause the most trouble.
It labels facts so machines do not have to guess, and it makes a page eligible, never guaranteed, for certain search features.
Schema.org is a shared vocabulary launched in 2011 by Google, Microsoft, Yahoo and Yandex, as Google announced at the time. It is now maintained as a community effort, and Schema.org reports that over 45 million web domains used its markup as of 2024. The vocabulary defines types such as LocalBusiness and Service and properties such as address, telephone and openingHoursSpecification.
Structured data is the format that carries that vocabulary on a page. Google's introduction to structured data describes it as a standardized format for providing information about a page and classifying its content. Google supports JSON-LD, Microdata and RDFa, says all three are equally fine when valid, and recommends JSON-LD as the easiest to implement and maintain.
The honest summary: schema is worth doing well because it costs little, removes ambiguity and supports Bing and Google features, but anyone promising that schema alone will get a business quoted by ChatGPT is claiming something no AI company has said.
Because schema is visible, technical and easy to sell, while the factors that actually correlate with AI visibility are harder work.
The research on what gets businesses mentioned by AI points mostly elsewhere. An Ahrefs study of 75,000 brands in May 2025 found branded web mentions had the strongest correlation with Google AI Overview brand mentions, at 0.664, ahead of branded anchors, branded search volume, Domain Rating and backlinks. For local businesses, a BrightLocal study of nearly 2 million AI citations, published in August 2026, found that for service businesses Google Business Profiles accounted for 45% of the sources AI tools cited and Yelp for 12.3%.
Those findings are correlations from vendor tools, not proof. But they point the same direction as Google's own guidance: AI features draw on the same indexed pages, profiles and reputation signals as regular search. Schema helps by making your own facts unambiguous. Your Google Business Profile, your reviews, your listings and mentions on other sites carry most of the weight.
Microsoft's own content guidance for AI answers, published in October 2025, puts schema alongside clear H2 and H3 headings, direct questions with short answers, lists, comparison tables and keeping key answers out of tabs, PDFs and images. In other words, schema is one part of making a page easy to read, not a substitute for a page that is easy to read.
LocalBusiness is the anchor: who the business is, where it is and how to reach it.
Google's LocalBusiness documentation requires name and address, and recommends properties including telephone, url, geo coordinates, openingHoursSpecification and priceRange. Google advises using the most specific subtype available, marking up each location separately, and says it does not guarantee structured data features will appear.
| Property | Google's status | What to put in it |
|---|---|---|
| @type | Required | The most specific subtype, such as Plumber or Dentist |
| name | Required | Your real business name, exactly as on your Google Business Profile and signage |
| address | Required | A PostalAddress with street, city, region, postal code and country |
| telephone | Recommended | Your main business number, the same one on your profile and directories |
| url | Recommended | The canonical URL of the page for this location |
| geo | Recommended | Latitude and longitude of the location |
| openingHoursSpecification | Recommended | Your real customer-facing hours by day |
| priceRange | Recommended | An honest indication of price level or range |
| sameAs | Optional | Absolute URLs of your official profiles elsewhere |
| areaServed | Optional | The cities or regions you serve, for service-area businesses |
Schema.org's LocalBusiness type has many more specific subtypes. A plumber should use Plumber, which sits under HomeAndConstructionBusiness. Others include Electrician, HVACBusiness, RoofingContractor, Locksmith, MovingCompany, Dentist, and the MedicalBusiness family for clinics. Some trades have no exact subtype. Towing, for example, has none, so AutomotiveBusiness is the closest fit. Do not stretch a type to fit: EmergencyService covers only fire stations, hospitals and police stations, not emergency plumbers or tow companies.
Here is an example for a fictional plumbing company with a storefront. Every value in it must match what appears on the page and on the Google Business Profile.
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "Plumber",
"@id": "https://www.example.com/#business",
"name": "Example Plumbing Co.",
"url": "https://www.example.com/",
"telephone": "+1-555-010-0123",
"priceRange": "$$",
"address": {
"@type": "PostalAddress",
"streetAddress": "123 Main St, Suite 120",
"addressLocality": "Springfield",
"addressRegion": "IL",
"postalCode": "62701",
"addressCountry": "US"
},
"geo": {
"@type": "GeoCoordinates",
"latitude": 39.7990,
"longitude": -89.6440
},
"openingHoursSpecification": [{
"@type": "OpeningHoursSpecification",
"dayOfWeek": ["Monday","Tuesday","Wednesday","Thursday","Friday"],
"opens": "07:00",
"closes": "18:00"
}],
"areaServed": ["Springfield", "Riverton", "Chatham"],
"sameAs": [
"https://www.facebook.com/exampleplumbing",
"https://www.yelp.com/biz/example-plumbing-springfield"
]
}
</script>
Many trades are service-area businesses that hide their address on Google. Google's Business Profile guidelines say service-area businesses should hide their address from customers. If your address is not shown on your website or profile, think carefully before publishing it in markup. Structured data should describe what is on the page. Many service-area businesses publish the city, region and postal code, list the towns they cover in areaServed, and leave the street address out of both the page and the markup. Google's documentation still lists address as required for LocalBusiness rich results, so this is a tradeoff between rich result eligibility and keeping your address private, and the right choice depends on your business.
Schema should repeat the same facts your Google Business Profile and directory listings show: one name, one address format, one phone number, the same hours. Google's guidelines say the profile name should reflect the business's real-world name and be represented as it is consistently recognized in the real world. When your website, markup, profile and listings agree, machines see one business. When they conflict, you give every system a reason to doubt which version is right.
Keep the details exactly identical. Use one phone format, one way of writing your suite number and one version of your business name. The consistency matters more for customers and AI tools reading listings than for any ranking formula, but it is easy to get right and costly to get wrong.
The sameAs property lists URLs of other pages that represent the same business, such as your Facebook page, Yelp listing, LinkedIn page and industry directory profiles. Use absolute URLs, and list only official profiles you control or that clearly represent your business. Google's organization markup documentation says this kind of markup can help Google disambiguate an organization.
areaServed lists the places you serve. It describes coverage. It does not let a business rank in towns far from where it operates, because Google's local results depend heavily on distance from the searcher.
Google advises marking up each location separately. A business with three offices should have a location page for each, each with its own LocalBusiness block, its own address, phone and hours, and its own @id, all linked back to one Organization for the brand.
LocalBusiness says who you are. Service markup says what each page offers.
Google has no rich result for the Service type, so Service markup does not change how a page looks in results. Its value is clarity: it labels the service a page is about, who provides it and where it is available, and ties it to the business entity. For systems that read structured data, that removes the guesswork about what a page offers.
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "Service",
"@id": "https://www.example.com/services/water-heaters/#service",
"name": "Water heater repair and replacement",
"serviceType": "Water heater replacement",
"url": "https://www.example.com/services/water-heaters/",
"provider": { "@id": "https://www.example.com/#business" },
"areaServed": ["Springfield", "Riverton", "Chatham"],
"description": "Repair and replacement of tank and tankless water heaters, gas and electric."
}
</script>
An Offer can add a price or price range to a service. Only add pricing you actually honor, and only if the same pricing appears on the page. A range that is wide enough to be true is better than a teaser price nobody pays. Many local businesses leave prices out of markup entirely, and that is a reasonable choice. A missing price does no harm. A misleading one creates a conflict between your page, your markup and what customers are charged.
Service markup works best on a dedicated page for each service, where the heading, the content and the markup all describe the same thing. Expert opinion supports dedicated service pages in general: the Whitespark 2026 Local Search Ranking Factors survey ranked "Dedicated Page for Each Service" first of all factors for local organic results. Stacking ten Service blocks on one page that covers ten services in a few lines each gives every system much less to work with than ten real pages.
FAQ rich results no longer appear in Google Search, so FAQ markup is now optional and should never be the reason to write an FAQ.
In August 2023 Google limited FAQ rich results to well-known, authoritative government and health websites. Then, as Search Engine Journal reported, Google said that as of May 7, 2026, FAQ rich results are no longer appearing in Google Search, for any site. Google said it would drop the FAQ rich result report, the FAQ search appearance and FAQ support in the Rich Results Test in June 2026, and end Search Console API support in August 2026, according to PPC Land. HowTo rich results were removed even earlier, in September 2023, as Search Engine Journal reported.
TechWyse reports that Google will still use FAQ markup to understand pages. That is a reason not to rip out accurate FAQ markup in a panic. It is not a reason to add FAQ markup expecting a visible benefit.
The visible questions and answers on a page still matter, with or without markup. Google says it decides what makes a good featured snippet from page content, and AI systems retrieve passages from pages. The evidence on FAQ sections specifically is mixed. A SE Ranking study of 216,524 pages in November 2025 found pages with FAQ sections averaged slightly fewer ChatGPT citations than pages without, though the researchers noted FAQs often sit on simpler support pages. A Kevin Indig analysis of 18,012 ChatGPT citations found 78.4% of question-linked citations came from headings. The consistent lesson is that clear question headings with direct answers help readers and machines. The markup is secondary.
The best questions come from real calls, emails and Search Console queries. "How much does a water heater replacement cost?" is a real question. "What sets us apart?" is not. Answer in the first sentence, then add detail. Keep answers factual and specific to your business and area.
Google's structured data policies apply to all markup: it must represent the main content of the page, and you should not mark up content that is not visible to readers. For FAQs, that means every marked-up question and answer must appear on the page, the content should not be advertising, and the same FAQ block should not be copied across dozens of pages.
Ready to Grow Your Local Business?
DM. Digital helps local service businesses dominate Google with custom-built websites.
Since September 2019, Google does not show review stars for a local business's reviews of itself, even genuine ones.
This is the most misunderstood part of local schema, and many guides still get it wrong. In September 2019, Google announced it would stop showing review rich results for LocalBusiness and Organization types, and their subtypes, when the entity being reviewed controls the reviews, as described in Google's announcement. Google called these reviews "self-serving" and defined them as a review about entity A placed on the website of entity A. That includes reviews embedded through a third-party widget.
So a plumber who collects 200 genuine reviews and marks them up on its own website will not get stars for that markup in Google's organic results. The reviews are real, but the business controls where they are displayed.
Google's review snippet documentation lists the types still eligible for review stars, such as products, recipes and some other content types, under its rules.
Some businesses keep accurate AggregateRating markup on the page where testimonials are displayed, so the data labels what readers see. If you do, keep it honest:
Do not expect stars from it. The place to build visible ratings for a local business is your Google Business Profile and the review platforms customers use, not your own site's code.
If a local business's review stars are not showing in organic results, the most likely reason is the 2019 self-serving rule, not a coding error. Other reasons include invalid markup, a rating that does not match visible reviews, or markup on a page with no reviews. But fixing the code will not bring back stars for a business's own reviews of itself.
@id references turn separate blocks into one connected description of your business.
An @id is a unique identifier, usually a URL with a fragment such as https://www.example.com/#business, that names an entity once so other blocks can point to it. The LocalBusiness block declares the @id. Each Service block references it as the provider. A WebSite block can reference it as the publisher. An Organization block for the brand can be the parentOrganization of each location.
The benefit is consistency. Instead of repeating your name, address and phone in five places, where they can drift apart, you describe the business once and reference it everywhere else.
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@graph": [
{
"@type": "Organization",
"@id": "https://www.example.com/#org",
"name": "Example Plumbing Co.",
"url": "https://www.example.com/",
"logo": "https://www.example.com/logo.png",
"sameAs": ["https://www.facebook.com/exampleplumbing"]
},
{
"@type": "Plumber",
"@id": "https://www.example.com/#business",
"name": "Example Plumbing Co.",
"parentOrganization": { "@id": "https://www.example.com/#org" },
"telephone": "+1-555-010-0123",
"address": {
"@type": "PostalAddress",
"streetAddress": "123 Main St, Suite 120",
"addressLocality": "Springfield",
"addressRegion": "IL",
"postalCode": "62701",
"addressCountry": "US"
}
},
{
"@type": "Service",
"@id": "https://www.example.com/services/drain-cleaning/#service",
"name": "Drain cleaning",
"provider": { "@id": "https://www.example.com/#business" },
"areaServed": ["Springfield", "Riverton"]
}
]
}
</script>
JSON-LD sits in a script block in the page's head or body. The most common technical problem we see is duplicate markup: a theme, an SEO plugin and a manually added snippet each outputting their own LocalBusiness block, sometimes with different phone numbers or hours. Pick one source for your markup, generate it from the same data that powers your visible pages, and remove the others. When the visible hours and the markup hours come from the same field, they cannot drift apart.
Google's structured data policies say markup should represent the main content of the page and should not describe content hidden from readers. If the markup lists a service, the page should describe it. If the markup shows hours, the page should show the same hours. Markup that says something different from the page is, at best, ignored, and at worst a policy problem.
Schema is one input into how Google recognizes your business as an entity, alongside your profile and mentions across the web.
An entity is a distinct thing, such as a business, that Google stores facts about. In May 2020 Google said its Knowledge Graph had over 500 billion facts about five billion entities, drawn from hundreds of sources across the web. For local businesses, Google says the Google Business Profile is the way to manage how the business appears, rather than claiming a knowledge panel.
Recognition comes from the same facts showing up consistently: your website, your markup, your Google Business Profile, your listings and mentions on other sites. Schema with accurate sameAs links helps tie those together. It cannot create recognition on its own if the rest of the web does not confirm it.
Mostly from the visible text, passage by passage, with structured data as a supporting layer where a system uses it.
Retrieval at the passage level is not new. In October 2020 Google said it could better understand the relevancy of specific passages, improving 7 percent of queries at the time. AI answer systems work in a similar way: they retrieve sections of pages that match a question, then summarize them. That is why the structure and wording of the visible page matter so much.
Studies of what AI tools cite give practical direction, with the caution that they are correlational and mostly cover ChatGPT. Kevin Indig's analysis of 18,012 ChatGPT citations, reported by Search Engine Land in February 2026, found 44.2% of citations came from the first 30% of a page, cited passages were nearly twice as likely to use definitional language, and cited text averaged 20.6% proper nouns such as names, places and brands. The SE Ranking study found sections of 120 to 180 words between headings averaged more ChatGPT citations than very short sections, and pages updated within the last three months averaged more citations than older ones.
For a local business page, that translates into a clear pattern:
Schema then labels the core facts on that page, such as the business, the service and the location, so a system that reads structured data does not have to infer them. The two layers work together. Neither replaces the other.
Beyond LocalBusiness and Service, a few other types are useful on a local business site, and several once-popular ones are retired.
An Organization block describes the brand behind one or more locations, with its logo and sameAs links. A WebSite block describes the site itself and can reference the Organization as its publisher. For a single-location business, the LocalBusiness block can carry most of this. For multi-location brands, a separate Organization connected to each location's LocalBusiness through parentOrganization keeps the structure clear.
Breadcrumb markup describes where a page sits in the site's hierarchy, such as Home, then Services, then Water Heaters. Breadcrumbs are listed in Google's Search Gallery as a supported feature. They are useful on service and location pages because they reinforce a clear site structure, the opposite of the flat, near-identical city pages Google's spam policies warn about.
For blog posts and guides, Article markup with an author helps describe who wrote the content. Google's Article documentation says author.url should link to a page that uniquely identifies the author, that sameAs can serve as an alternative, and that authors should use the Person type. Google's helpful content guidance asks whether it is self-evident who authored the content and warns that fabricating creator profiles is deception. A real author page for the owner or a real staff expert, linked from posts and marked up as a Person, fits this pattern.
Businesses that host classes, open houses or community events can use Event markup on event pages. Businesses that sell physical products can use Product markup, which remains eligible for review stars under Google's rules because product reviews are not covered by the 2019 self-serving change for businesses.
Google keeps simplifying search results. HowTo rich results were removed in 2023, FAQ rich results stopped in May 2026, and on June 12, 2025 Google announced it would phase out seven more rich result types, including Course Info, Claim Review, Estimated Salary and Vehicle Listing, as Search Engine Land reported. Google said that update would not affect how pages are ranked, according to Search Engine Journal. The lesson is to check Google's current Search Gallery before adding any markup for a visual feature, rather than following guides written years ago.
Ready to Grow Your Local Business?
DM. Digital helps local service businesses dominate Google with custom-built websites.
Each real location gets its own page and its own markup, and the structure should mirror your Google Business Profiles.
A business with several offices should have one location page per office, each with a LocalBusiness block carrying that office's address, phone, hours and coordinates, and each with its own @id. All of them can point to one Organization for the brand. The location page is also usually the right website link for that location's Google Business Profile, so the profile, the page and the markup describe the same place.
Medical, dental and legal practices often have individual practitioners. Google's Business Profile guidelines allow some practitioners, such as doctors, dentists and lawyers, to have their own profiles when they serve the public. On the website, a practitioner page can describe that person with Person markup and link them to the practice's LocalBusiness, so the relationship between the practitioner and the practice is explicit.
What does not work is markup for locations that do not exist. Google's guidelines say virtual offices and remote mailboxes are not eligible for Business Profiles, and markup describing fake locations misrepresents the business in the same way.
Here is the order we recommend for building or fixing schema on a local business site.
Steps 3 and 10 matter most. Markup built on wrong facts spreads those facts further, and markup that is never updated becomes wrong on its own.
Test before publishing, monitor after, and update whenever the business changes.
Run both testing tools on each page template, not just the homepage. A location page template with a bug breaks every location page at once.
Schema goes stale when the business changes and the markup does not. New hours, a new phone number, a new service, a closed location or a rebrand all need markup updates the same day the page changes. The best protection is generating markup from the same data as the page, so a change in one place updates both. Beyond that, a quarterly check with the testing tools and a review of Search Console's reports catches most problems.
Most schema problems come from plugins on autopilot and from advice that was outdated years ago.
The right subtype and properties vary by trade.
| Business | Suggested type | Notes |
|---|---|---|
| Plumber | Plumber | Service blocks for water heaters, drains, leaks and repiping |
| Electrician | Electrician | Service blocks for panel upgrades, EV chargers, rewiring |
| HVAC | HVACBusiness | Separate services for repair, installation and maintenance plans |
| Roofer | RoofingContractor | areaServed reflects the counties you work in |
| Locksmith | Locksmith | Hours must reflect real availability if you list 24/7 |
| Moving company | MovingCompany | Local and long-distance services as separate Service blocks |
| Dental practice | Dentist | One block per office location |
| Medical clinic | MedicalClinic or another MedicalBusiness subtype | Use the most specific medical type that fits |
| Towing | AutomotiveBusiness | No towing subtype exists; do not use EmergencyService |
| Law firm | Attorney or LegalService | Practice areas as Service blocks |
Ready to Grow Your Local Business?
DM. Digital helps local service businesses dominate Google with custom-built websites.
Here is what a typical cleanup looks like on a fictional HVAC company's site.
Before: the theme outputs a generic LocalBusiness block with the company's old phone number. An SEO plugin outputs a second block typed as Organization with the current number but no address. A review widget adds AggregateRating claiming 312 reviews, while the page shows six testimonials. Every service page carries a copy of the same FAQPage markup, added to chase rich results that no longer exist. The Google Business Profile lists hours of 7 a.m. to 6 p.m., the website footer says 8 a.m. to 5 p.m., and neither block in the markup has hours at all.
After: one HVACBusiness block with an @id, generated from the same data as the footer, carrying the current phone number, the full address, geo coordinates and hours that match the profile. sameAs links point to the company's Facebook, Yelp and BBB profiles. Each service page, such as AC repair, furnace installation and maintenance plans, has its own Service block pointing to the business @id. The review widget's markup is removed. The duplicated FAQ markup is removed, while the useful visible questions stay on each page under clear headings. The Rich Results Test and the Schema.org validator show no errors on any template.
Nothing in the after version guarantees a ranking change or an AI citation. What changed is that every system reading the site, from Google to Bing to an AI assistant, now sees one business with one set of facts that agrees with its profile and listings. That consistency is the actual goal.
If the answers are unclear, the markup is probably inconsistent somewhere, and that is worth fixing before adding anything new.
A single-location business with a handful of services can manage basic schema. Complexity grows quickly after that.
An owner with one location and a few services can add a LocalBusiness block, test it and keep it updated. Help makes sense when a business has many service pages, multiple locations, a site where plugins and themes generate conflicting markup, or no one with the time to check it after every change. The real cost of bad schema is rarely a penalty. It is quiet inconsistency: the markup says one thing, the page another, the Google Business Profile a third.
Schema is generated from the same data as the page, so it cannot drift.
DM. Digital builds client websites as custom code on our own platform, not WordPress, Wix or Squarespace, so there are no competing plugins writing their own markup. Each site gets one connected structured data graph: the most specific LocalBusiness subtype, a block per location, Service markup on each service page linked to the business @id, and sameAs links to the client's official profiles. The business details in the markup come from the same source as the visible page, so when hours or services change, both change together. This is part of our technical SEO and site structure work.
Schema sits alongside the work that carries more weight for local and AI visibility: consistent citations, review generation and response on Google and other platforms, and content built around what customers ask. Clients get a monthly report on leads, traffic, domain rating, backlinks and AI mentions, plus a live lead dashboard.
For one plumbing company we work with, ChatGPT mentions rose from 1 to 6 and Google AI Overview mentions went from none recorded to 13 between March and September 2026. That came from the full program, not schema alone, and no agency can guarantee AI placement or rankings. Engagements start at a budget of $5,000 per month, with no minimum commitment and 30 days notice.
Schema markup is worth doing well, and worth understanding honestly. A clean, connected JSON-LD graph, with the most specific LocalBusiness subtype, Service markup on each service page, accurate sameAs links and details that match your page and Google Business Profile exactly, removes ambiguity for every system that reads it. What it does not do is rank a site, guarantee AI citations, produce stars for your own reviews or bring back FAQ rich results. The businesses AI tools recommend most often tend to have accurate profiles, strong reviews, consistent listings and mentions across the web. Schema keeps your own facts straight while that work does the heavy lifting.
If you want your markup, profile and listings checked and kept consistent, contact DM. Digital. Dan will call you back, run an audit and send a proposal.
Last updated on
Why trust DM. Digital?
Founded in 2018, DM. Digital is an SEO Agency serving businesses across the USA. All content is reviewed by our licensed technicians.
Ready to Grow Your Local Business?
DM. Digital helps local service businesses dominate Google with custom-built websites.

A plain-language guide to robots.txt, llms.txt and the AI crawlers from Google, OpenAI, Anthropic, Perplexity, Microsoft and Apple: what each one does, what blocking it changes, and how to stay visible in search and AI answers.

A practical 21-check audit covering your business data, website readability, reviews, mentions and what AI tools actually say about you, with a scoring system and a plan to fix the gaps.

Entity SEO makes your business easy for Google and AI tools to recognize as one distinct, trustworthy entity. Here is the 8-step process, a worked example and a 90-day plan.