Home » Blog » Local SEO for WordPress: How to Win Customers in Your City
WordPress Development

Local SEO for WordPress: How to Win Customers in Your City

Local SEO for WordPress checklist showing Google Business Profile, NAP consistency, location pages and LocalBusiness schema for winning the map pack

Local SEO for WordPress is the work of making a service business visible to the people who can actually walk in, call or book: the plumber three suburbs over, the dental practice in the city centre, the tax adviser someone searches for on their phone at lunch. For these businesses the map pack – the block of three business listings with a map that Google shows above the normal results – matters more than position 1 in the classic organic list, because that is where the calls come from. I have set up and repaired local SEO for dozens of client sites – trades, clinics, restaurants, agencies’ clients in Germany, the UK, the US and Australia – and the pattern is always the same: the businesses that win are rarely the ones with the biggest budget. They are the ones that did the boring parts completely.

This guide is the full playbook as I actually run it on WordPress sites: how local rankings really work (three factors, only two of which you control), how to build a Google Business Profile that is genuinely finished rather than half-filled, NAP consistency and the directories that still matter, location pages that rank without being doorway spam, LocalBusiness schema done properly in WordPress, a reviews strategy that is both effective and legal, local content that earns links, a citation audit routine, and how to track your local rankings without lying to yourself. No hacks, no “secret sauce” – just the checklist that works, in order.

Table of contents

How local search results actually work

When someone searches “emergency plumber” or “physiotherapist near me”, Google shows two different ranking systems on one page. The map pack (also called the local pack) is powered by Google Business Profile data and local signals; the organic results below it are the normal web ranking, where your WordPress site competes on content and authority. A local business can rank in both, in one, or in neither – and they are won differently. The map pack drives most of the calls for “urgent” and “near me” searches; organic wins the research-stage searches like “how much does a bathroom renovation cost”. You want both, but if you serve a city and take phone calls, the map pack is the prize.

Google has been unusually transparent about what ranks the map pack. Three factors:

  • Proximity – how close the business is to the searcher. You cannot change your address to chase this, and you should not try. What you can do is make sure Google understands your real service area, and use location pages to compete in nearby towns where proximity alone will not carry you.
  • Relevance – how well your profile and website match what was searched. This is the factor most small businesses under-invest in: categories, services, page content and schema all feed it, and it is entirely in your control.
  • Prominence – how well-known and well-regarded the business appears: review count and quality, citations across the web, links from local sites, mentions in local press, and the general authority of your website.

Everything in this guide sorts into those three buckets. Proximity is fixed, so the whole game is relevance and prominence. A business 4 km away with a complete profile, 80 reviews and a real service page will beat a business 1 km away with a half-filled listing – I have watched it happen in client reporting for years.

Diagram of the three local SEO ranking factors - proximity, relevance and prominence - showing what a business can control for map pack rankings
Proximity is fixed – relevance and prominence are the two local ranking factors you control.

Google Business Profile: done fully, not half-done

The Google Business Profile (GBP, formerly Google My Business) is the single highest-leverage asset in local SEO, and almost every profile I audit is 40% complete. “Done fully” means every section Google offers is filled, accurate and maintained:

  • Categories. Pick the most specific primary category that fits (“Emergency plumber” beats “Plumber” if that is your bread and butter) – the primary category carries the most weight – then add every genuinely relevant secondary category. Do not add categories you do not serve; it dilutes relevance and invites the wrong calls.
  • Services. List every service individually, with the short description fields filled in using the words customers actually search, not your internal jargon. “Boiler repair” not “thermal appliance servicing”.
  • Description and attributes. 750 characters about what you do, for whom, and where – written for a human, with your main services and city named naturally. Tick every accurate attribute (wheelchair access, appointment required, and so on).
  • Photos. Exterior (so people find the door), interior, team, and work-in-progress or finished-job photos – and keep adding them monthly. Profiles with regular fresh photos measurably get more calls and direction requests. Phone photos are fine; stock photos are worse than nothing.
  • Posts. A short update every week or two – a finished project, an offer, a piece of advice. Posts expire from view quickly, which is exactly the point: they signal an actively run business.
  • Q&A. Most owners do not know this section exists, so it fills up with unanswered questions from strangers. Seed it yourself – you are allowed to ask and answer your own questions – with the five things every customer asks: parking, prices, opening hours edge cases, service area, booking.
  • Reviews and replies. Covered in depth below, but note here: reply to every review, positive and negative. Replies are public, they show prospective customers how you handle problems, and an owner who replies is an owner who is paying attention – which is what the profile is supposed to prove.

