Key takeaways

  • Store name, address and phone (NAP) once in WordPress and output it everywhere, schema included.
  • LocalBusiness schema needs only name and address; use the most specific type and match the visible page.
  • Build location pages from a template with required local fields, or they risk becoming doorway pages.
  • Service-area businesses should hide their address, not invent one.
  • Your site can help relevance and prominence, never distance, and nobody can pay for a better local ranking.

Local SEO services for WordPress websites succeed or fail on a few build details that most sites get slightly wrong: where the business name, address and phone number are stored, what the LocalBusiness schema says, and how location pages are built. None of it is glamorous. All of it decides whether your site supports your Google Business Profile or quietly contradicts it.

I have worked in SEO and digital marketing for more than 16 years, much of it on WordPress, and these are the details I check first when a local business asks why its site isn’t helping in Maps and the local results. This article stays on the WordPress side. For the wider structured data picture see our guide to structured data SEO.

What your website can and can’t change in local results

Start with Google’s own description of how local results are ranked. Its help page on improving your local ranking names three factors:

  • Relevance: “how well a Business Profile matches what someone is searching for.”
  • Distance: “how far each business is from the customer who’s searching.”
  • Prominence: “how well-known a business is”, which also draws on information such as “how many websites link to your business and how many reviews you have.”

The same page states: “There’s no way to request or pay for a better local ranking on Google.”

Diagram of Google's three local ranking factors, relevance, distance and prominence, with what a WordPress website can influence under each one
Figure 1. Google's three local factors, and where a WordPress site can and can't help.

Your website can’t move your premises closer to the searcher. It can make it clear what you do and where (relevance), and it can earn links and mentions that make you better known (prominence). Everything below serves those two.

Local SEO services for WordPress websites start with one source of NAP

NAP is your business name, address and phone number. Google’s Business Profile guidelines ask you to “represent your business as it’s consistently represented and recognized in the real world”, to use “a precise, accurate address”, and to “use a local phone number instead of a central call center helpline number whenever possible.” Your website should say the same thing, the same way, everywhere.

One settings card holding name, address and phone feeding the header, footer, contact page and markup, with a stray old copy crossed out
Store name, address and phone once and output them everywhere from that source.

The problem on WordPress is that NAP ends up typed into many places: a header widget, a footer column, the contact page, a page builder section on the home page, the SEO plugin’s settings, a schema plugin, and every location page. When the phone number changes, someone updates four of them.

The fix is a single source of truth:

  1. Store NAP once, in a theme options page, a small custom settings screen, or the fields of a “location” post.
  2. Output it everywhere through one shortcode, block or template function.
  3. Generate the LocalBusiness schema from the same fields, so markup and visible text can’t disagree.
Where NAP appears Typical WordPress setup Better setup
Header and footer Text typed into a widget or builder section Template part reading the stored fields
Contact page Typed into page content Same block or shortcode as the footer
SEO or schema plugin Separate settings screen, filled in once at launch Fed from the stored fields, or checked against them
Location pages Typed by whoever wrote the page Custom fields on each location, required
Google Business Profile Edited by the owner, separately Checked against the site after every change

Make the phone number a clickable tel: link on mobile, and write the address as text, not as an image or only inside an embedded map.

Free tool · SEO ROI Calculator

Before you pay for location pages, estimate what ranking for each local search could be worth.

Enter search volume, CPC and your current ranking to estimate traffic, revenue and value for a keyword. Free.

Calculate your SEO ROI →

Local business schema on WordPress

Google’s documentation for LocalBusiness structured data lists only two required properties: address and name. Recommended ones include geo, openingHoursSpecification, telephone, url, priceRange and department. It also says to “use the most specific LocalBusiness sub-type possible”, with examples such as Restaurant and HealthClub, and notes that on a CMS “it may be easier to use a plugin that’s integrated into your CMS.”

A markup card listing name, address, phone, opening hours and location, feeding a local business listing
LocalBusiness markup needs a name and address; the rest is recommended.

