If you’re not showing up when someone in your area searches for what you offer, you’re leaving money on the table. Period. That’s the harsh reality for local businesses in 2026. But here’s the good news — you don’t need a fancy agency or a massive budget to fix it. What you need is a local SEO audit checklist that shows you exactly what’s broken, what’s working, and what to tackle first. This step-by-step audit template for local businesses will walk you through everything you need to know to get found, get calls, and get customers through your door.
Key Takeaways
- A local SEO audit reveals exactly why you’re not ranking — and gives you a clear roadmap to fix it
- Google My Business optimization is your #1 priority — it’s the foundation of local visibility
- NAP consistency across the web directly impacts your rankings — inconsistent information confuses Google and costs you customers
- Technical issues like slow page speed and mobile problems kill your chances before customers even see your site
- Regular audits (quarterly minimum) keep you ahead of competitors who are sleeping on their local SEO
Why Your Local Business Needs an SEO Audit Right Now
Look, I’ve seen this pattern a hundred times. A plumber calls me frustrated because his competitor down the street is booked solid while he’s scraping by. A chiropractor can’t figure out why she’s invisible on Google Maps despite having a website. A restaurant owner is spending thousands on ads but still can’t fill tables on weeknights.
The problem? They’re flying blind.
A local SEO audit is like getting an X-ray of your online presence. It shows you exactly what Google sees, where you’re falling short, and — most importantly — what’s actually worth your time to fix. No guessing. No wasted effort. Just a clear path forward.
Here’s what most local business owners don’t realize: your competitors aren’t necessarily better than you. They just fixed the stuff that matters to Google. And once you know what that stuff is, you can fix it too.
According to recent data, 46% of all Google searches are looking for local information[1]. If you’re not showing up in those searches, you’re invisible to nearly half of your potential customers. That’s not a marketing problem — that’s a survival problem.
Section 1: Google My Business Profile Audit — Your Local SEO Foundation
Your Google Business Profile (formerly Google My Business) is the single most important piece of your local SEO puzzle. If this isn’t dialed in, nothing else matters. I’m talking about the listing that shows up in Google Maps and the local pack — those three businesses that appear at the top of search results.
What to Check in Your GBP Audit:
✅ Is your profile claimed and verified?
Sounds basic, but you’d be shocked how many businesses skip this step. If you haven’t claimed your listing, someone else could — or worse, Google might suspend it.
✅ Is your business information 100% accurate?
- Business name (exactly as it appears on your storefront)
- Address (must match your website and citations)
- Phone number (local number, not a tracking number)
- Website URL
- Business hours (including special hours for holidays)
- Business categories (primary + secondary)
✅ Do you have high-quality photos?
Businesses with photos get 42% more requests for directions and 35% more clicks through to their websites[2]. Upload:
- Exterior shots
- Interior shots
- Team photos
- Product/service photos
- Logo and cover photo
✅ Are you posting regularly?
Google Posts keep your listing fresh and show you’re active. Post weekly about:
- Special offers
- New services
- Events
- Updates
- Behind-the-scenes content
✅ Are you responding to reviews?
Every. Single. One. Good or bad. Response rate and speed are ranking factors. Plus, it shows potential customers you actually care.
✅ Is your service area properly defined?
If you serve customers at their location (like a plumber or mobile mechanic), make sure your service areas are accurately listed.
Want to dive deeper into local SEO strategies that actually work? We’ve got you covered.
Section 2: Local Keyword Research and On-Page Optimization Audit
Keywords aren’t just about traffic — they’re about the right traffic. Local keywords connect you with people who are ready to buy, right now, in your area.
Your Local Keyword Audit Checklist:
✅ Are you targeting local keywords?
Generic keywords like “plumber” won’t cut it. You need:
- “Emergency plumber Corona CA”
- “24-hour plumber near me”
- “Best plumber in Riverside”
✅ Do your title tags include location + service?
Every page should have a unique title tag following this formula:Service + Location + Business Name
Example: “Emergency Plumbing Services Corona CA | Joe’s Plumbing”
✅ Are your H1 and H2 headings optimized?
Your main heading (H1) should clearly state what you do and where you do it. Subheadings (H2, H3) should include related local keywords naturally.
✅ Is your NAP (Name, Address, Phone) on every page?
Preferably in the footer. This reinforces your location signals to Google.
✅ Do you have location-specific content?
Create pages for each service area you serve. Don’t just duplicate content — write unique, valuable content for each location.
✅ Are you using schema markup?
Local business schema tells Google exactly what your business is, where it’s located, and what you offer. It’s like speaking Google’s language fluently.
Pro tip: Use Google’s Keyword Planner and check “People Also Ask” boxes in search results to find what your local customers are actually searching for.
Section 3: Technical SEO Audit for Local Businesses
Technical SEO sounds intimidating, but it’s really just making sure your website doesn’t suck from a technical standpoint. Google won’t rank a site that’s slow, broken, or impossible to use on mobile.
Technical Elements to Audit:
✅ Is your site mobile-friendly?
Over 60% of local searches happen on mobile devices[3]. Use Google’s Mobile-Friendly Test tool. If your site fails, fix it immediately.
✅ What’s your page speed?
Slow sites kill conversions and rankings. Use Google PageSpeed Insights. Aim for:
- Load time under 3 seconds
- First Contentful Paint under 1.8 seconds
- Largest Contentful Paint under 2.5 seconds
✅ Do you have an SSL certificate (HTTPS)?
If your site still shows “Not Secure,” you’re losing customers and rankings. SSL certificates are cheap and essential.
✅ Is your site crawlable?
Check your robots.txt file and XML sitemap. Make sure Google can actually access and index your pages.
✅ Are there broken links or 404 errors?
Use a tool like Screaming Frog to find and fix broken links. They create a terrible user experience and waste your SEO juice.
✅ Is your site structured properly?
Clear navigation, logical URL structure, and internal linking help both users and search engines understand your site.
✅ Do you have duplicate content issues?
Multiple pages with the same content confuse Google. Consolidate or use canonical tags.
If technical SEO feels overwhelming, our team at Local Website SEO Services handles this stuff daily. We’ll audit your site and fix what’s broken — no tech degree required on your end.
Section 4: Local Citations and Directory Listings Audit
Citations are online mentions of your business name, address, and phone number. They’re like votes of confidence that tell Google, “Yes, this business actually exists at this location.”
Citation Audit Checklist:
✅ Is your NAP consistent everywhere?
This is huge. If your business is listed as “Joe’s Plumbing” on one site and “Joe’s Plumbing Services Inc.” on another, Google gets confused. Consistency is everything.
✅ Are you listed in major directories?
At minimum, you should be in:
- Google Business Profile
- Yelp
- Apple Maps
- Bing Places
- Yellow Pages
- Better Business Bureau
✅ Are you in industry-specific directories?
Find directories specific to your industry:
- Plumbers: HomeAdvisor, Angi
- Restaurants: TripAdvisor, OpenTable
- Healthcare: Healthgrades, Zocdoc
- Auto: CarGurus, Edmunds
✅ Are there duplicate listings?
Multiple listings for the same business hurt your rankings. Find and merge duplicates.
✅ Are old listings updated?
If you moved locations or changed phone numbers, update every single listing. Old information is worse than no listing at all.
✅ Are your citations building over time?
You should be adding new citations regularly, not just one-and-done. Aim for 5-10 new quality citations per quarter.
Use tools like Moz Local or BrightLocal to scan for citation inconsistencies. Or check out our local SEO services in Corona CA where we handle citation building and cleanup for you.
Section 5: Online Reviews and Reputation Audit
Reviews are social proof, ranking signals, and conversion drivers all rolled into one. In 2026, they’re more important than ever.
Review Audit Checklist:
✅ How many reviews do you have?
More reviews = more trust. Aim to have more reviews than your top 3 competitors.
✅ What’s your average rating?
Anything below 4.0 stars needs immediate attention. Studies show most consumers won’t consider businesses below 4 stars.
✅ How recent are your reviews?
Fresh reviews signal an active business. If your last review is from 2023, you look abandoned.
✅ Are you responding to reviews?
Response rate matters. Respond to every review within 24-48 hours:
- Thank positive reviewers by name
- Address negative reviews professionally
- Never argue or get defensive
- Offer to take the conversation offline
✅ Are you actively asking for reviews?
Don’t wait for reviews to happen. Ask happy customers:
- Right after a successful job
- Via follow-up email
- With a simple text message link
- On receipts or invoices
✅ Are reviews spread across platforms?
Don’t put all your eggs in one basket. Get reviews on:
- Google (priority #1)
- Yelp
- Industry-specific platforms
Pro tip: Create a simple review funnel. After completing a job, send a text: “Thanks for choosing us! If you were happy with our service, we’d love a quick review: [link].” Simple, effective, and it works.
Section 6: Competitive Analysis Audit
You can’t win if you don’t know what you’re up against. A competitive audit shows you what’s working for others in your market — and where you can beat them.
Competitive Audit Checklist:
✅ Who are your top 3 local competitors?
Search for your main keywords and see who’s ranking in the map pack and organic results.
✅ What are their rankings?
Track where they rank for your target keywords. Use tools like BrightLocal’s Local Rank Tracker.
✅ How many reviews do they have?
If they have 200 reviews and you have 12, you’ve got work to do.
✅ What keywords are they ranking for?
Use tools like SEMrush or Ahrefs to see what keywords are driving their traffic.
✅ What’s their content strategy?
Are they blogging? Creating videos? Running social media campaigns? Learn from what’s working.
✅ How strong is their backlink profile?
Quality backlinks boost rankings. See where their links are coming from and target similar opportunities.
✅ What’s their website user experience like?
Is their site faster than yours? More professional? Easier to navigate? Find gaps you can exploit.
✅ What are customers saying about them?
Read their reviews — both good and bad. Find pain points you can address better.
This isn’t about copying your competitors. It’s about understanding the playing field and finding opportunities they’re missing. For a deeper dive into search engine optimization strategies, check out our comprehensive guide.
Section 7: Creating Your Local SEO Action Plan
An audit without action is just a report that collects dust. Here’s how to turn your audit findings into real results.
Your Action Plan Framework:
Step 1: Prioritize by Impact
Not all issues are created equal. Categorize your findings:
- Critical (Fix Now): Unclaimed GBP, major NAP inconsistencies, site down/broken
- High Priority (Fix This Month): Missing citations, slow page speed, no reviews
- Medium Priority (Fix This Quarter): Content gaps, weak backlinks, schema markup
- Low Priority (Ongoing): Minor optimizations, additional content, social signals
Step 2: Set Realistic Timelines
Don’t try to fix everything at once. Create a 90-day roadmap:
- Days 1-30: Critical and high-priority fixes
- Days 31-60: Medium-priority improvements
- Days 61-90: Low-priority optimizations and ongoing tasks
Step 3: Track Your Progress
Create a simple spreadsheet with:
- Issue identified
- Priority level
- Assigned to (if you have a team)
- Status (Not Started, In Progress, Complete)
- Completion date
Step 4: Monitor Your Results
Track these metrics monthly:
- Google Business Profile views
- Website traffic from local searches
- Phone calls and direction requests
- Keyword rankings for target terms
- New review count
- Conversion rate
Step 5: Rinse and Repeat
Local SEO isn’t one-and-done. Audit quarterly to:
- Catch new issues early
- Stay ahead of algorithm updates
- Monitor competitor movements
- Identify new opportunities
If you’re thinking, “This sounds like a lot of work” — you’re right. It is. That’s why many smart business owners partner with local SEO experts who live and breathe this stuff. You focus on running your business; we’ll handle making sure people can find it.
Conclusion: Your Local SEO Audit Starts Today
Here’s the bottom line: every day you’re not showing up in local search results is a day you’re handing customers to your competitors. But now you’ve got the exact checklist you need to change that.
Start with your Google Business Profile — get it claimed, verified, and optimized today. Then work through your citations, make sure your NAP is consistent, and start asking for reviews. Fix the technical stuff that’s slowing down your site, and create content that actually speaks to your local customers.
You don’t need to do everything at once. Just start. Pick one section from this audit checklist and tackle it this week. Then move to the next one.
And look, if you’re feeling overwhelmed or you just want someone who’s done this a thousand times to handle it for you, we’re here. We help local businesses in Corona, Riverside, and beyond show up where it matters — in search, on the map, and in front of ready-to-buy customers.
Ready to see where your business stands? Contact us for a free local SEO audit. We’ll show you exactly what’s holding you back and how to fix it. No fluff. Just real strategies that drive phone calls, foot traffic, and bookings.
Let’s make your phone ring.
Local SEO Audit Interactive Checklist Tool
<code class="language-html"><!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Local SEO Audit Checklist</title>
<style>
* {
margin: 0;
padding: 0;
box-sizing: border-box;
}
.cg-element-audit-container {
font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Oxygen, Ubuntu, Cantarell, sans-serif;
max-width: 900px;
margin: 20px auto;
padding: 20px;
background: #f8f9fa;
border-radius: 12px;
box-shadow: 0 4px 6px rgba(0,0,0,0.1);
}
.cg-element-audit-header {
text-align: center;
margin-bottom: 30px;
padding: 20px;
background: linear-gradient(135deg, #1e3a8a 0%, #3b82f6 100%);
color: white;
border-radius: 8px;
}
.cg-element-audit-header h1 {
font-size: 28px;
margin-bottom: 10px;
}
.cg-element-audit-header p {
font-size: 16px;
opacity: 0.9;
}
.cg-element-progress-bar {
width: 100%;
height: 30px;
background: #e5e7eb;
border-radius: 15px;
overflow: hidden;
margin: 20px 0;
position: relative;
}
.cg-element-progress-fill {
height: 100%;
background: linear-gradient(90deg, #10b981 0%, #059669 100%);
width: 0%;
transition: width 0.3s ease;
display: flex;
align-items: center;
justify-content: center;
color: white;
font-weight: bold;
font-size: 14px;
}
.cg-element-audit-section {
background: white;
border-radius: 8px;
padding: 20px;
margin-bottom: 20px;
box-shadow: 0 2px 4px rgba(0,0,0,0.05);
}
.cg-element-section-header {
display: flex;
align-items: center;
margin-bottom: 15px;
padding-bottom: 10px;
border-bottom: 2px solid #e5e7eb;
}
.cg-element-section-icon {
font-size: 24px;
margin-right: 10px;
}
.cg-element-section-title {
font-size: 20px;
font-weight: 600;
color: #1e3a8a;
flex: 1;
}
.cg-element-section-progress {
font-size: 14px;
color: #6b7280;
font-weight: 500;
}
.cg-element-checklist-item {
display: flex;
align-items: flex-start;
padding: 12px;
margin: 8px 0;
border-radius: 6px;
transition: background 0.2s ease;
cursor: pointer;
}
.cg-element-checklist-item:hover {
background: #f3f4f6;
}
.cg-element-checklist-item.cg-element-checked {
background: #ecfdf5;
}
.cg-element-checkbox {
width: 24px;
height: 24px;
min-width: 24px;
border: 2px solid #d1d5db;
border-radius: 6px;
margin-right: 12px;
display: flex;
align-items: center;
justify-content: center;
cursor: pointer;
transition: all 0.2s ease;
}
.cg-element-checklist-item.cg-element-checked .cg-element-checkbox {
background: #10b981;
border-color: #10b981;
}
.cg-element-checkbox::after {
content: '✓';
color: white;
font-size: 16px;
font-weight: bold;
display: none;
}
.cg-element-checklist-item.cg-element-checked .cg-element-checkbox::after {
display: block;
}
.cg-element-item-text {
flex: 1;
font-size: 15px;
color: #374151;
line-height: 1.5;
}
.cg-element-priority-badge {
padding: 4px 10px;
border-radius: 12px;
font-size: 12px;
font-weight: 600;
margin-left: 10px;
}
.cg-element-priority-critical {
background: #fee2e2;
color: #991b1b;
}
.cg-element-priority-high {
background: #fed7aa;
color: #9a3412;
}
.cg-element-priority-medium {
background: #fef3c7;
color: #92400e;
}
.cg-element-summary {
background: white;
border-radius: 8px;
padding: 20px;
margin-top: 20px;
text-align: center;
}
.cg-element-summary h3 {
color: #1e3a8a;
margin-bottom: 15px;
font-size: 22px;
}
.cg-element-stats {
display: flex;
justify-content: space-around;
flex-wrap: wrap;
gap: 15px;
margin-top: 15px;
}
.cg-element-stat {
flex: 1;
min-width: 150px;
padding: 15px;
background: #f3f4f6;
border-radius: 8px;
}
.cg-element-stat-number {
font-size: 32px;
font-weight: bold;
color: #10b981;
}
.cg-element-stat-label {
font-size: 14px;
color: #6b7280;
margin-top: 5px;
}
.cg-element-reset-btn {
margin-top: 20px;
padding: 12px 24px;
background: #ef4444;
color: white;
border: none;
border-radius: 6px;
font-size: 16px;
font-weight: 600;
cursor: pointer;
transition: background 0.2s ease;
}
.cg-element-reset-btn:hover {
background: #dc2626;
}
@media (max-width: 768px) {
.cg-element-audit-container {
padding: 15px;
}
.cg-element-audit-header h1 {
font-size: 22px;
}
.cg-element-section-title {
font-size: 18px;
}
.cg-element-stats {
flex-direction: column;
}
}
</style>
</head>
<body>
<div class="cg-element-audit-container">
<div class="cg-element-audit-header">
<h1>🎯 Local SEO Audit Checklist</h1>
<p>Track your progress and fix what matters most</p>
</div>
<div class="cg-element-progress-bar">
<div class="cg-element-progress-fill" id="progressBar">0%</div>
</div>
<div class="cg-element-audit-section">
<div class="cg-element-section-header">
<span class="cg-element-section-icon">📍</span>
<h2 class="cg-element-section-title">Google Business Profile</h2>
<span class="cg-element-section-progress" data-section="gbp">0/8</span>
</div>
<div class="cg-element-checklist-item" data-section="gbp" data-priority="critical">
<div class="cg-element-checkbox"></div>
<div class="cg-element-item-text">Profile claimed and verified</div>
<span class="cg-element-priority-badge cg-element-priority-critical">Critical</span>
</div>
<div class="cg-element-checklist-item" data-section="gbp" data-priority="critical">
<div class="cg-element-checkbox"></div>
<div class="cg-element-item-text">NAP (Name, Address, Phone) 100% accurate</div>
<span class="cg-element-priority-badge cg-element-priority-critical">Critical</span>
</div>
<div class="cg-element-checklist-item" data-section="gbp" data-priority="high">
<div class="cg-element-checkbox"></div>
<div class="cg-element-item-text">Primary and secondary categories selected</div>
<span class="cg-element-priority-badge cg-element-priority-high">High</span>
</div>
<div class="cg-element-checklist-item" data-section="gbp" data-priority="high">
<div class="cg-element-checkbox"></div>
<div class="cg-element-item-text">High-quality photos uploaded (10+ images)</div>
<span class="cg-element-priority-badge cg-element-priority-high">High</span>
</div>
<div class="cg-element-checklist-item" data-section="gbp" data-priority="high">
<div class="cg-element-checkbox"></div>
<div class="cg-element-item-text">Business description optimized with keywords</div>
<span class="cg-element-priority-badge cg-element-priority-high">High</span>
</div>
<div class="cg-element-checklist-item" data-section="gbp" data-priority="medium">
<div class="cg-element-checkbox"></div>
<div class="cg-element-item-text">Service areas properly defined</div>
<span class="cg-element-priority-badge cg-element-priority-medium">Medium</span>
</div>
<div class="cg-element-checklist-item" data-section="gbp" data-priority="medium">
<div class="cg-element-checkbox"></div>
<div class="cg-element-item-text">Posting regularly (weekly minimum)</div>
<span class="cg-element-priority-badge cg-element-priority-medium">Medium</span>
</div>
<div class="cg-element-checklist-item" data-section="gbp" data-priority="high">
<div class="cg-element-checkbox"></div>
<div class="cg-element-item-text">Responding to all reviews within 48 hours</div>
<span class="cg-element-priority-badge cg-element-priority-high">High</span>
</div>
</div>
<div class="cg-element-audit-section">
<div class="cg-element-section-header">
<span class="cg-element-section-icon">🔍</span>
<h2 class="cg-element-section-title">Keywords & On-Page SEO</h2>
<span class="cg-element-section-progress" data-section="keywords">0/7</span>
</div>
<div class="cg-element-checklist-item" data-section="keywords" data-priority="high">
<div class="cg-element-checkbox"></div>
<div class="cg-element-item-text">Local keywords researched and documented</div>
<span class="cg-element-priority-badge cg-element-priority-high">High</span>
</div>
<div class="cg-element-checklist-item" data-section="keywords" data-priority="high">
<div class="cg-element-checkbox"></div>
<div class="cg-element-item-text">Title tags include location + service</div>
<span class="cg-element-priority-badge cg-element-priority-high">High</span>
</div>
<div class="cg-element-checklist-item" data-section="keywords" data-priority="high">
<div class="cg-element-checkbox"></div>
<div class="cg-element-item-text">H1 headings optimized with target keywords</div>
<span class="cg-element-priority-badge cg-element-priority-high">High</span>
</div>
<div class="cg-element-checklist-item" data-section="keywords" data-priority="medium">
<div class="cg-element-checkbox"></div>
<div class="cg-element-item-text">NAP visible on every page (footer)</div>
<span class="cg-element-priority-badge cg-element-priority-medium">Medium</span>
</div>
<div class="cg-element-checklist-item" data-section="keywords" data-priority="medium">
<div class="cg-element-checkbox"></div>
<div class="cg-element-item-text">Location-specific pages created for service areas</div>
<span class="cg-element-priority-badge cg-element-priority-medium">Medium</span>
</div>
<div class="cg-element-checklist-item" data-section="keywords" data-priority="medium">
<div class="cg-element-checkbox"></div>
<div class="cg-element-item-text">Schema markup implemented (LocalBusiness)</div>
<span class="cg-element-priority-badge cg-element-priority-medium">Medium</span>
</div>
<div class="cg-element-checklist-item" data-section="keywords" data-priority="medium">
<div class="cg-element-checkbox"></div>
<div class="cg-element-item-text">Meta descriptions optimized for local search</div>
<span class="cg-element-priority-badge cg-element-priority-medium">Medium</span>
</div>
</div>
<div class="cg-element-audit-section">
<div class="cg-element-section-header">
<span class="cg-element-section-icon">⚙️</span>
<h2 class="cg-element-section-title">Technical SEO</h2>
<span class="cg-element-section-progress" data-section="technical">0/7</span>
</div>
<div class="cg-element-checklist-item" data-section="technical" data-priority="critical">
<div class="cg-element-checkbox"></div>
<div class="cg-element-item-text">Site is mobile-friendly (passes Google test)</div>
<span class="cg-element-priority-badge cg-element-priority-critical">Critical</span>
</div>
<div class="cg-element-checklist-item" data-section="technical" data-priority="critical">
<div class="cg-element-checkbox"></div>
<div class="cg-element-item-text">Page speed under 3 seconds</div>
<span class="cg-element-priority-badge cg-element-priority-critical">Critical</span>
</div>
<div class="cg-element-checklist-item" data-section="technical" data-priority="critical">
<div class="cg-element-checkbox"></div>
<div class="cg-element-item-text">SSL certificate installed (HTTPS)</div>
<span class="cg-element-priority-badge cg-element-priority-critical">Critical</span>
</div>
<div class="cg-element-checklist-item" data-section="technical" data-priority="high">
<div class="cg-element-checkbox"></div>
<div class="cg-element-item-text">XML sitemap submitted to Google</div>
<span class="cg-element-priority-badge cg-element-priority-high">High</span>
</div>
<div class="cg-element-checklist-item" data-section="technical" data-priority="high">
<div class="cg-element-checkbox"></div>
<div class="cg-element-item-text">No broken links or 404 errors</div>
<span class="cg-element-priority-badge cg-element-priority-high">High</span>
</div>
<div class="cg-element-checklist-item" data-section="technical" data-priority="medium">
<div class="cg-element-checkbox"></div>
<div class="cg-element-item-text">Robots.txt properly configured</div>
<span class="cg-element-priority-badge cg-element-priority-medium">Medium</span>
</div>
<div class="cg-element-checklist-item" data-section="technical" data-priority="medium">
<div class="cg-element-checkbox"></div>
<div class="cg-element-item-text">No duplicate content issues</div>
<span class="cg-element-priority-badge cg-element-priority-medium">Medium</span>
</div>
</div>
<div class="cg-element-audit-section">
<div class="cg-element-section-header">
<span class="cg-element-section-icon">📋</span>
<h2 class="cg-element-section-title">Citations & Directories</h2>
<span class="cg-element-section-progress" data-section="citations">0/6</span>
</div>
<div class="cg-element-checklist-item" data-section="citations" data-priority="critical">
<div class="cg-element-checkbox"></div>
<div class="cg-element-item-text">NAP consistent across all listings</div>
<span class="cg-element-priority-badge cg-element-priority-critical">Critical</span>
</div>
<div class="cg-element-checklist-item" data-section="citations" data-priority="high">
<div class="cg-element-checkbox"></div>
<div class="cg-element-item-text">Listed in major directories (Yelp, Facebook, Bing)</div>
<span class="cg-element-priority-badge cg-element-priority-high">High</span>
</div>
<div class="cg-element-checklist-item" data-section="citations" data-priority="high">
<div class="cg-element-checkbox"></div>
<div class="cg-element-item-text">Listed in industry-specific directories</div>
<span class="cg-element-priority-badge cg-element-priority-high">High</span>
</div>
<div class="cg-element-checklist-item" data-section="citations" data-priority="high">
<div class="cg-element-checkbox"></div>
<div class="cg-element-item-text">Duplicate listings identified and merged</div>
<span class="cg-element-priority-badge cg-element-priority-high">High</span>
</div>
<div class="cg-element-checklist-item" data-section="citations" data-priority="medium">
<div class="cg-element-checkbox"></div>
<div class="cg-element-item-text">Old/outdated listings updated or removed</div>
<span class="cg-element-priority-badge cg-element-priority-medium">Medium</span>
</div>
<div class="cg-element-checklist-item" data-section="citations" data-priority="medium">
<div class="cg-element-checkbox"></div>
<div class="cg-element-item-text">Building 5-10 new citations quarterly</div>
<span class="cg-element-priority-badge cg-element-priority-medium">Medium</span>
</div>
</div>
<div class="cg-element-audit-section">
<div class="cg-element-section-header">
<span class="cg-element-section-icon">⭐</span>
<h2 class="cg-element-section-title">Reviews & Reputation</h2>
<span class="cg-element-section-progress" data-section="reviews">0/6</span>
</div>
<div class="cg-element-checklist-item" data-section="reviews" data-priority="high">
<div class="cg-element-checkbox"></div>
<div class="cg-element-item-text">Average rating 4.0 stars or higher</div>
<span class="cg-element-priority-badge cg-element-priority-high">High</span>
</div>
<div class="cg-element-checklist-item" data-section="reviews" data-priority="high">
<div class="cg-element-checkbox"></div>
<div class="cg-element-item-text">More reviews than top 3 competitors</div>
<span class="cg-element-priority-badge cg-element-priority-high">High</span>
</div>
<div class="cg-element-checklist-item" data-section="reviews" data-priority="high">
<div class="cg-element-checkbox"></div>
<div class="cg-element-item-text">Recent reviews (within last 30 days)</div>
<span class="cg-element-priority-badge cg-element-priority-high">High</span>
</div>
<div class="cg-element-checklist-item" data-section="reviews" data-priority="high">
<div class="cg-element-checkbox"></div>
<div class="cg-element-item-text">Responding to 100% of reviews</div>
<span class="cg-element-priority-badge cg-element-priority-high">High</span>
</div>
<div class="cg-element-checklist-item" data-section="reviews" data-priority="medium">
<div class="cg-element-checkbox"></div>
<div class="cg-element-item-text">Active review request system in place</div>
<span class="cg-element-priority-badge cg-element-priority-medium">Medium</span>
</div>
<div class="cg-element-checklist-item" data-section="reviews" data-priority="medium">
<div class="cg-element-checkbox"></div>
<div class="cg-element-item-text">Reviews on multiple platforms (not just Google)</div>
<span class="cg-element-priority-badge cg-element-priority-medium">Medium</span>
</div>
</div>
<div class="cg-element-audit-section">
<div class="cg-element-section-header">
<span class="cg-element-section-icon">🎯</span>
<h2 class="cg-element-section-title">Competitive Analysis</h2>
<span class="cg-element-section-progress" data-section="competitive">0/5</span>
</div>
<div class="cg-element-checklist-item" data-section="competitive" data-priority="medium">
<div class="cg-element-checkbox"></div>
<div class="cg-element-item-text">Top 3 local competitors identified</div>
<span class="cg-element-priority-badge cg-element-priority-medium">Medium</span>
</div>
<div class="cg-element-checklist-item" data-section="competitive" data-priority="medium">
<div class="cg-element-checkbox"></div>
<div class="cg-element-item-text">Competitor keyword rankings tracked</div>
<span class="cg-element-priority-badge cg-element-priority-medium">Medium</span>
</div>
<div class="cg-element-checklist-item" data-section="competitive" data-priority="medium">
<div class="cg-element-checkbox"></div>
<div class="cg-element-item-text">Competitor review counts analyzed</div>
<span class="cg-element-priority-badge cg-element-priority-medium">Medium</span>
</div>
<div class="cg-element-checklist-item" data-section="competitive" data-priority="medium">
<div class="cg-element-checkbox"></div>
<div class="cg-element-item-text">Competitor backlink profiles reviewed</div>
<span class="cg-element-priority-badge cg-element-priority-medium">Medium</span>
</div>
<div class="cg-element-checklist-item" data-section="competitive" data-priority="medium">
<div class="cg-element-checkbox"></div>
<div class="cg-element-item-text">Gaps and opportunities documented</div>
<span class="cg-element-priority-badge cg-element-priority-medium">Medium</span>
</div>
</div>
<div class="cg-element-summary">
<h3>📊 Your Audit Summary</h3>
<div class="cg-element-stats">
<div class="cg-element-stat">
<div class="cg-element-stat-number" id="completedCount">0</div>
<div class="cg-element-stat-label">Items Completed</div>
</div>
<div class="cg-element-stat">
<div class="cg-element-stat-number" id="remainingCount">39</div>
<div class="cg-element-stat-label">Items Remaining</div>
</div>
<div class="cg-element-stat">
<div class="cg-element-stat-number" id="criticalCount">6</div>
<div class="cg-element-stat-label">Critical Items</div>
</div>
</div>
<button class="cg-element-reset-btn" id="resetBtn">Reset Checklist</button>
</div>
</div>
<script>
// Initialize checklist functionality
const checklistItems = document.querySelectorAll('.cg-element-checklist-item');
const progressBar = document.getElementById('progressBar');
const completedCount = document.getElementById('completedCount');
const remainingCount = document.getElementById('remainingCount');
const criticalCount = document.getElementById('criticalCount');
const resetBtn = document.getElementById('resetBtn');
// Load saved state from localStorage
function loadState() {
const savedState = localStorage.getItem('localSEOAudit');
if (savedState) {
const checkedItems = JSON.parse(savedState);
checkedItems.forEach(index => {
checklistItems[index].classList.add('cg-element-checked');
});
}
updateProgress();
}
// Save state to localStorage
function saveState() {
const checkedItems = [];
checklistItems.forEach((item, index) => {
if (item.classList.contains('cg-element-checked')) {
checkedItems.push(index);
}
});
localStorage.setItem('localSEOAudit', JSON.stringify(checkedItems));
}
// Update progress and statistics
function updateProgress() {
const total = checklistItems.length;
let completed = 0;
let critical = 0;
checklistItems.forEach(item => {
if (item.classList.contains('cg-element-checked')) {
completed++;
}
if (item.dataset.priority === 'critical' && !item.classList.contains('cg-element-checked')) {
critical++;
}
});
const percentage = Math.round((completed / total) * 100);
progressBar.style.width = percentage + '%';
progressBar.textContent = percentage + '%';
completedCount.textContent = completed;
remainingCount.textContent = total - completed;
criticalCount.textContent = critical;
// Update section progress
const sections = ['gbp', 'keywords', 'technical', 'citations', 'reviews', 'competitive'];
sections.forEach(section => {
const sectionItems = document.querySelectorAll(`[data-section="${section}"]`);
const sectionProgress = document.querySelector(`[data-section="${section}"].cg-element-section-progress`);
let sectionCompleted = 0;
let sectionTotal = 0;
sectionItems.forEach(item => {
if (item.classList.contains('cg-element-checklist-item')) {
sectionTotal++;
if (item.classList.contains('cg-element-checked')) {
sectionCompleted++;
}
}
});
if (sectionProgress) {
sectionProgress.textContent = `${sectionCompleted}/${sectionTotal}`;
}
});
}
// Toggle checklist item
checklistItems.forEach((item, index) => {
item.addEventListener('click', function() {
this.classList.toggle('cg-element-checked');
saveState();
updateProgress();
});
});
// Reset button
resetBtn.addEventListener('click', function() {
if (confirm('Are you sure you want to reset your entire checklist? This cannot be undone.')) {
checklistItems.forEach(item => {
item.classList.remove('cg-element-checked');
});
localStorage.removeItem('localSEOAudit');
updateProgress();
}
});
// Initialize on page load
loadState();
</script>
</body>
</html>
</code>
References
[1] “Local Consumer Review Survey,” BrightLocal, 2025. https://www.brightlocal.com/research/local-consumer-review-survey/
[2] “Google My Business Insights Study,” Womply, 2025. https://www.womply.com/blog/google-my-business-insights/
[3] “Mobile Search Statistics,” Think with Google, 2026. https://www.thinkwithgoogle.com/marketing-strategies/search/mobile-search-trends/