Two housekeeping rules. First, keep opening hours accurate including holidays – a “closed” surprise is the fastest way to a one-star review. Second, never buy a virtual office address to fake a second location; Google suspends profiles for it, and a suspended profile can take weeks of appeals to restore. If you serve customers at their location, use a service-area business profile honestly.

Google Business Profile optimisation checklist covering categories, services, photos, posts, Q&A and review replies for local SEO
A Google Business Profile is only an asset when every section is filled and maintained – most profiles I audit are 40% complete.

NAP consistency and the directories that still matter

NAP stands for name, address, phone – and consistency means the same business name, the same address format and the same phone number everywhere your business appears online. Google cross-references these mentions (citations) to confirm your business is real and established, which feeds prominence. Inconsistency – “Smith & Sons Ltd” here, “Smith and Sons Plumbing” there, an old address on a directory you forgot – muddies that confirmation.

The practical standard: decide one canonical version of your name, address and phone (write it in a text file), use it on your website footer and contact page, in your GBP, and in every directory. Local phone numbers beat national call-centre numbers for local trust signals.

Directories are not the ranking lever they were a decade ago, but a core set still matters – for citations, for the occasional referral traffic, and because some feed data into other platforms:

Directory Market Why it matters
Google Business Profile Everywhere The map pack itself – non-negotiable
Bing Places Everywhere Free, five minutes, feeds Bing and AI assistants
Apple Business Connect Everywhere Apple Maps listings for iPhone users
Facebook / Instagram Everywhere A checked profile is a citation and a trust check
Yelp USA mainly Still strong in US local results and feeds other services
Das Örtliche, Gelbe Seiten, 11880 Germany / DACH The established German directory set customers still check
Yell, Thomson Local UK Legacy UK directories with domain authority
Industry directories Per trade Trade associations, chambers of commerce, professional registers

For my German clients I always add the DACH set – Das Örtliche and Gelbe Seiten in particular still get checked by an older customer demographic, and a chamber of commerce (IHK) or trade register mention is a strong, hard-to-fake citation. Beyond the core set, stop: fifty spammy directory submissions from a cheap SEO package do nothing except create fifty places where your NAP can drift out of date.

Location pages on WordPress done right

If you serve more than one town, location pages are how your website competes where proximity does not carry you. Done right, they are genuinely useful pages that rank for “your service + their town”. Done wrong, they are doorway spam – twenty near-identical pages with the town name swapped out – which Google’s spam policies explicitly target and which I regularly get hired to clean up after.

The test for a legitimate location page is simple: does this page contain anything that is actually about this place? A page worth publishing has most of these:

  • Unique opening content written about serving that area – not a template with a find-and-replace town name.
  • Real local evidence: projects completed there (photos, short case notes), reviews from customers in that town, how long you have worked in the area.
  • Practical specifics: travel or call-out arrangements for that area, which services are most requested there, local regulations or building styles if relevant to your trade.
  • A local-relevant FAQ – three to five questions with real answers, not padding.
  • Its own title tag, meta description and H1 targeting “service + town”, and its own LocalBusiness or Service schema.

On WordPress I build these as a proper page hierarchy (/locations/townname/ or /servicename-townname/) with a shared template that enforces the structure but forces unique content into every field – a custom post type with required fields beats twenty hand-made pages that drift apart, and it is exactly the kind of thing I set up in custom WordPress development projects. The discipline that matters: only build pages for areas you genuinely serve, and build them one at a time as you can fill them with real content. Five honest location pages outperform twenty-five templated ones, and they do not carry a spam-policy risk.

LocalBusiness schema: what to include and how

