1,000+ citation sites ranked across 50+ countries & 45 industries Explore the directory →

How to Add LocalBusiness Schema in WordPress (No Bloat)

Three ways to add LocalBusiness schema to WordPress, which to pick, the plugin-plus-theme duplicate trap, multi-location pages, and how to verify the result.

On this page
  1. Before you touch WordPress: the values
  2. Method 1: your SEO plugin’s local module
  3. Method 2: a JSON-LD snippet in the theme header
  4. Method 3: a Custom HTML block on the location page
  5. Multi-location WordPress sites
  6. Service-area businesses on WordPress
  7. The duplicate trap, step by step
  8. Keep it current

WordPress makes it easy to add LocalBusiness schema and just as easy to add it twice. The plugin has a local module, the theme has a schema panel, the page builder has one too, and someone pasted a snippet into the footer in 2021. On WordPress the hard part is not adding the markup. It is making sure exactly one thing on the site emits it, and that it says what your Google profile and citations say. This guide covers the three sane ways to add it, how to pick one, and how to verify the result.

Before you touch WordPress: the values

Write the master NAP first: business name exactly as on your signage and Google profile, the address in one fixed format, one phone number, the canonical site URL, hours. Every method below copies from this record. If you are unsure what the web currently says about you, run the free NAP checker with your site filled in; it reports whether your pages already carry a LocalBusiness block and whether it agrees with the directories. The properties and a complete example are in the LocalBusiness schema guide; the right @type for your business is in LocalBusiness schema types.

Method 1: your SEO plugin’s local module

Most SEO plugins offer a local business or schema module, sometimes as a paid add-on. You fill in a form (name, address, phone, hours, type) and the plugin outputs the JSON-LD, often site-wide.

  • Good for: single-location businesses that already run the plugin and want a form rather than code.
  • Watch for: the type field defaulting to LocalBusiness (change it to the specific subtype), a separate “organization” block that repeats the name with a different phone, and the plugin emitting the block on pages a page builder also marks up.
  • Rule: if you use the plugin’s module, disable schema output everywhere else: theme options, page-builder schema panels, old snippets.

Method 2: a JSON-LD snippet in the theme header

For anyone comfortable with a few lines of code, a snippet is the most predictable option because nothing else generates it. Two ways to place it:

  1. A child theme. Add a function in the child theme’s functions.php hooked to wp_head that echoes the <script type="application/ld+json"> block. Only a child theme: edits to a parent theme are lost on the next update.
  2. A code-snippet plugin. The same hook, managed from the dashboard, without touching theme files. Useful when you do not control the theme.

Paste the JSON from the complete guide, replace every value from the master NAP, and set the @type to your subtype. Output it on every page with a stable @id (your homepage URL plus #business), or restrict it to the homepage and contact page if you prefer a smaller footprint; both are correct.

Method 3: a Custom HTML block on the location page

The block editor’s Custom HTML block accepts a <script type="application/ld+json"> tag. Paste the JSON-LD into a Custom HTML block on the contact page or the location page, and it ships with that page’s content.

  • Good for: multi-location sites where each location page needs its own block with its own address, phone and hours, and for editors who do not have theme access.
  • Watch for: a site-wide block from Method 1 or 2 also landing on the same page, which gives you two entities on one URL. Multi-location sites should output the brand’s Organization block site-wide and the per-location LocalBusiness blocks only on their pages.

Multi-location WordPress sites

One location page per unit, each with its own LocalBusiness block (own @id, address, phone, hours), the homepage carrying an Organization block for the brand. Do not let a site-wide LocalBusiness block with head office’s address run on the location pages; that tells crawlers every branch is one entity at one address. The same one-master-record-per-unit discipline that governs citations governs schema; the playbook is in franchise SEO and multi-location citation building.

Service-area businesses on WordPress

Add areaServed with the same towns you declare on Google and Bing, and decide once whether the street address appears in the schema; if you hide it on your profiles and omit it here, keep the name and phone identical everywhere. The address rules per platform are in service area business citations.

The duplicate trap, step by step

The most common WordPress schema problem is two blocks. Find them:

  1. Open the page, view the source, search for application/ld+json.
  2. For each block, read the @type and the name. Two blocks describing the business with different phones, addresses or types is the conflict.
  3. Trace each to its source: SEO plugin module, theme schema setting, page builder, a snippet plugin, a hard-coded footer widget.
  4. Keep the one you can maintain from the dashboard. Turn the others off, then re-check the source.

Then validate with the tools in how to validate LocalBusiness schema and confirm the survivor agrees with your listings using the NAP checker. Two blocks that disagree are a NAP inconsistency published on your own domain; one block that disagrees with your Google profile is the same problem in one step.

Keep it current

The schema is a copy of your master NAP, so it changes whenever the record changes: a move, a rebrand, new hours, a new phone. Add “update the schema” to the same checklist as your Google profile and directory edits; the order of operations for the two big events is in how to change your business address everywhere and business name change: update every listing. Citation Builder builds and re-verifies the directory side of that record; the free checker is how you confirm your WordPress site still matches it.

Frequently asked questions

Do I need a plugin to add LocalBusiness schema to WordPress?

No. A JSON-LD block is a few lines of HTML, and WordPress can output it from a Custom HTML block, from a child theme's header hook or from a code-snippet plugin. Most SEO plugins also offer a LocalBusiness module, which is fine as long as it is the only thing on the site emitting that block. The requirement is one source, not a particular tool.

Why does my WordPress site show two LocalBusiness schema blocks?

Because two things are emitting it: usually an SEO plugin's local module plus a theme or page-builder schema setting, or a snippet someone pasted years ago plus a newer plugin. Two blocks that disagree publish a NAP conflict on your own site. Find both, keep the one you can maintain, remove the other.

Should LocalBusiness schema be on every WordPress page?

It can be, as long as it is the same entity with the same @id everywhere. The minimum is the page that represents the location: the homepage or contact page for one location, each location page for many. Site-wide output is convenient in WordPress because the theme header runs on every page; just make sure location pages do not also emit head office's block.

How do I check the schema after adding it?

View the page source and confirm exactly one application/ld+json block describes the business, run the URL through a schema validator to catch syntax and property errors, then run the free NAP checker with your website filled in to confirm the name, address and phone in the schema match what the directories publish.

Get these citations built for you

Citation Builder ranks the best citation sites for your country and industry, and builds your optimized citations.

Start free

Found this useful? Pin us in Google and our pages carry a preferred badge in your own Top Stories and AI results.

Add us as a preferred source on Google

Citation sites for your market

Every directory below is ranked from our live catalog, with the free ones marked.

Start free