Most small business websites I audit have the same issue: Google can see the words on the page, but it is not always confident what is “the business” and what is just page content. That is especially common for local businesses where the key details are scattered across the header, footer, contact page, and Google Business Profile.

LocalBusiness schema is the simplest way to pull those facts together in a format Google can understand consistently. It does not guarantee rich results, and it will not fix weak content or a poor Google Business Profile, but it does help reduce ambiguity. I see it work best for trades and service businesses around Warwick, Leamington Spa, Kenilworth, Coventry, and Stratford-upon-Avon where competitors often have inconsistent addresses, mixed phone numbers, or vague service areas.

Below is the Local Business Schema Generator Prompt I use. It produces a single JSON-LD <script> block you can paste into your site, then validate.

What is schema markup?

Schema markup is structured data you add to your pages to describe what your content actually is. It is not visible to visitors, but it gives search engines clear labels.

For example, schema can explicitly tell Google “this is the business name, this is the phone number, this is the service area, these are the opening hours”. Without it, Google has to infer those details from whatever it finds in your navigation, footer, contact page, and third-party listings.

How does schema markup work?

Schema works by adding a block of code (usually JSON-LD) to a page. That code uses standard property names from Schema.org.

Google reads it when it crawls the page. If the schema is valid and matches what is on the page and across your business presence, it can help Google understand your business entity and your key details more reliably.

Why schema markup is important

I mainly use schema for three reasons:

It reduces confusion when your details appear in multiple places. This matters a lot when a business has moved, changed phone numbers, or uses a trading name.

It supports rich result eligibility on some result types, depending on the page and the markup.

It helps local SEO fundamentals by reinforcing consistent business information. If your site says one thing, your Google Business Profile says another, and a directory listing says something else, schema can help anchor the correct version, but only if you are consistent everywhere.

How to create schema markup for a website

For most small business sites, I start with LocalBusiness schema on the homepage or on a specific location page.

If you have one location with a public address, I normally place it on the homepage and contact page, but only if the details are identical and you are careful not to duplicate conflicting markup.

If you have multiple locations, I prefer a separate location page per location, each with its own LocalBusiness schema that matches that location.

If you are a service area business with no public address, I omit the address and focus on areaServed and clear contact details.

Local Business Schema Generator Prompt for ChatGPT

How to use this:

Copy the whole prompt below into ChatGPT, replace the placeholders with your details, and hit send. You’ll get a single JSON-LD <script> you can paste into your website <head> (or your SEO plugin’s “schema” / “header scripts” area).


You are a schema markup assistant.

I want you to generate clean, valid JSON-LD schema for my business using https://schema.org
.

Goal:

Output ONE <script type=”application/ld+json”> block I can copy/paste into my website.

Use “@type”: “LocalBusiness” OR the most specific LocalBusiness subtype that fits (e.g. “ProfessionalService”, “Dentist”, “Restaurant”, “Plumber”, etc).

Include only properties that make sense for the information I provide. If something is blank or unknown, omit it completely (don’t guess).

Use UK formatting where relevant (e.g. phone numbers with +44, GBP pricing).

Keep the JSON valid (double quotes, commas in the right places, no trailing commas).

If I say my address is not public, do NOT include streetAddress/postalAddress fields. Use “areaServed” instead.

Business details (fill these in):
Business name:
Alternate name (optional):
Business type / industry:
Short description (1–2 sentences):
Website URL:
Primary page URL for schema (usually homepage):
Email:
Phone (include country code):
Price range (e.g. “££” or “£200 – £750”):
Logo URL (full image URL):
Main image URL (full image URL):
Google Maps URL (optional):
Social/profile links for sameAs (list as many as you have):

Address (choose ONE option):
A) My address is public:

Street address:

Locality / town:

Region / county:

Postcode:

Country:
OR
B) My address is NOT public: YES/NO

Areas served (list towns/regions you serve):

