The short answer: Schema markup is structured code that helps search engines interpret information already on your page, such as your business name, phone number, address, hours, and service area. It does not guarantee rankings or special search features. Used accurately, LocalBusiness schema (or a more specific subtype) clarifies legitimate business information. Used carelessly, especially with review markup, it can violate Google's policies. This guide is for service business owners and the people who build their websites.
What schema markup is, in plain English
When someone reads your contact page, they can tell which line is your phone number and which is your address. A search engine has to infer it. Schema markup labels that information in a standard vocabulary from Schema.org so it doesn't have to guess. The format Google recommends is JSON-LD, a block of code in the page that visitors never see.
Think of it as a label on a box, not a way to make the box more valuable. If what's inside isn't true or useful, the label doesn't help.
What LocalBusiness schema can communicate
- Who you are (business name, logo, website)
- How to reach you (phone, email)
- Where you are, or where you work (address, service areas)
- When you're open (hours)
- What kind of business you are (the type)
- Related profiles (social profiles and other official pages)
Google's documentation on LocalBusiness structured data lists the properties it supports.
What it cannot do
- It cannot guarantee a ranking. Local results are based mainly on relevance, distance, and prominence, per Google's local ranking guidance.
- It cannot guarantee a rich result. Valid markup makes a page eligible at most, and Google decides what to show.
- It cannot overcome distance.
- It cannot fix an incomplete Google Business Profile or thin content.
- It cannot make inaccurate information true.
I include it on every site I build because it's cheap and clear, not because I think it moves rankings on its own.
Choosing the right business type
Use the most specific Schema.org type that truthfully describes the business. Examples that exist in the vocabulary include Plumber, Electrician, RoofingContractor, HVACBusiness, GeneralContractor, HousePainter, and Locksmith. For businesses without a specific subtype (a pressure washing company, for instance), use a broader one that fits, like HomeAndConstructionBusiness, or fall back to LocalBusiness or Organization. Check Schema.org for the exact names and hierarchy before choosing, and don't force a subtype that doesn't fit.
Fields worth including
Only include what's true, current, and supported by the page or your business records.
name: your real business name, matching your website and Google Business Profileurl: your websitetelephone: your local phone numberemail: if you publish oneaddress: only if you show a public address. If you're a service-area business that hides its address, don't publish one you don't displayareaServed: the cities or regions you actually serveopeningHoursSpecification: only if hours are published on the pagelogoandimagesameAs: links to your official social or profile pagespriceRange: only if it's meaningful and accurate
Homepage vs. location page vs. service page
- Homepage: Primary business markup with your core information.
- Location pages (if you have genuinely separate locations): markup specific to that location, with its own address, phone, and hours. Don't create location pages for places you don't serve.
- Service pages: You generally don't need to repeat full LocalBusiness data on every page. Keep the details consistent with the homepage, and only mark up what's visible on that page.
Review markup: the rule many local businesses miss
Do not use self-serving aggregate rating or review markup on your own website to try to earn star ratings in Google Search. If you control the reviews or collect them for your own business, don't mark them up on your own LocalBusiness or Organization pages. That includes embedded third-party review widgets that output review markup. Google's review snippet documentation and structured data policies explain the restriction. You can still show real customer reviews to visitors on the page. Just don't wrap them in rating schema. For how reviews actually matter, see Do Google Reviews Affect Local Rankings?
A note on FAQ schema
FAQPage markup is valid when the questions and answers are visible on the page, but Google now limits FAQ rich results to a small set of sites, so a contractor should not expect a visual change in search results from it. Write FAQs for customers first.
How to validate and monitor
- Test with Google's Rich Results Test for supported result types.
- Validate general syntax with the Schema Markup Validator.
- Confirm every marked-up detail matches what's visible on the page and in your Google Business Profile.
- After publishing, check Google Search Console for errors and warnings. It reports on markup for supported result types only, so absence of a report isn't an error.
- Re-test after redesigns, plugin changes, phone changes, or a move.
Safe JSON-LD example
This uses fictional data. Publish only details that are true and visible on the relevant page.
{
"@context": "https://schema.org",
"@type": "LocalBusiness",
"name": "Example Home Services",
"url": "https://www.example.com/",
"telephone": "+1-555-555-0100",
"email": "hello@example.com",
"address": {
"@type": "PostalAddress",
"streetAddress": "123 Example Street",
"addressLocality": "Exampletown",
"addressRegion": "PA",
"postalCode": "19000",
"addressCountry": "US"
},
"openingHoursSpecification": [{
"@type": "OpeningHoursSpecification",
"dayOfWeek": ["Monday", "Tuesday", "Wednesday", "Thursday", "Friday"],
"opens": "08:00",
"closes": "17:00"
}]
}
Service-area businesses that hide their address on Google should think carefully before publishing one in markup, and can use areaServed instead.
Common markup mistakes
- Marking up information that isn't on the page
- Wrong or outdated phone, address, or hours
- Using a subtype that doesn't match the business
- Self-serving review or rating markup
- Duplicate or conflicting markup from a theme and a plugin at the same time
- Copying another company's markup and forgetting to change it
- Assuming valid markup means success
Example: a fictional electrician
This is a fictional example for illustration.
A theme and an SEO plugin both output LocalBusiness markup on an electrician's site, and one block still lists a previous phone number. The Schema Markup Validator shows both blocks, and the owner realizes one has been stale for a year. The fix isn't more markup. It's removing the duplicate, correcting the number, and adding a quarterly check to their maintenance list.
How to measure it
Schema is a clarity tool, so success is mostly the absence of errors: validation passes, no warnings in Search Console for supported types, and markup that matches your visible business information. Track the outcomes that matter separately: calls, forms, direction requests, and qualified traffic. Results vary by searcher location, query, competition, and eligibility.
Next steps
If you'd like a second opinion on what's in your site's code right now, I'll check it. Request schema validation or learn about my Local SEO service.
Related reading: Static HTML vs. WordPress for implementation considerations and the Google Business Profile Optimization Checklist for getting your core business facts right first. For how schema fits into the bigger picture, read Local SEO for Service Businesses: The Practical 2026 Guide.
Last updated: September 2026. Google changes structured data documentation periodically; check the official pages below before implementing.
About the author: Brady Green runs Grow With Brady, a web design and local SEO company for Ohio home service businesses. Before that he ran his own exterior cleaning and pressure washing business.
Sources: LocalBusiness structured data | Review snippet structured data | Structured data policies | Improve your local ranking