Schema markup is structured data – a machine-readable block that tells search engines exactly what your business is, where it is, and when it opens, removing guesswork. For local SEO the relevant type is LocalBusiness or, better, its specific subtype: Plumber, Dentist, Attorney, Restaurant, Electrician and dozens more. The subtype is a direct relevance signal.

What a proper LocalBusiness block includes:

  • @type – the most specific subtype that fits your business.
  • name, address, telephone – matching your canonical NAP exactly.
  • url, image, priceRange – a real photo or logo URL, and a price range like “€€”.
  • geo – latitude and longitude of your location.
  • openingHoursSpecification – your actual hours, matching GBP.
  • areaServed – the towns or regions you cover, especially for service-area businesses.
  • sameAs – links to your GBP, Facebook, LinkedIn and key directory profiles, tying your citations together.

How to add it in WordPress, in order of preference. First, check what you already have: Yoast SEO, Rank Math and SEOPress all output basic Organization or LocalBusiness schema when configured – fill in their local settings before adding anything else, because duplicate schema blocks contradicting each other are worse than one modest block. Rank Math’s local module covers most single-location businesses completely. Second, for multi-location sites or specific subtypes the plugins do not offer, I add a JSON-LD block per location page – a small snippet in the theme or via a hook, populated from the same fields that render the visible page, so the schema can never drift out of sync with the content. Third, validate with Google’s Rich Results Test and Schema.org’s validator; a schema block with errors is ignored, silently.

One honest caveat: schema is a clarity signal, not a rocket. It will not lift a weak page over a strong one. What it does is remove ambiguity, make you eligible for richer result displays, and – increasingly – feed the AI-driven search surfaces cleanly, which is the same structured-clarity principle I cover in the AI search optimisation guide.

Reviews: earning them and embedding them legally

Reviews are the heaviest prominence signal you can influence, and the strongest conversion asset on the profile – most people read them before calling. The strategy has three parts: earning, replying, embedding.

Earning them. The only sustainable method is asking, systematically, at the moment of satisfaction. The job is done, the customer is pleased – that is when you send the link (GBP gives you a short direct review link; put it in a QR code on the invoice, in the job-completion email, in the WhatsApp follow-up). Businesses that ask every customer collect ten times the reviews of businesses that wait. What you must not do: buy reviews, review-swap with other businesses, gate reviews (asking only happy customers via a filter form and diverting unhappy ones – explicitly against Google’s policies and, in many jurisdictions, consumer law), or incentivise with discounts. Beyond policy, fake reviews are increasingly a legal problem: regulators in the EU, UK and US have all moved on fake and incentivised reviews, and the platforms delete suspicious batches – taking your rating with them.

Replying. Every review gets a reply within a few days. Positive: short, personal, name the job if appropriate. Negative: calm, factual, offering to resolve offline – the reply is written for the hundred future readers, not for the one angry author. A profile where the owner replies thoughtfully to a two-star review converts better than a profile with a slightly higher rating and silence.

Embedding on your site. Showing Google reviews on your WordPress site is legitimate and effective, with two rules. Legally and practically, embed real reviews via the Places API or a reputable plugin that fetches them live, or quote them verbatim with attribution – do not retype “improved” versions, and do not mark up review schema for reviews that do not exist on an independent platform (self-serving review schema on your own pages is ignored by Google anyway). Performance-wise, review widgets are notorious page-weight offenders – lazy-load them below the fold, or fetch and cache server-side. A testimonials section that drags your mobile score down 20 points costs more than it earns.

Local content that earns links and rankings

Prominence is partly links, and local links are the most gettable links there are – you do not need a viral post, you need to be genuinely part of a local ecosystem that already has websites. Content ideas that work for real service businesses:

  • Local cost and process guides: “What a bathroom renovation costs in [city]” or “Getting a heat pump approved in [region]” – specific, local, and the kind of page local news and forums link to when the topic comes up.
  • Area-specific problem content: the water hardness, building stock, weather or regulations of your region create genuinely local questions (“Why older houses in [city] have damp basements”). No national competitor can write these credibly.
  • Project case notes: before/after write-ups with photos, one per notable job. They power your location pages and give you something real to post on GBP.
  • Sponsorships and community involvement: the local sports club, charity run or school event you sponsor almost always has a website that lists sponsors with a link. This is the most reliable local link there is, and it is real marketing besides.
  • Local press: local journalists constantly need a tradesperson, doctor or expert to quote. A short, helpful comment on a local story earns a mention and often a link; being genuinely responsive to one local reporter is worth more than any directory.
  • Partnerships: the suppliers, complementary trades and business associations you already work with – a mutual “partners” mention with real context is legitimate; a paid link farm is not.