That last line is fair, and most WordPress sites should start with their SEO plugin’s settings. The mistakes I find are rarely about syntax:

  • Two plugins, two graphs. The SEO plugin outputs one organisation, a separate schema plugin outputs another, and they disagree on the name or phone.
  • Generic type. Everything is marked up as Organization or plain LocalBusiness when a specific type such as Dentist or Plumber exists on schema.org.
  • One markup for many places. A business with three branches outputs head-office details on every location page.
  • Opening hours that don’t match the page. The schema says one thing, the visible hours another.

For businesses that serve customers at their premises, schema.org’s LocalBusiness type describes “a particular physical business or branch of an organization.” For multi-branch businesses that means one LocalBusiness block per branch, on that branch’s page, with its own address, phone and hours.

Then validate. Google’s page says to “validate your code using the Rich Results Test and fix any critical errors”, and adds that “Google does not guarantee that features that consume structured data will show up in search results.” Schema helps Google read your details. It doesn’t rank you on its own.

Your schema should be a copy of what the page already says, never a place to add claims the page doesn’t make.

Location pages that aren’t doorways

Location pages are where WordPress sites most often cross a line. Google’s spam policies describe doorway abuse as pages “created to rank for specific, similar search queries”, and give as an example “having multiple domain names or pages targeted at specific regions or cities that funnel users to one page.” Twenty city pages with the town name swapped and nothing else are exactly that. The vetting side of this, from the point of view of an MSP choosing service and location pages, is covered in our guide to SEO for managed IT firms; here is how to build it properly in WordPress.

Wireframe of a WordPress location page template showing required fields: branch name, address, local phone, opening hours, map, staff or team, local services, directions and branch-specific reviews
Figure 2. A location page template with required fields. If a field can't be filled honestly, the page probably shouldn't exist.

The WordPress build that works best is a custom post type for locations, with custom fields for the details that make each place different. The template then outputs the visible details and the LocalBusiness schema from the same fields. When someone adds a new branch, they fill in a form rather than copying a page and editing words.

Fields every location page template should require

  • Branch name as it appears on the sign and the Business Profile
  • Full street address, written as text
  • Local phone number, as a tel: link
  • Opening hours, with holiday changes
  • What this branch offers, if it differs from other branches
  • Directions, parking or access notes written for that location
  • Who works there, or who customers will meet
  • A link to that branch’s Business Profile or reviews

If you can’t fill most of those fields for a town, you don’t have a location there. You have a service area, which needs a different approach.

Rank Check Reports

Once your location pages are live, check where they actually rank for the searches customers make.

A live Google check of your keywords on desktop and mobile · from $14.99 per check · no subscription · report within one working day

Order a rank check report →

Service-area businesses: no fake addresses

Plumbers, cleaners, electricians and other businesses that travel to customers are where I see the riskiest shortcuts: virtual offices and “locations” in every town in the region. Google’s guidelines are direct: “If you’re a service-area business, you should hide your business address from customers.”

A real base with its address hidden, linked to the towns it serves, while fake offices in other towns are crossed out
Service-area businesses hide the address and list the towns they really cover.

On the website, that means:

  • one page per service, with the towns you cover listed honestly
  • a service area page that explains where you travel, how quickly and on what terms
  • schema that describes the business at its real base, with areaServed naming the area you cover (schema.org defines it as “the geographic area where a service or offered item is provided”)
  • town pages only where you have something specific to say: jobs done there, local conditions, a team based nearby

Custom WordPress development services for local SEO: when they’re worth it

Not every local business needs custom development. A single-location business can do this well with a decent theme, a mainstream SEO plugin set up properly and a carefully written contact page. Paying for custom post types and fields is worth it when:

  • you have several branches, or will soon
  • several people edit the site and NAP keeps drifting
  • your SEO plugin can’t output the specific business type or per-branch schema you need
  • location pages are created often, and you want the template to stop thin pages from being published

When I scope that work, the brief to a developer is short: one data source per location, one template, schema generated from the same fields, and validation before launch. Our WordPress SEO consulting covers that kind of build review, and the page structure decisions behind it are part of SEO website structure work.

Free tool · Ping My URL

Updated your address, hours or a location page? Let search engines know the page changed.

