On this page
Add a JSON-LD block to your home page describing your business with the most specific schema.org type that fits, such as Plumber, Electrician or RoofingContractor. Google requires name and address for its local business feature and recommends phone, URL, hours and coordinates. Mark up only what's visible on the page, test it in Google's Rich Results Test, then confirm with URL Inspection in Search Console.
Key takeaways
- Google recommends JSON-LD, a block of code that sits apart from the visible text.
- Use the most specific LocalBusiness subtype schema.org offers for your trade.
- Only mark up information a visitor can see on the page; hidden or misleading markup breaks Google's guidelines.
- Reviews you collect about your own business can't earn star snippets for LocalBusiness markup.
- Correct markup doesn't guarantee any special search display. It makes your details easy to read.
What is schema markup, and what does it do?
Schema markup, which Google calls structured data, is a short block of code that states facts about a page in a standard format. Google's introduction to structured data describes it as a standardized way to provide information about a page and classify its content. For a service business, that means telling search engines in plain, machine-readable terms: this is a plumbing company, here's its name, phone, address, hours and website.
The vocabulary comes from schema.org, a shared standard search engines use. Google's documentation then says which properties it uses and how.
Set expectations honestly. Google's structured data guidelines say plainly that Google doesn't guarantee your structured data will show up in search results, even if it's correct. Markup won't move you up the map pack by itself. It removes ambiguity, which is worth an hour of work on a site you plan to keep for years.
What you'll need
- Access to your site's code or settings, specifically a way to add code to the
<head>of your home page. Many website builders and WordPress plugins have a field for this. - Your business facts, exactly as shown on the site: name, street address (if you publish it), phone, website address, hours and logo.
- Your schema.org type. See the table below.
- Google's Rich Results Test and, ideally, Search Console already set up for your site.
How to check what your site already has
Before writing anything, find out what's there. Many sites carry markup their owners never knew about, added by a theme, an SEO plugin or a previous designer, and two competing blocks that disagree are worse than one.
- Open Google's Rich Results Test and enter your home page address.
- Read the list of detected items. If you see a local business or organization item, open it and compare every value with your current name, phone, address and hours.
- Repeat for your contact page and one service page.
- Write down where each block comes from. If a plugin generates it, you'll edit the plugin's settings rather than pasting new code, or you'll turn that feature off before adding your own.
If the test finds nothing, you're starting clean. If it finds an old phone number or a business type that doesn't fit, fixing that existing block is the first job.
Which schema type fits your trade?
Google's local business structured data page says to use the most specific LocalBusiness subtype possible. Schema.org lists these under HomeAndConstructionBusiness:
| Your trade | schema.org type |
|---|---|
| Electrical contractor | Electrician |
| General contractor, remodeler | GeneralContractor |
| Heating and cooling | HVACBusiness |
| Painter | HousePainter |
| Locksmith | Locksmith |
| Movers | MovingCompany |
| Plumber | Plumber |
| Roofer | RoofingContractor |
| Other home trades (cleaning, gutters, pressure washing, lawn care) | HomeAndConstructionBusiness, or LocalBusiness |
Don't invent a type. If there's no exact match, use the closest broader one. A pressure washing company is not a Plumber because both involve water; a broader, accurate type beats a specific, wrong one. If you run two distinct trades under one name, pick the type for the work that makes up most of your jobs.
Which properties should you include?
From Google's local business page:
- Required:
nameandaddress(a PostalAddress with street, city, state, ZIP and country). - Recommended:
telephone(with country and area code),url,openingHoursSpecification,geo(latitude and longitude with at least five decimal places) andpriceRange(under 100 characters).
Schema.org also defines areaServed, which describes the geographic area where a service is provided. It's a valid way to list your towns, though Google's local business page doesn't list it among the properties Google uses.
An example you can adapt
This is a JSON-LD block for a fictional plumbing company. Replace every value with your own, exactly as it appears on your site.
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "Plumber",
"name": "Example Plumbing Co.",
"url": "https://www.example.com/",
"logo": "https://www.example.com/logo.png",
"telephone": "+1-555-010-0142",
"address": {
"@type": "PostalAddress",
"streetAddress": "100 Example Street",
"addressLocality": "Springfield",
"addressRegion": "MI",
"postalCode": "49000",
"addressCountry": "US"
},
"openingHoursSpecification": [{
"@type": "OpeningHoursSpecification",
"dayOfWeek": ["Monday", "Tuesday", "Wednesday", "Thursday", "Friday"],
"opens": "07:00",
"closes": "17:00"
}],
"areaServed": ["Springfield", "Shelbyville", "Capital City"]
}
</script>
Google's page notes that for a business open around the clock, you set opens to 00:00 and closes to 23:59.
How to add it, step by step
- Write the block using the example above and your real details. Check every value against what the page shows.
- Test it before it goes live. Paste the code into Google's Rich Results Test using the code option. Fix anything marked as an error. Warnings about optional fields are fine to leave if you don't have that information.
- Add it to the head of your home page. Google recommends placing JSON-LD in the
<head>. In WordPress this is usually a header-scripts setting or an SEO plugin; in a site builder, look for a custom code or header code field; on a custom site, your developer adds it to the template. - Publish, then test the live URL in the Rich Results Test. This catches cases where a builder strips or alters the code.
- Cross-check with the Schema Markup Validator at validator.schema.org. Schema.org's validator page says it checks schema.org markup in general, while Google's tool focuses on what Google can use.
- Inspect the page in Search Console with URL Inspection, so you know Google can fetch it, and keep your sitemap submitted so Google notices future changes. Google's local business page lists both as the final steps.
What if you don't publish a street address?
Many home-based contractors hide their address on their Business Profile and don't print it on the website either. Google's guidelines say not to mark up content that isn't visible to readers of the page, so don't put your home address in the markup if it isn't on the site.
That leaves a gap, because Google lists address as required for its local business feature. Google's organization structured data page offers a fallback: Organization markup has no required properties, and Google recommends adding name, url, logo, telephone and sameAs links (such as your Business Profile and social pages) on your home page or about page. For a business with no public address, Organization markup describes you accurately without exposing your house.
Common mistakes and how to fix them
| Mistake | Why it's a problem | Fix |
|---|---|---|
| Adding star ratings from your own reviews | Google's review snippet guidelines say that when a business controls reviews about itself, its LocalBusiness or Organization pages aren't eligible for star review display. That includes embedded Google or Facebook review widgets. | Remove aggregateRating from your own business markup. Show reviews to visitors; don't mark them up for stars. |
| Marking up hidden information | Google's guidelines say don't mark up content readers can't see | Show the hours, phone and address on the page, or leave them out of the markup. |
| Details that disagree with your listings | Conflicting phone numbers or hours confuse customers and search engines alike | Make the website, markup, Google, Bing and Apple match exactly. |
| Copying the same LocalBusiness block onto every page | Google advises placing markup on the page it describes | Put the business block on the home page or contact page, not on every blog post. |
| Blocking the page from Google | Google's guidelines say not to block structured data pages with robots.txt or noindex | Check URL Inspection for the page. |
Misleading markup can lead to a manual action. Google says that affects rich result eligibility rather than regular ranking, but it's still a problem you don't need.
What to do next
- Re-test after any website redesign or theme change; markup is often lost in a rebuild.
- Update the markup whenever your hours or phone change, at the same time as your Business Profile.
- Look at how AI tools describe your business; clear, consistent facts help there too. For the rest, read how to show up in ChatGPT answers.
- Every site we build through our website service ships with tested structured data. If you're not sure what yours has, a free system quote will check it.
Frequently asked questions
Does schema markup improve rankings?
Google doesn't promise it. Its guidelines say correct structured data isn't guaranteed to appear in search results. It helps Google read your business details accurately.
Should I use JSON-LD, Microdata or RDFa?
Google accepts all three and recommends JSON-LD, which sits in its own block and is easier to maintain.
Can I add star ratings to my home page markup?
Not for your own business. Google says LocalBusiness and Organization pages that control their own reviews aren't eligible for star review display.
Which page should the business markup go on?
Usually the home page. Google suggests the home page or a single page about the organization, such as the about page.
Sources
- Google Search Central: Introduction to structured data markup
- Google Search Central: Local business (LocalBusiness) structured data
- Google Search Central: General structured data guidelines
- Google Search Central: Review snippet structured data
- Google Search Central: Organization structured data
- Schema.org: HomeAndConstructionBusiness
- Schema.org: Schema Markup Validator
- Google Search Console Help: Rich Results Test
General information for service-business owners, not legal, tax or financial advice. Rules vary by state; check with a qualified professional for your situation.