Opening hours (use 24-hour time, include timezone implicitly as local):
Monday:
Tuesday:
Wednesday:
Thursday:
Friday:
Saturday:
Sunday:

Services (list each service like this — include as many as you want):
Service 1 name:
Service 1 description:
Service 1 URL:
Service 2 name:
Service 2 description:
Service 2 URL:
(etc)

Extra trust signals (optional):
Founding date (YYYY-MM-DD):
VAT number (optional):
Business registration number (optional):

Rules:

Use “@context”: “https://schema.org
“

Include: name, url, description, telephone (if provided), email (if provided), image, logo, priceRange, sameAs (if provided)

Include “areaServed” as either:

a list of Place objects, or

a list of strings (use whichever is cleaner)

Include openingHoursSpecification with dayOfWeek + opens/closes (don’t use “24hrs”; use opens “00:00” closes “23:59” if 24/7)

Add services using “hasOfferCatalog” (preferred) or “makesOffer” with Offer + itemOffered as Service

Do not output explanations, only the final <script> block.

Now generate the schema.


How to implement schema markup and how to add schema markup to your website

Once ChatGPT produces the JSON-LD script:

Copy the full <script type=”application/ld+json”> block.

Add it to the correct page.

Publish the change.

Then validate it.

If you only do one thing, make sure the details in the schema match the details a human can see on the page. If your schema says one phone number and the footer shows another, you are creating mixed signals.

Where should schema markup be placed on web pages?

If you are using JSON-LD, you can place it in either:

The <head> section, which is my preference for most sites

The end of the <body>, which is also fine

It does not have to sit next to the content it describes. The main point is that it loads on the page for both users and crawlers.

How to add schema org markup to my theme

If you are comfortable editing your theme, you can add the JSON-LD script in a header file or a template file that outputs the relevant page.

In WordPress, that is often header.php or a theme hook that injects content into the <head>. I tend to avoid hardcoding it directly into a theme if I expect the business might switch themes later, because schema can disappear overnight when the theme changes.

A safer approach for most small business owners is adding it via an SEO plugin or a header scripts plugin, because it survives a theme change.

How to implement schema markup in WordPress without duplicates

This is where I see people get caught out.

Many WordPress SEO plugins already output some schema. If you add your own LocalBusiness schema on top, you can end up with two different LocalBusiness entities on the same page.

When I work on a site, I always check the page source first and search for application/ld+json. If I can see existing LocalBusiness markup, I either:

Configure the plugin properly so it outputs the right details, or

Disable the plugin’s LocalBusiness output and add my own single version

How to check your schema is working using Schema Validator

After publishing, validate the live page.

Use the Schema.org Schema Markup Validator. Paste in the page URL, run the test, and look for:

Errors, which usually mean broken JSON or invalid property structure

Warnings, which often mean optional fields are missing, and may be fine

If you get an error, it is usually a formatting issue like a missing comma or an extra bracket. The quickest fix is to paste the exact JSON back into ChatGPT and ask it to output a corrected version that is valid JSON.

I also check that the validator is picking up the business name, URL, phone number, and either address or areaServed exactly as intended. If it is not, I assume the markup is either not loading on the page you think it is, or it is being overridden by a plugin.

How to use schema markup to boost ranking in Google

I do not treat schema as a direct rankings lever.

What I see in practice is that schema supports rankings indirectly by reducing confusion and improving how your listing can appear. If your result becomes more compelling because it qualifies for enhancements, that can improve click-through rate, and better click behaviour can help over time.

For a local business in a competitive area like Coventry or Leamington Spa, schema is rarely the thing that outranks competitors on its own. It is usually part of a bundle of improvements: clearer service pages, better internal linking, consistent NAP, and a properly maintained Google Business Profile.

The takeaway

If you are a small business owner, LocalBusiness schema is usually the best starting point. Use the prompt above to generate a clean JSON-LD script, add it once in the right place, avoid duplicates, then validate it.

If you want to push this further later, you can add page-specific schema like FAQs or services, but only when the on-page content genuinely supports it.