Honestly? On-page SEO is the part most local business owners get wrong because it sounds technical, so they hand it off to whoever charges the least. Then six months later their site still doesn’t rank and nobody can explain why.
Let me cut through it. On-page SEO is just making your website easy for Google to understand and easy for a human to use. That’s the whole job. For a local business, there are about a dozen specific things that matter — and once you handle them, you can stop overthinking it.
Here’s the on-page SEO checklist I run on every local client site. Adapt it to yours. Most of it you can do yourself in a weekend.
The On-Page SEO Basics for Local Business
Before we get into the checklist, here’s the framing. On-page SEO covers everything you control on your own website — content, structure, code, and the way Google reads it. For a local business, the goal is to make every important page on your site:
- Clearly about one service or location (not a mash-up)
- Targeted at one main keyword the customer actually searches
- Easy for Google to crawl, parse, and rank
- Easy for a human to read on mobile and take action on
Sounds simple. Most sites fail at all four. Let’s fix that.
1. Keyword Targeting: One Page, One Keyword
The single biggest on-page SEO mistake I see in local business websites: one page trying to rank for everything.
“Riverside Plumbing Services – 24/7 Emergency Repair, Water Heaters, Drain Cleaning, Sewer, Bathroom Remodeling, Tankless Water Heaters in Riverside, Corona, Moreno Valley, and Fontana.”
That title is trying to rank for 12 things at once. Google’s response: rank you well for none of them.
The fix is structural. Build one page per service. Build one page per service-city combination. Each page targets one specific keyword. The page is unmistakably about that one thing.
So instead of one mega-page, you’d have:
- A “Plumbing in Riverside” page (targets: plumber Riverside)
- An “Emergency Plumber in Riverside” page (targets: emergency plumber Riverside)
- A “Water Heater Repair in Riverside” page (targets: water heater repair Riverside)
- And so on for every service-city combo that matters
This isn’t fast. But it’s the structure that wins.
2. Title Tags That Actually Rank
The title tag is the single most important on-page ranking factor. It’s the headline Google sees and the headline users see in search results. Get it right.
The formula I use for local business title tags:
[Primary Keyword] | [Differentiator or Brand] | [City]
Examples:
- “Emergency Plumber in Riverside | 24/7 Service | ABC Plumbing”
- “Family Dentist in Corona | Same-Day Appointments | Smith Dental”
- “Roof Repair in Moreno Valley | Licensed & Insured | XYZ Roofing”
Rules:
- Keep it under 60 characters so Google doesn’t truncate it
- Put the primary keyword near the front
- Include the city for local pages
- Include a real differentiator — not “Best” (everyone says that) but something specific (24/7, same-day, licensed and insured, family-owned since 1998)
- Brand name at the end
Every page on your site gets its own title tag. Never copy and paste them.
3. Meta Descriptions That Earn the Click
Meta descriptions don’t directly rank, but they massively affect click-through rate. A boring meta description means a higher-ranked page still gets fewer clicks. So you write them like ad copy.
Formula:
[Customer problem or goal] + [Your specific solution] + [Trust signal] + [Soft CTA]
Examples:
- “Water heater out? We offer same-day water heater repair in Riverside, with upfront pricing and a 12-month warranty. Licensed, insured, family-owned. Call now for a free estimate.”
- “Looking for a family dentist in Corona that accepts new patients? We offer same-day appointments, transparent pricing, and 22 years of trusted local care. Schedule your visit today.”
Keep under 155 characters. Include the primary keyword once, naturally. End with a CTA.
4. URL Structure: Short, Clean, Keyword-Forward
URLs should be readable by a human and informative to a search engine. Keep them short. Include the primary keyword. Skip the junk.
Good: ubuildlenon.com/services/local-seo
Bad: ubuildlenon.com/?p=1248
Worse: ubuildlenon.com/services-and-other-stuff/local-seo-marketing-tips-for-business-owners-2026
For local service pages: /services/[service]/[city] or /[city]/[service]. Both work. Pick one structure and use it consistently across the site.
5. Header Hierarchy: H1, H2, H3 the Right Way
Headers tell Google the structure and topic of your page. They tell humans where to look. Both matter.
The rules:
- One H1 per page. The H1 should include your primary keyword and clearly describe the page topic.
- H2s break up main sections. Include secondary keywords and related topics where it fits naturally.
- H3s break up subsections. Use them for substeps, sub-features, or sub-topics.
- Don’t skip levels. Don’t jump from H1 to H3. Maintain the hierarchy.
I see plenty of local business sites where every section is styled the same way and there’s no real header structure. Google reads that as “this page has no clear topic.” Fix it.
6. Content Optimization: Real Information, Local Relevance
Thin content kills local pages. A service page with 200 words and a contact form ranks worse than one with 800 words of useful information.
For a local service page, what should be on it?
- What the service is (in plain language for a customer)
- Who it’s for and when they need it
- How you specifically deliver it (process, timeline, what’s included)
- Pricing or pricing factors (a range, what affects cost)
- Local references (the city, neighborhoods, landmarks, weather/climate considerations)
- Real customer reviews or testimonials (with full names when possible)
- FAQs (the questions you get every week)
- A clear call to action — phone, form, or both
Aim for 800-1500 words on most service pages. Some can go shorter, some longer. The point isn’t word count — it’s covering the topic well enough that a real customer reading the page feels informed.
7. NAP on Every Page
Your Name, Address, and Phone number should appear on every page of your site, identically. Most commonly in the footer.
This is partly a trust signal for humans (the page is real and from a real business) and partly an SEO signal that reinforces your local relevance across the whole site.
If your NAP on your website doesn’t match your NAP on your Google Business Profile and major directories — that’s a problem. Fix that first.
8. Local Schema Markup
Schema markup is code that tells Google specifically what your page is about. For local businesses, the must-have schema types are:
- LocalBusiness schema — On your homepage or contact page. Includes NAP, hours, service area, categories.
- Service schema — On each service page. Defines the service, who provides it, and the area served.
- FAQ schema — On any page with a FAQ section. Eligible for rich results in search.
- Review schema — Where you display customer reviews. Eligible for star ratings in search.
- BreadcrumbList schema — Shows breadcrumb paths in search results.
If you’re on WordPress, Yoast SEO and Rank Math handle most of this automatically. Validate with Google’s Rich Results Test before assuming it’s working.
9. Internal Linking That Actually Works
Internal links pass authority around your site and help Google understand which pages are most important. They also help humans navigate.
The rules I follow:
- Link from blog posts to service pages with descriptive anchor text
- Link from service pages to related service pages (water heater → drain cleaning → emergency service)
- Link from service-city pages to the parent service page
- Make sure every page is reachable in 3 clicks or less from the homepage
- Use real, descriptive anchor text — never “click here”
I’ll tell it like it is — most local business sites have terrible internal linking. They have a navigation bar and that’s it. Adding a few well-placed contextual links from blog posts and service pages can move rankings within weeks.
10. Page Speed and Mobile Experience
If your site is slow, no on-page SEO will save you. Google’s Page Experience signals are real — speed, mobile usability, and visual stability all factor into ranking.
Targets to hit:
- Largest Contentful Paint (LCP): under 2.5 seconds
- Interaction to Next Paint (INP): under 200ms
- Cumulative Layout Shift (CLS): under 0.1
Test your pages on PageSpeed Insights. If you’re failing any of those, fix it. Common culprits: huge unoptimized images, too many plugins, cheap hosting, no caching, render-blocking JavaScript.
On the mobile side: every page should be readable without zooming, the phone number should be tappable (use the tel: link), and forms should work easily on a phone keyboard. Test the site on your actual phone, not just your laptop’s responsive view.
11. Image Optimization
Every image on your site needs:
- A descriptive filename — water-heater-repair-riverside.jpg, not IMG_8472.jpg
- Alt text — Describes what’s in the image. Helps accessibility and gives Google another signal.
- Compression — Use WebP format or compress JPGs before upload. Big images kill page speed.
- Lazy loading — Most modern themes do this automatically. Confirm.
For local pages specifically: use real photos of your work, your team, your trucks, and your city when possible. Stock photos don’t help SEO and they don’t build trust.
12. Service-City Pages: The Local SEO Multiplier
I mentioned this in the structure section but it deserves its own callout because it’s the highest-leverage on-page move for service-area businesses.
Every service in every city you serve gets its own page. Each one is optimized for that service-city combination. Each one has unique content (not copy-pasted with the city name swapped — Google sees through that immediately).
What goes on a service-city page:
- H1 with the service and city (“Water Heater Repair in Corona”)
- An intro paragraph that mentions specific neighborhoods, landmarks, or local context
- How you serve that specific city (response time, local references, customer base)
- Local testimonials or recent jobs from that city when you have them
- Pricing or process content (same general content as your main service page, adapted)
- FAQs specific to that city when possible
- A clear CTA
Build one per week. In a year you’ll have 50+. That’s a moat your competitors can’t catch up to without doing the same work.
13. Content Freshness
Google likes pages that get updated. Not because you need to overhaul every page every quarter — but because abandoned pages signal a dead site.
The easy fix: blog posts. Even one blog post a month on a topic relevant to your service area keeps the site looking active. Especially when those blog posts link to your service pages with strong anchor text.
Also useful: update service page content once or twice a year. Refresh pricing references. Add new testimonials. Update the year in any “2025” references. Small refreshes signal an actively maintained site.
14. Yoast SEO Setup (WordPress Specifically)
Most local business sites run on WordPress. Most of those use Yoast SEO or Rank Math. Here’s how to set up Yoast on each page for maximum on-page value.
- Focus keyword — Set to the primary keyword for that page. One per page.
- SEO title — Override the default to match your title tag formula.
- Meta description — Write a custom one per page. Never let Yoast auto-generate from page content for important pages.
- Slug — Short and keyword-forward.
- Schema — Set the page type correctly (Service, FAQ, About, etc.).
- Internal linking — Use the Yoast internal linking suggestion tool.
- Readability — Aim for green or orange. Don’t obsess over green on every page.
Spend 10 minutes per page setting Yoast up. Don’t skip it.
15. The On-Page Audit Cycle
Every quarter, walk through every important page on your site. Run this checklist:
- Title tag follows the formula and is under 60 characters?
- Meta description follows the formula and is under 155 characters?
- H1 includes the primary keyword and matches the page topic?
- Internal links to and from this page exist?
- Page loads in under 3 seconds on mobile?
- Schema markup is present and validates?
- NAP appears on the page and matches everywhere else?
- Content is at least 800 words on service pages?
- Images are compressed and have alt text?
- CTA is clear and the phone number is tappable?
Walk through it once a quarter. Fix what’s failing. Move on.
Common On-Page Mistakes I See Every Week
The mistakes that kill local on-page SEO, in order of frequency:
- One page trying to rank for every service in every city
- Identical title tags across multiple pages
- No H1 or multiple H1s on the same page
- Thin content (under 400 words) on service pages
- No internal links from blog posts to service pages
- Slow mobile load times (over 5 seconds)
- No schema markup of any kind
- Missing or generic alt text on images
- NAP inconsistencies between the site, GBP, and directories
- Set-it-and-forget-it pages from 2018 with no updates
Each one of these is fixable. Some take 10 minutes, some take a few hours. Together they add up to the on-page foundation your local SEO sits on.
The On-Page SEO Truth
I’ll close with the honest read. On-page SEO isn’t complicated. It’s just detail-oriented. Every page gets a few minutes of real attention — titles, headers, internal links, schema, mobile experience — and you’re already ahead of most of your competition.
The businesses that skip the details are the ones still complaining about Google in 2026. The ones that do the basics consistently are the ones in the map pack with their phones ringing.
Pick a page. Run the checklist. Fix the gaps. Move to the next page. In 90 days your entire site is on-page optimized.
If you’d rather hand it off, that’s what I do for clients. Either way, the destination is the same.
Get found. Get trusted. Get chosen.