Search Engine Optimisation 3 August 2026 8 min read

Schema Markup for Local Businesses: What to Add and Where

Most local business owners hear 'schema markup' and picture something complicated that probably isn't worth the bother. The reality is that a handful of well-placed structured data types can meaningfully sharpen how Google reads your site, and most of them take under an hour to add properly. The tricky part isn't the code, it's knowing which types to bother with and where they actually belong, because adding schema in the wrong place or with the wrong fields does nothing useful.

On this page
  1. What Schema Does for a Local Business
  2. LocalBusiness Schema: The Foundation
  3. Service Schema and What You Actually Do
  4. Review and FAQ Schema
  5. Where to Put the Code in WordPress
  6. The Fields Google Validates
Share:

What Schema Does for a Local Business

Google does not read your website the way a person does. It reads signals, and schema markup is one of the clearest signals you can give it. Without structured data, Google has to guess at the connections between your business name, your address, your services, and the reviews people leave. It can usually piece something together, but “usually” is not a strategy.

Schema markup removes that ambiguity by giving Google a structured, machine-readable description of exactly who you are and what you do. Think of it as the difference between handing someone a printed map versus describing the route in conversation. When a local search for “emergency plumber near me” fires at 11pm, Google is matching that query to real-world entities, a business, a location, a category, a trust signal. Businesses with properly implemented structured data make that matching process considerably easier, which means they show up in rich results, map packs, and knowledge panels more reliably than businesses that leave Google to figure it out alone.

The practical difference shows up in search results themselves. A local business with schema can surface star ratings, opening hours, and a phone number directly in the result snippet. Without it, you get a plain blue link and a description Google wrote for you. One of those earns a click. The other gets scrolled past.

LocalBusiness Schema: The Foundation

LocalBusiness is the schema type that underpins everything else. Without it, Google has no structured starting point for understanding who you are, where you operate, or when you’re open.

The fields that carry the most weight are name, address, telephone, openingHoursSpecification, and geo coordinates. Each one answers a different question a search engine asks before it considers surfacing you in local results. Leave two or three of them out and you’ve handed Google a half-finished picture, which is often treated much the same as no picture at all. A plumber with a name and phone number but no geo coordinates is invisible to the radius-based logic that drives map pack rankings. A restaurant with address and coordinates but no opening hours is a liability to Google, because serving a result for somewhere that might be shut damages the user experience Google is trying to protect.

The openingHoursSpecification field trips people up most often. It requires day-by-day structured data, not a plain text string like “Mon-Sat 9-5”. You can read the exact expected format in the full breakdown of local business schema fields before you publish anything.

A partial implementation is not a foundation you build on later. It’s noise that competes with your correct data.

Service Schema and What You Actually Do

LocalBusiness schema tells Google you exist, where you are, and how to reach you. It says nothing about what you sell.

That gap is where Service schema earns its place, and it matters most for businesses that work across a region rather than waiting for customers to walk through a door. A plumber covering three counties, a web designer taking on clients nationwide, a mobile dog groomer with no fixed premises. None of them have a product catalogue, but they all have distinct services that deserve their own structured description. Adding a Service block for each offering, and pointing it to the relevant page on your site with the structured signals Google weighs for service-area businesses, keeps your markup grounded in real content rather than floating as a vague, single-block description of everything you do. A shopfront selling physical goods rarely needs this. Service schema is built for businesses whose value is the work itself.

The structure is straightforward. Each Service item should include a name, a short description that matches the copy on that page, and a provider reference back to your main LocalBusiness entity. If you offer five services and have five pages, you build five blocks. The temptation is to lump everything into one generic entry, but that gives Google nothing useful to connect to a specific search. A single “we do plumbing” block is far weaker than a block for boiler installation, another for drain clearance, and another for emergency call-outs, each mapping to the page a searcher would actually land on.

Review and FAQ Schema

Review markup, what changed and what still works

Review schema is probably the most misunderstood markup a local business can add. The old pattern, adding aggregate rating markup to your own site using reviews you collected yourself, no longer earns star ratings in Google’s search results. Google removed that rich result for self-serving review markup some time ago, and many businesses are still adding it out of habit.

Where it does still work is on genuine third-party review platforms, or on pages that aggregate independently verified reviews through a recognised provider. If you run a service business and you’re expecting stars to appear under your homepage listing just because you dropped some JSON-LD on the page, you’ll be disappointed. The markup won’t break anything, but it won’t produce a rich result either.

FAQ markup, still useful, just not for the reason most people think

FAQPage schema is a different story, though the picture has shifted there too. Google pulled FAQ rich results from most search features for the majority of websites, limiting them largely to authoritative government and health sites. For a typical local business, FAQPage markup is unlikely to produce an expanded result in the SERP.

That said, structured FAQ content still has value for local SEO signals because it gives search engines a clean, unambiguous reading of your questions and answers, which can feed into AI-generated responses and voice search. Add FAQ markup if you have a genuine FAQ section. Skip it if you’re building one purely to chase a rich result that almost certainly won’t appear.

Where to Put the Code in WordPress

Schema goes in the <head> of the page. That’s the short answer, and most plugin documentation will tell you the same.

WordPress gives you several routes, a dedicated schema plugin like Rank Math or Yoast, a code snippets plugin, or direct edits to your theme’s functions.php. Each works, but the choice has real consequences. The most common mistake I see is using a sitewide schema plugin set to output LocalBusiness markup on every single URL, including blog posts, tag archives, and WooCommerce product pages. Google then sees your local business schema attached to a page that has nothing to do with a local business listing, and that tends to produce validation warnings rather than rich results.

The fix is straightforward. Scope your LocalBusiness JSON-LD to the homepage, contact page, and any location-specific landing pages only. If you’re using Rank Math, the display conditions setting handles this cleanly. If you’ve hand-coded it via a snippet, a simple conditional check against is_front_page() or a specific page ID does the job.

Once you’ve placed the code, run the URL through Google’s Rich Results Test to confirm it validates without errors. Look past the green tick and check the detected fields, because a schema block can pass validation while still missing properties Google uses for local pack rankings.

The Fields Google Validates

Errors versus warnings, they are not the same thing

Search Console’s structured data report splits problems into two buckets. Errors disqualify a result from enhanced features. Warnings flag missing recommended properties. For a LocalBusiness schema, the fields that reliably trigger errors are name, address, and url. Leave any of those out and Google cannot confirm your markup is valid.

The address block itself needs to be broken into sub-properties properly. That means streetAddress, addressLocality, postalCode, and addressCountry all need to be present as separate fields rather than one concatenated string. Validators will accept a single string and show it as passing, but Search Console reads it differently and will flag the schema as incomplete. That gap between what a third-party validator shows you and what Google’s own report surfaces is something people run into more than you’d expect.

What warnings actually mean

Missing openingHours, telephone, or priceRange will show up as recommended fields in Search Console, but they will not prevent your markup from being valid. Most schema plugins surface every optional property as though it carries the same weight as a required one, which muddies the picture considerably.

If you want to see exactly what Google considers an error versus a warning, the Rich Results Test tool shows both categories side by side. Check that before assuming your markup is clean.

Share:

Ready to take the next step?

Get in touch today and find out how we can help.

Get In Touch
Privacy Overview

Yorkshire Design uses cookies so that we can provide you with the best user experience possible.

Cookie information is stored in your browser and performs functions such as recognising you when you return to our website and helping our team to understand which sections of the website you find most interesting and useful.