A schema markup service for local business sites should make it easier for search engines to confirm which business a page is about, what it offers and where. Structured data does not replace clear content. It labels what the page already shows, so machines can read the same facts without guessing.
Accuracy matters far more than coverage. Every fact in the markup has to agree with the page it sits on, with the Google Business Profile and with every other block of markup on the site, and most schema problems turn out to be places where those sources disagree.
Know What Schema Can and Cannot Do
Google's introduction to structured data describes it as a standardized format for providing information about a page and classifying its content. The same documentation says markup should describe content visible to users, and that valid markup makes a page eligible for features without guaranteeing them.
Think of it as a label on a box. The label helps someone sort the box quickly, but it cannot change what is inside, and a wrong label causes more trouble than no label at all.
For a plumber, roofer or dental practice, the realistic benefits are confirming core business facts in a consistent format, tying service pages to the business that provides them, and making breadcrumbs and articles explicit. Schema will not fix a thin service page, and it will not move map rankings on its own. Your profile, reviews and pages carry far more weight there.
The same applies to AI tools. Clean markup is one small input among many, and consistent business details across your site and listings matter more; that wider picture is the subject of LLM visibility for local businesses. Treat schema as the last layer of a clear page, added once the visible content is right.
Choose a Small Set of Schema Types
Most service sites need only a handful of types. More markup is not better markup.
| Type | Where it goes | Notes |
|---|---|---|
| LocalBusiness or a subtype | Homepage or contact page, once | Use the most specific fitting subtype, such as Plumber, HVACBusiness, RoofingContractor, Electrician or Dentist |
| Service | Each service page | Names the service and points to the business as provider |
| BreadcrumbList | Pages below the homepage | Matches the visible breadcrumb trail |
| Article | Guides and blog posts | Headline, author and dates that match the page |
| FAQPage | Only pages with visible questions and answers | Rich results now limited to a small set of sites |
Choosing the subtype is worth a minute of thought. A company that does heating, cooling and plumbing might fit HVACBusiness or Plumber; pick the one that matches the primary category on your Google Business Profile, so the two sources agree. If no subtype fits well, such as for a landscaping or flooring company, the parent HomeAndConstructionBusiness or plain LocalBusiness is better than a wrong guess.
The full vocabulary is on schema.org, but Google uses only part of it, so start from Google's documentation rather than the full type list.
Get the LocalBusiness Fields Right
The LocalBusiness block carries the facts most likely to conflict with your profile. Check them first.
Review:
- name: the real business name, with no added keywords.
- address: street, city, region, postal code and country.
- telephone: the main number shown on the site.
- url: the canonical homepage.
- openingHoursSpecification: the same hours as your profile.
- areaServed: the cities or regions you actually cover.
- geo: coordinates, if the address is public.
- sameAs: your official social and directory profiles.
- image and logo: real photos and your logo file.
Service-area businesses that hide their address on the profile should think carefully before publishing a street address in markup, and can rely on areaServed instead. Be careful with aggregateRating too: Google does not show review stars for reviews a business collects and marks up about itself on its own site, so keep those reviews visible for people and leave them out of the markup.
Connect Service Pages to One Business
A Service block on a "Drain Cleaning" page usually needs only a few properties: the service name as shown in the H1, a description that matches the intro, serviceType, areaServed, and a provider that points to the LocalBusiness entity by its ID.
Described in plain terms, the Service block for a hypothetical pest control company's termite page would say: the service is "Termite Treatment", the type is pest control, it is offered in the listed counties, and it is provided by the business entity defined on the homepage. Nothing more is needed for most pages.
That provider reference is the useful part. Without it, some plugins create a new, slightly different business on every service page, each with its own name or phone format. Leave prices out of markup unless the same prices are on the page and kept current.
Match Every Value to the Visible Page
Almost every serious schema problem breaks the same rule: the markup says something the page does not. A roofing company's theme outputs "ProfessionalService" because nobody changed the default. Opening hours in the markup differ from the footer. FAQ markup lists questions that appear nowhere on the page.
Before adding anything, decide where the single source of truth lives for each fact, usually the Google Business Profile and contact page, then make the markup match it. Google's local business structured data documentation lists the required and recommended properties to check against.
Review What a Schema Markup Service for Local Business Should Deliver
The work should follow a sequence you can check, not just a pasted block of JSON-LD:
- Crawl the site and list every structured data block, including theme and plugin output.
- Compare each value against the page and the profile.
- Remove duplicate and conflicting business entities.
- Recommend LocalBusiness, Service, BreadcrumbList and Article markup with exact values.
- Implement in templates so new pages inherit it.
- Validate representative pages.
- Recheck after launch and after theme or plugin updates.
The recommendations should arrive as a table of fields and values for each page type, not just finished code. That makes review easy for someone who does not read JSON-LD: the owner can scan the hours, phone and service areas and spot an error in a minute. Ask for the field values in writing before anything is implemented, so you can confirm each fact yourself.
Watch for Plugin Conflicts and Copied Markup
WordPress sites often run two or three SEO plugins that each print their own business markup, sometimes with different phone numbers. Another is a service-area page marked up as a separate business location, when the business has only one office.
Other problems include:
- Keywords added to the name field.
- JSON-LD copied from another site with old details left in.
- Markup that was never checked after a redesign.
To find these, view the page source and search for "application/ld+json", or paste the URL into the Schema Markup Validator and count how many business entities it reports. More than one LocalBusiness on a single-location site is almost always a mistake. Pick one tool to own structured data and switch off schema output everywhere else.
Validate, Then Recheck After Every Update
Run representative pages through Google's Rich Results Test and the Schema Markup Validator, then watch the enhancement reports in Search Console. Validation catches syntax errors. It does not catch a wrong phone number, so compare values by hand too.
Recheck whenever something upstream changes: new hours, a new phone number, a move, a rebrand, a theme switch or a plugin update. Those are the moments when markup quietly falls out of step with the page. Correct markup removes ambiguity; it does not promise rich results, rankings or AI citations. Judge the work by whether errors are gone and every fact matches across site, markup and profile.
Review Markup Before a Migration and After a Plugin Change
The riskiest moments for structured data are a redesign or migration, a change of SEO plugin, and the slow drift that sets in when nobody has looked at the markup in a year. Schema review is part of my SEO/AEO site audits, and WordPress sites often need it cleaned up during WordPress optimization. If you want me to look at yours, send the URL.
Frequently asked questions
What schema markup does a local business need?
Most need LocalBusiness markup, or a subtype such as Plumber, HVACBusiness or Dentist, placed once on the homepage or contact page. Add Service markup on service pages, BreadcrumbList on inner pages and Article on guides. FAQPage markup only belongs where the questions and answers are visible.
Does schema markup improve local rankings?
Not in any way Google has promised. Structured data helps search engines read business facts reliably, while map visibility depends far more on your Google Business Profile, relevance, distance, reviews and page quality. Think of schema as a clarity fix rather than a ranking lever.
Can I add review stars with schema on my own website?
Google does not show review stars for reviews a business collects and marks up about itself on its own site. Show genuine reviews on the page for visitors and keep earning reviews on your Google Business Profile. Self-serving review markup will not produce stars and can conflict with Google's guidelines.
How do I check if my schema is working?
Run pages through Google's Rich Results Test and the Schema Markup Validator, then check the enhancement reports in Search Console. Also compare each value with what the page and your profile show, because mismatches are the most common problem.
Should service-area businesses include an address in schema?
If you hide your address on Google Business Profile, keep the markup consistent with that choice. Use areaServed to describe the cities or regions you cover without publishing a street address. Whatever you choose, the markup and the profile should say the same thing.