Notify Google and other search engines about up to 5 new or updated URLs at once. Free, no sign-up.

Ping your URLs →

The WordPress local SEO checks I run first

When a local business brings me a WordPress site, these come first:

  • Compare NAP on every template with the Business Profile, character by character.
  • View the page source of the home, contact and one location page, and list every structured data block.
  • Run the Rich Results Test on those same pages.
  • Read three location pages side by side. If they read the same with the town swapped, they need rewriting or merging.
  • Check that each Business Profile links to the right page: the branch page for a branch, not always the home page.
  • Check that phone clicks and direction clicks on the site are tracked.

None of this is long work on a small site. Our local SEO page explains how I combine it with the Business Profile and reviews side, and you can read about my background on my profile page. I charge by the hour, so a single-location site with a clean setup costs little to check.

FAQ

What do local SEO services for WordPress websites include?

A NAP setup stored once and shown consistently, LocalBusiness schema that matches the visible page, location or service area pages with real local content, correct links from each Business Profile, and tracking of calls and direction clicks. The Business Profile and reviews work sits alongside it.

Do I need a plugin for local business schema in WordPress?

Not necessarily. Google itself says a CMS plugin may be the easier route, and many SEO plugins can output the basics. Custom code makes sense when you need per-branch markup or a specific business type your plugin can’t produce. Either way, check that only one consistent block describes each location.

Are custom WordPress development services for local SEO worth the cost?

For a single location, usually not: settings and careful content do the job. For several branches, or a site where many people edit contact details, a custom location post type with required fields pays back by stopping inconsistencies and thin pages before they happen.

Can I create a page for every town I serve?

Only where you have something specific to say about that town. Google’s spam policies name pages targeted at specific regions or cities that funnel users to one page as doorway abuse. A single service area page plus a few genuine town pages is safer and usually more useful.

Does LocalBusiness schema improve my local ranking?

Not directly. It helps Google read your details correctly, and Google says it doesn’t guarantee that features using structured data will appear. Local ranking rests on relevance, distance and prominence, and the schema supports relevance only by stating clearly what you are and where.

If your WordPress site's NAP, schema or location pages don't match how your business really works, talk to me and we'll work out which fixes matter first.

Eugen Platon · SEO consultant with 16+ years in SEO and digital marketing · free 10-minute first call

Book a free SEO consultation →

Eugen Platon

Eugen Platon

Director of SEO & Web Analytics at onwardSEO
Eugen Platon is a highly experienced SEO expert with 16+ years of experience propelling organizations to the summit of digital popularity. Eugen, who holds a Master's Certification in SEO and is well-known as a digital marketing expert, has a track record of using analytical skills to maximize return on investment through smart SEO operations. His passion is not simply increasing visibility, but also creating meaningful interaction, leads, and conversions via organic search channels. Eugen's knowledge goes far beyond traditional limits, embracing a wide range of businesses where competition is severe and the stakes are great. He has shown remarkable talent in achieving top keyword ranks in the highly competitive industries of gambling, car insurance, and events, demonstrating his ability to traverse the complexities of SEO in markets where every click matters. In addition to his success in these areas, Eugen improved rankings and dominated organic search in competitive niches like "event hire" and "tool hire" industries in the UK market, confirming his status as an SEO expert. His strategic approach and innovative strategies have been successful in these many domains, demonstrating his versatility and adaptability. Eugen's path through the digital marketing landscape has been distinguished by an unwavering pursuit of excellence in some of the most competitive businesses, such as antivirus and internet protection, dating, travel, R&D credits, and stock images. His SEO expertise goes beyond merely obtaining top keyword rankings; it also includes building long-term growth and optimizing visibility in markets where being noticed is key. Eugen's extensive SEO knowledge and experience make him an ideal asset to any project, whether navigating the complexity of the event hiring sector, revolutionizing tool hire business methods, or managing campaigns in online gambling and car insurance. With Eugen in charge of your SEO strategy, expect to see dramatic growth and unprecedented digital success.
Eugen Platon
Check my Online CV page here: Eugen Platon SEO Expert - Online CV.