Publish this content on your WordPress blog with proper internal links to the relevant service and location pages, and the pages reinforce each other: the guide earns the link, the link lifts the domain, the domain lifts the location page, the location page wins the search.

The on-site basics local sites skip

None of the above compensates for a website that fails the fundamentals, and local business sites skip them constantly. The short list I check on every local SEO engagement:

  • One clear page per service – not one “Services” page with six paragraphs. Each service page targets “service + city” in its title tag and H1, and answers price, process and proof.
  • NAP in the site footer on every page, matching the canonical version, with the phone number tappable (a tel: link).
  • A contact page that works on a phone: tappable number, map embed, opening hours, a short form. Most local traffic is mobile; test it on your own phone, not your desktop.
  • Speed. Map embeds, review widgets, sliders and page-builder bloat make local sites slow, and slow mobile pages lose exactly the on-the-go searcher local SEO attracts. The full fix list is in my WordPress speed guide, and when the theme itself is the problem, a proper speed optimisation pass usually pays for itself in rankings and conversions together.
  • Indexability. It sounds absurd, but I still find local sites with a leftover “Discourage search engines” tick from development, or noindexed service pages. If your whole site gets no search traffic at all, run the checks in why is my website not getting traffic before blaming local factors.
  • HTTPS, working forms, no broken pages – trust basics that also show up in reviews when they fail.

The citation audit routine

Citations decay: businesses move, phone numbers change, directories scrape stale data from each other. A twice-a-year audit keeps the record straight, and it takes about an hour:

  1. Search your own business: your exact business name, your phone number in quotes, your old address if you have moved. Note every listing that appears.
  2. Check the core set (GBP, Bing, Apple, Facebook, the directories in the table above, your industry registers) against your canonical NAP text file. Fix inconsistencies at the source – claim listings where you can.
  3. Hunt duplicates. Duplicate GBP listings – often created by a previous employee, an SEO agency, or Google auto-generating one from directory data – split your reviews and confuse rankings. Request a merge or removal through the profile support flow.
  4. Update everything after any change of address, phone, name or opening hours – the same week, not “eventually”. Moves are where local rankings go to die, precisely because citations lag.
  5. Log it. A simple spreadsheet – directory, URL, login, last checked – turns the next audit into a 20-minute job.

Paid citation services (BrightLocal, Whitespark and similar) can do the distribution and monitoring for you, and for multi-location businesses they are worth it; for a single-location business the manual routine above covers 90% of the value for free.

Tracking local rankings honestly

The biggest lie in local SEO reporting is the owner who searches for themselves from their own shop and concludes they rank #1. Local results are personalised and, above all, location-dependent: you rank differently from every street corner in your city, because proximity is a ranking factor. Checking from one point – especially your own address, where proximity is maximal – tells you nothing about what customers across town see.

Honest tracking looks like this:

  • Grid rank tools (Local Falcon, BrightLocal’s geo-grid, Whitespark’s local rank tracker) check your map pack position from a grid of points across your service area and paint the result as a heat map. One scan shows you the truth: strong within 2 km, invisible beyond 5. Track a handful of money keywords monthly; the grid moving outward is the win condition.
  • GBP performance reports – calls, direction requests, website clicks and the search terms that triggered your profile, straight from Google. Trend these monthly; they are the closest thing to a local revenue metric.
  • Search Console filtered to your “service + city” queries for the organic side – impressions and average position tell you whether the website half is improving.
  • The only metric that pays: enquiries. Use a distinct tracking on “how did you find us”, or at minimum count form fills and tap-to-calls. Rankings are a means.

