Home / Blog / Technical SEO
Technical SEO

How to Add Schema Markup for a Local Business (Step by Step)

A practical guide to LocalBusiness schema in JSON-LD: what to include, a copy-paste template, how to add it to WordPress, and how to test it.

Schema markup is code that tells search engines exactly what your business is: its name, address, phone number, hours and services. It won't rank you on its own, but it removes guesswork and supports your Google Business Profile.

Here's how I add it for local clients.

What schema does (and doesn't do)

It does:

  • Confirm your business details in a format Google reads directly
  • Reinforce the name, address and phone number on your Business Profile
  • Help search engines and AI tools understand your services

It doesn't:

  • Guarantee rich results. Google decides when to show them, and it now shows FAQ rich results for very few sites
  • Replace a good profile, content and reviews

Step 1: Pick the most specific type

Start from LocalBusiness and choose the most specific type that fits, such as Dentist, Plumber, BeautySalon, AutoRepair, Restaurant or LegalService. The full list is on schema.org.

Step 2: Gather your details

Your details must match your Google Business Profile exactly:

  • Business name
  • Full address
  • Phone number (with country code)
  • Website URL and logo
  • Opening hours
  • Latitude and longitude
  • Links to your official profiles (Facebook, Google Maps, etc.)

Step 3: Use this template

Replace everything in capitals:

{
  "@context": "https://schema.org",
  "@type": "Dentist",
  "name": "BUSINESS NAME",
  "url": "https://YOURWEBSITE.com",
  "logo": "https://YOURWEBSITE.com/logo.png",
  "image": "https://YOURWEBSITE.com/office.jpg",
  "telephone": "+1-000-000-0000",
  "priceRange": "$$",
  "address": {
    "@type": "PostalAddress",
    "streetAddress": "STREET ADDRESS",
    "addressLocality": "CITY",
    "addressRegion": "STATE",
    "postalCode": "ZIP",
    "addressCountry": "US"
  },
  "geo": {
    "@type": "GeoCoordinates",
    "latitude": 0.0,
    "longitude": 0.0
  },
  "openingHoursSpecification": [{
    "@type": "OpeningHoursSpecification",
    "dayOfWeek": ["Monday","Tuesday","Wednesday","Thursday","Friday"],
    "opens": "09:00",
    "closes": "17:00"
  }],
  "sameAs": [
    "https://www.facebook.com/YOURPAGE"
  ]
}

Step 4: Add it to your site

Any website: paste the code inside a <script type="application/ld+json"> tag in the <head> of your homepage or contact page.

WordPress: most SEO plugins, such as Rank Math or Yoast, have local business settings. If you add custom code instead, use a header-code plugin and make sure you don't end up with two conflicting versions.

Multiple locations: each location page gets its own schema with that location's details.

Step 5: Test it

  1. Run the page through Google's Rich Results Test
  2. Check it in the Schema Markup Validator (validator.schema.org)
  3. After a few days, check Search Console for errors

Common mistakes

  • Details that don't match the Business Profile. This is the one I fix most often
  • Marking up content that isn't visible on the page. For FAQ schema, the questions and answers must appear on the page word for word
  • Duplicate schema from a theme and a plugin at the same time
  • Wrong business names or old addresses copied from outdated pages

On one dental site, I added Dentist schema with the correct details and FAQ schema on 11 service pages, 105 questions in total, each matching the visible text exactly. You can read the full story in my recovery case study.

Not sure your schema is set up correctly? Ask me for a free audit.

Want results like these for your business?

Send me your website and Google Business Profile. I'll reply with a free audit and the three to five changes I'd make first.

Get a free SEO audit →