What's on a complete local SEO checklist?
Here's the whole local SEO checklist on one screen, so you can copy it into your own notes. It's the list I work from as a local SEO consultant, and each item says who does it: I check the website half, and the owner runs the parts only the business can.
- i.
Business Profile record
Verified, with the most specific primary category, accurate hours, the address or service area, and a website link to an indexed page. I check it; you keep it current.
- ii.
Name, address and phone on the site
Written exactly as the profile has them in the header, footer, contact page, location pages and markup. I check and fix it.
- iii.
Service pages
One page per core service, with a title and H1 that name the job and the place. I check and fix it.
- iv.
Town pages
Only for towns you'd take work in tomorrow, each with something true to say about that town. I test each one.
- v.
Structured data
Structured data that matches the Business Profile, or none at all. I check and fix it.
- vi.
Citations
The directories that already list you carry the same name, address and phone as the profile. I list the mismatches; you or your listings service correct them.
- vii.
Reviews
Asked for after every job and replied to in your own voice. That's yours.
- viii.
Local links
Suppliers, sponsorships, associations and local press that mention and link to you. That's yours to earn.
- ix.
A baseline
Search Console clicks by landing page, and the profile's own performance numbers, written down before anything changes. I set it up.
What does local SEO cover on the website itself?
Local SEO has two halves, and only one of them lives on your website. Google's Business Profile help says local results are mainly based on relevance, distance and prominence. Distance is where you are, and nobody moves it. Prominence leans on links and reviews earned over time. Relevance is the part a website can actually change, and it's where a site and a profile that tell different stories cost the most.
Most lists of local SEO tips blend the two halves, and that's how a site problem gets blamed on the profile or the other way round. So I keep them apart. Google's own line is plain: businesses with complete and accurate info are more likely to show up in local results, and there's no way to request or pay for a better local ranking. Nothing below is a ranking promise.
It all runs remotely. To start I need the URL and read-only Search Console access. Business Profile manager access comes later, and only once there's an agreed scope.
How do I check the Google Business Profile?
Against Google's own guidelines, one field at a time, because every later check leans on this record. Verification comes first: Google says it tells Google you're authorised to represent the business, so the profile's more likely to show up, and you can't reply to reviews until it's done.
The name should be the business's real-world name, as used on the storefront and the website, with nothing extra added, since Google says unnecessary information in the name can get a profile suspended. The primary category should be the most specific one that fits, and Google says not to use categories as keywords. It also says it can read category information from your website and from mentions of the business across the web, which is why the service page for that category should name the same job in its H1.
A service area business hides its address, and Google says the service area shouldn't reach much farther than about two hours' drive from where the business is based. Then I follow the profile's website link. It should land on an indexed page that matches the primary category, not a redirect chain or a page Google has left out.
Rather have me do this? One person, whole job.
Book a call on UpworkHow I run the website half of the local SEO checklist, in order
Each step leans on the one before it, so I don't touch the markup until I know which version of the business is the right one.
- Step 01
Write down the reference record
The profile's name, primary category, address or service area, phone, hours and website link. Everything on the site gets checked against it, so if the profile itself is wrong, that's the first fix.
- Step 02
Check NAP consistency across the site
NAP is name, address and phone. I read the header, footer, contact page, every location page and the markup, and note each version. A suite number in one place and not another, or an old number that survived a move, is the drift I'm looking for.
- Step 03
Give each core service its own page
One page trying to cover drains, water heaters and repiping serves each search less well than three focused pages would. I list which services have a page and which are buried in a homepage paragraph.
- Step 04
Test every town page before it earns a URL
A town gets a page when the business would take the job there tomorrow, people search with that town attached, and there's something true and specific to say. If the only difference between two pages is the place name, one of them becomes a section instead.
- Step 05
Match the structured data to the profile
I read the JSON-LD on the homepage and each location page and compare type, name, address, phone and hours with the record. Anything that can't be made accurate comes out.
- Step 06
Walk the contact path on a phone
A tap-to-call number, a form that doesn't sit below three screens of copy, and a page that doesn't keep someone waiting on mobile data. This is where a local search turns into a call or doesn't.
- Step 07
Record a baseline
In Search Console I filter queries for town names and near me, then note clicks, impressions and average position for each landing page. Calls and direction requests never reach Search Console, so the profile's own numbers get written down too.
Don't fix the markup before the profile. If the profile still carries an old address, markup copied from it spreads the same mistake to every page that includes it.
Why do town pages beat a locations hub?
Because a town page matches what people type. Someone searching for ABA therapy in Laredo is a parent in Laredo who needs a provider, and a page written for that search answers it directly. A hub that lists every town answers none of them well. The clearest numbers I can show come from an ABA therapy practice whose town pages click at 5.5%.
| Page | Click rate | Average position |
|---|---|---|
| Laredo town page | 5.55% | 9.6 |
| Victoria town page | 5.57% | 9.2 |
| The /locations/ hub | 1.36% | 31.0 |
The table doesn't prove everything. The hub averages position 31.0, and part of its low click rate is simply where it sits. What it does show is that Google ranks the town pages far higher than the hub, and that people who see them click at more than five times the site's 1.04% average.
The catch is doorway pages. Google's spam policies name pages targeted at specific regions or cities that funnel users to one page as doorway abuse. So a town page earns its place with something true about that town, not a swapped place name, and that's why the town step is a test and not a template.
What structured data does a local site need?
The most specific accurate type for the business, carrying the same facts as the profile. Google's LocalBusiness documentation says to use the most specific subtype, lists name and address as required, and recommends telephone, opening hours, geo coordinates and the location's own URL. How it's added is on the schema markup page; the local judgement is which facts go in and whether they agree.
The practice above stops at Organization, with no markup tying each clinic to its town, and its town pages still reach page one. Markup isn't a ranking switch. The contrast is a fireplace site that launched with HVACBusiness markup, with a postal address, geo coordinates and opening hours from day one. I'm not claiming the markup made it rank. The site and its profile told the same story from launch.
Two rules I don't bend. Markup that disagrees with the profile is worse than none. And since a service area business hides its address, I won't publish that street address in public markup, even though Google lists address as required for LocalBusiness. That business may not qualify for the feature, and that's fine.
What stays the owner's job: reviews, citations and links?
Prominence sits mostly outside the website. Google says it's based on things like how many websites link to your business and how many reviews you have. I still read these, because telling you the site isn't the bottleneck is worth more than selling site work that won't move anything.
- i.
Reviews and replies
Google's review help lets a verified business share a review request link or QR code. Ask after every job and reply in your own voice. I won't write, buy, incentivise or filter reviews.
- ii.
Citations and listings
Directories and data sites that list the business should match the profile's name, address and phone. I flag the mismatches; correcting the listings is yours or a listings service's.
- iii.
Local links and mentions
Sponsorships, suppliers, trade associations and local press are earned by the business, and no markup stands in for them.
- iv.
Posts, offers and photos
Short, frequent and best done by the person who knows what happened this week, with real photos of real jobs. Nobody working remotely can take those for you.
- v.
Answering questions
Questions on the profile get the best answer from the person who'd take the call.
If you'd rather one person owned the website half, the profile checked against the site, the service and town pages, the markup and the baseline, that's the local work I do. The reviews and posts stay with you, and I'll say on the call if they're the real bottleneck.
Book a call on UpworkDoes local SEO change for AI answers?
Not in what you do. Google's guide to AI features in Search says there are no extra requirements for AI Overviews or AI Mode: a page has to be indexed and eligible for a snippet. Its short list of best practices includes structured data that matches the visible text and an up-to-date Business Profile, which are two items already on this checklist.