Set expectations honestly too: a new profile in a competitive niche takes months, not weeks, to earn map pack presence, and review velocity plus citation building are cumulative. Anyone promising “#1 in the map pack in 30 days” is selling either a miracle or a suspension risk.

Common local SEO myths

  • “Keyword-stuffing the business name works.” Adding “Best Cheap Plumber [City]” to your GBP name does move rankings briefly – and it violates the name guidelines, invites competitor reports, and gets profiles suspended. Your registered business name only.
  • “More directory submissions is always better.” After the core set and your industry’s real directories, additional citations add nothing – they just multiply future inconsistencies.
  • “You must post daily on GBP.” Posting frequency is not a meaningful ranking factor. Twice a month keeps the profile alive; daily posting is effort better spent earning two reviews.
  • “Review stars in organic results come from Google reviews.” Google does not show stars in organic results from your own site’s markup of your GBP reviews – self-serving review schema is ignored. Stars appear for things like product ratings under different rules.
  • “A city in every title tag ranks the whole site locally.” Relevance is per page and per query. One page targeting “emergency plumber [city]” beats “[City]” jammed into ten unrelated title tags.
  • “Local SEO is a one-time setup.” The setup is one-time; the reviews, posts, photos, content and audits are a routine. The routine is the ranking.
  • “AI search makes all this obsolete.” The opposite: AI assistants answering “find me a good electrician nearby” draw on the same structured signals – GBP data, reviews, schema, consistent citations. The complete-profile business wins that surface too.

Want a WordPress site built to win local search?

I build and fix WordPress sites for local service businesses – proper service and location page structures, LocalBusiness schema, review integration that does not wreck your speed, and the on-site fundamentals that let the local work above actually pay off. Fixed prices quoted within 24 hours, EUR 15 per hour for ongoing work. See custom WordPress development and my portfolio, or tell me about your site – I reply within 24 hours.

Frequently asked questions

What is local SEO for WordPress?

Local SEO for WordPress is optimising a WordPress website plus its Google Business Profile, citations, reviews and schema so a business ranks in the map pack and local organic results for “service + city” searches. The website handles relevance and content; the profile and citations handle the local signals.

How long does local SEO take to work?

Profile fixes and schema show effects within weeks; reviews, citations and content compound over three to six months. Competitive niches in big cities take longer – anyone promising the map pack in 30 days is overselling.

Do I need a plugin for local SEO?

Not a dedicated one. An SEO plugin you already have (Rank Math, Yoast, SEOPress) with its local settings configured covers schema basics; the rest – GBP, reviews, citations, content – happens outside plugins.

What matters more: my website or my Google Business Profile?

For map pack rankings, the profile and its reviews carry the most direct weight – but the website feeds relevance and prominence, and it is where enquiries convert. Treat them as one system.

Are location pages spam?

Templated pages with only the town name swapped are, and Google’s spam policies target them. Location pages with unique content, local projects, local reviews and real service details are legitimate and effective.

How do I get more Google reviews legally?

Ask every customer at the moment the job is done, using your direct review link via email, QR code or message. Never buy, swap, gate or incentivise reviews – platforms delete them and regulators fine for them.

Does local SEO still matter with AI search?

Yes – AI assistants recommending local businesses draw on the same data: complete profiles, consistent citations, reviews and structured schema. Doing local SEO properly is also how you become recommendable to AI.

Written by Vishal Bhisara

Full Stack WordPress Developer & AI Solutions Expert with 12+ years of experience and 500+ projects delivered worldwide. I help businesses and agencies build fast, secure, SEO-ready websites - custom themes, plugins, WooCommerce stores, and AI automation that actually grows revenue. Based in Bhavnagar, India, working with clients across the globe. More about me →

Need Expert WordPress Support?

Reading great content is the first step. Implementing the right strategy is what delivers results. If you need professional help with your WordPress website, WooCommerce store, AI automation, or custom development project, I'm here to help.

Have a Project in Mind? Let's Make It Happen.

Start a Project
Vishal Bhisara Your WordPress & AI partner
Get a Free QuoteGet a Free Quote