Onsite SEO covers 10 fix categories: title tags, Core Web Vitals (LCP under 2.5 seconds), schema, and internal links. First crawls surface 8 to 12 title tag errors and orphan pages with no inbound links. Ranking movement appears within 60 to 90 days.
This checklist is built for execution. Each section tells you what to do, what tool to use, and how long the fix takes. Work through it top to bottom on any page you want to rank.
Section 1: Indexing and Crawl Access
Before any copy or tag work, confirm Google can actually reach your pages. A perfectly optimized page that is blocked from crawling ranks nowhere.
Step 1. Check Google Search Console for crawl errors. Open the Coverage or Pages report in Search Console. Any URL marked “Excluded” or “Not indexed” needs a reason: is it intentionally noindexed, or is it a crawl budget problem? Fix unintentional exclusions first. Time required: 15 to 30 minutes.
Step 2. Verify robots.txt is not blocking key pages. Visit yourdomain.com/robots.txt and confirm your important pages and their CSS or JavaScript assets are not disallowed. A misconfigured robots.txt is one of the most common small business website mistakes that wipes rankings overnight. Time required: 10 to 20 minutes.
Step 3. Confirm HTTPS is active and redirects are clean. Every page should load on HTTPS with no mixed-content warnings. HTTP to HTTPS should 301-redirect, and www to non-www (or the reverse) should be consistent. Use a tool like httpstatus.io to check redirect chains on your top 20 URLs. Chains longer than two hops bleed link equity. Time required: 20 to 30 minutes.
Step 4. Check for duplicate content and canonical tags. If your CMS generates multiple URLs for the same page (common with filters, session IDs, or paginated archives), set a canonical tag pointing to the preferred URL. Duplicate content does not cause a penalty, but it splits ranking authority and slows indexing. Time required: 30 to 60 minutes with Screaming Frog.
Step 5. Submit an updated XML sitemap. Generate a clean sitemap containing only indexable, canonical URLs. Submit it in Search Console under Sitemaps. Exclude paginated pages, filtered URLs, and thin pages you do not want Google spending crawl budget on. Time required: 15 to 30 minutes.
Section 2: Title Tags and Meta Descriptions
Title tags are the single highest-impact onsite element per unit of time spent. A rewritten title can lift click-through rate within days of Google recrawling the page.
What a good title tag includes. Your primary keyword, placed near the front. Your brand name, at the end. A specific detail that differentiates the page (a city name, a service type, a year if the content is time-sensitive). Keep it between 50 and 60 characters so it renders fully in most search results without truncation.
Bad example: “Home | ABC Company”
Fixed example: “AC Repair in Phoenix, AZ | ABC Cooling Services”
For a non-service-industry example, a boutique e-commerce store selling handmade ceramics might rewrite “Products | Clay Studio” as “Handmade Ceramic Mugs and Bowls | Clay Studio” to capture transactional queries that the generic version misses entirely.
One H1 per page, matching the title intent. The H1 and title tag do not need to be identical, but they must target the same topic and intent. If the title tag chases a broad keyword and the H1 describes something else, Google and the reader are both confused. Never use more than one H1 per page.
Meta descriptions do not directly affect rankings, but they affect clicks. Write 140 to 155 characters that tell the searcher exactly what they will get and include a natural use of the keyword. Treat it as a micro-ad for the page.
Check for duplicate or missing title tags across the site. Run a Screaming Frog crawl and export the title tag column. Filter for blanks, duplicates, and anything over 60 characters. A site with 40 pages often has 8 to 12 title tag problems that are silently costing clicks.
Pro Tip: Sort your Search Console Performance report by impressions, descending. Any page with over 500 impressions and a click-through rate below 2 percent has a title or meta description problem worth fixing before you touch anything else on the site.
Section 3: Heading Hierarchy and Content Structure
Headings communicate page structure to both crawlers and readers. A flat wall of text with no headings is a slow-to-rank page regardless of how good the copy is.
Use one H1, then H2s for major sections, then H3s for sub-points. Do not skip levels (jumping from H2 to H4) and do not use headings just to make text bold. Each H2 should represent a distinct subtopic of the page’s main subject.
Match heading language to how people actually search. If you are writing a service page about plumbing repairs in Tempe, headings like “Why Choose Us” and “Our Team” waste keyword real estate. Headings like “Emergency Plumbing Repair in Tempe” and “How Our Tempe Plumbers Diagnose Leaks” use the space better. The same principle applies outside the trades: a CPA firm’s page about business tax preparation ranks better when headings use “Small Business Tax Filing in [City]” rather than “Our Accounting Services.”
Front-load the answer, then explain it. The section immediately under an H2 should answer the implicit question that heading raises. This structure is what AI Overviews and featured snippets pull from. A reader (or crawler) skimming headings should understand the page’s value before reading a single body paragraph.
Pages that answer a question directly under each heading, rather than burying the answer three paragraphs in, are structurally more likely to be pulled into AI Overviews and Google’s featured snippet positions. Structure is a citation signal, not just a readability nicety.
Section 4: Core Web Vitals and Page Speed
Core Web Vitals are a confirmed Google ranking factor. Failing them does not disqualify you from ranking, but passing them removes a handicap that competing pages may not have.
The three metrics that matter. Largest Contentful Paint (LCP) measures how fast the main content loads. Target: under 2.5 seconds. Cumulative Layout Shift (CLS) measures visual stability while the page loads. Target: under 0.1. Interaction to Next Paint (INP) measures responsiveness to user input. Target: under 200 milliseconds.
Diagnose with PageSpeed Insights and Search Console. PageSpeed Insights (pagespeed.web.dev) gives you a lab score and field data for any URL. Search Console’s Core Web Vitals report shows real-user data grouped by “Good,” “Needs Improvement,” and “Poor.” Fix the “Poor” URLs first; they are the ones actively being graded down.
The most common LCP killers on small business sites. Uncompressed hero images (a 3MB PNG will fail every time), render-blocking JavaScript loaded in the head, and no caching on a shared hosting plan. Compress images to WebP, defer non-critical scripts, and enable browser caching. These three fixes resolve the majority of LCP failures without a developer. The same pattern appears on sites across industries: a law firm’s homepage, a restaurant’s menu page, and a retail shop’s product gallery all fail LCP for the same underlying reason.
Section 5: Keyword Placement and Search Intent
Ranking for the right keyword is worthless if the page does not satisfy what the searcher actually wanted when they typed it.
The four intent types. Informational (they want to learn), navigational (they want a specific site), commercial (they are comparing options), and transactional (they are ready to buy or contact). Each page on your site should target one dominant intent. A page trying to be a blog post and a service page at the same time usually ranks as neither.
Where to place your target keyword. In the title tag, in the H1, in the first 100 words of the body, in at least one H2, and in the URL slug. This is not stuffing; it is signal placement. Each location tells Google this page is genuinely about that topic.
Keyword cannibalization is the most commonly overlooked onsite problem. If two pages on your site target the same keyword, Google has to guess which one to rank. It often ranks neither at full strength. Two methods surface this problem, and they catch different things. A site search (site:yourdomain.com “your keyword”) quickly shows whether multiple URLs contain the same phrase in their copy or titles. Search Console’s Performance report, filtered by that keyword, shows which URLs are actually receiving impressions for the query in the live index. Use the site search to find URL overlap fast, then confirm the damage in Search Console before deciding which page to keep. For Phoenix service businesses, cannibalization often appears between city landing pages that are nearly identical in structure.
Pro Tip: In Google Search Console, filter the Performance report by a keyword you want to rank for. If two or more different URLs appear in the results for the same query, you have a cannibalization problem confirmed by real impression data. Redirect or consolidate the weaker URL into the stronger one after verifying the overlap with a site: search first.
Section 6: Image Optimization
Images are a consistent source of both speed problems and missed keyword signals. Both are fixable in under an hour.
Compress every image before uploading. Convert JPEG and PNG files to WebP format. A hero image that starts at 2.4MB and compresses to 120KB in WebP is not a minor improvement; it is often the difference between a failing and passing LCP score. Tools like Squoosh (free, browser-based) handle this without software installs.
Write descriptive alt text for every image. Alt text is the text a screen reader announces and the text Google indexes when it cannot fully interpret an image. It should describe what is in the image and, where natural, include a relevant keyword. “alt=image1.jpg” is useless. “alt=Phoenix HVAC technician servicing a rooftop AC unit” is useful. For a non-service context: “alt=handmade ceramic mug with blue glaze on a white table” beats “alt=product photo” for both accessibility and image search.
Use unique images when possible. Stock photos are not penalized, but they add no differentiation signal. A photo of your actual Phoenix storefront, your real team, or your real work signals local relevance and E-E-A-T in a way that a generic stock image cannot.
Section 7: Internal Linking
Internal linking is the most underused onsite lever on small business sites. It controls how link equity flows across your pages and tells Google which pages are most important.
Every new page needs at least two to three inbound internal links. A page with no internal links pointing to it is called an orphan page. Google finds it only through the sitemap, not through normal crawl paths. This limits how much authority it can accumulate. Check for orphan pages in Screaming Frog under the Orphan Pages report (requires connecting to Google Analytics or Search Console).
Link with descriptive anchor text, not “click here.” If you are linking to a page about local SEO tips for service businesses, the anchor text “local SEO tips for service businesses” tells Google what the destination page is about. “Click here” tells Google nothing.
Create a hub-and-spoke content structure. One strong pillar page covers a broad topic, and multiple supporting pages cover subtopics, each linking back to the pillar. This structure builds topical authority and helps the whole cluster rank, not just individual pages. For a Phoenix plumber, the pillar might be “Plumbing Services in Phoenix” with spokes for water heater repair, drain cleaning, and slab leak detection. A software company could use the same structure with a pillar on “Project Management Software” and spokes for team collaboration, time tracking, and reporting features.
| Internal Link Problem | Tool to Find It | Fix |
|---|---|---|
| Orphan pages (no inbound links) | Screaming Frog + GSC | Add 2 to 3 contextual internal links from relevant pages |
| Generic anchor text (“click here”) | Screaming Frog link report | Rewrite anchors to describe the destination topic |
| No links to your highest-value pages | Manual audit | Add links from blog posts and supporting pages to service pages |
| Broken internal links (404s) | Screaming Frog response codes | Redirect or fix the destination URL |
| Too many links on one page (over 100) | Screaming Frog | Consolidate or paginate; dilutes link equity per link |
Section 8: Schema Markup and Structured Data
Schema markup is JSON-LD code in your page’s head section that tells search engines explicitly what your page is about. It does not guarantee rich results, but it makes them possible and it improves AI citation accuracy.
The highest-priority schema types for small businesses. LocalBusiness schema (or a more specific subtype like Plumber, Dentist, or LegalService) for your homepage and contact page. FAQ schema for any page that contains question-and-answer pairs. Article schema for blog posts. Review or AggregateRating schema if you display customer reviews on the page.
How to implement it without a developer. Google’s Structured Data Markup Helper generates valid JSON-LD you can paste into your site’s head section. Most WordPress SEO plugins (Yoast, RankMath) also generate LocalBusiness and Article schema automatically if you configure the site identity settings. However, auto-generated schema is frequently incomplete: missing business hours, service area, or aggregateRating fields are common omissions that reduce its usefulness. Always validate your output with Google’s Rich Results Test before publishing, even when using a plugin, because the tool shows exactly which required or recommended fields are absent.
Schema and AI citations. AI answer engines parse structured data to understand entity relationships. A LocalBusiness schema block that includes your name, address, phone number, service area, and hours gives AI engines a clean, machine-readable record to cite. Pages with accurate, complete schema are more likely to appear in AI-generated answers than structurally identical pages without it.
Pro Tip: Add FAQ schema to your service pages, not just your FAQ page. A question like “How much does AC repair cost in Phoenix?” with a structured answer directly in your service page schema creates an additional snippet opportunity in search and an additional citation opportunity in AI Overviews.
Section 9: E-E-A-T Signals on the Page
E-E-A-T (Experience, Expertise, Authoritativeness, Trustworthiness) is Google’s framework for evaluating content quality. For local service businesses, the onsite signals that matter most are author attribution, credentials, and verifiable business information.
Author bios on content pages. Any page that gives advice, reviews a product, or makes health or financial claims should have a named author with a short bio that includes relevant credentials. “Written by John Ramirez, licensed electrician with 14 years in the Phoenix metro” does more for E-E-A-T than a generic “by Admin” byline. A financial planning firm’s blog carries the same expectation: an author listed as “CFP with 10 years advising small business owners” outperforms an anonymous post in Google’s quality evaluation.
Verifiable business signals on the site. Physical address (matching your Google Business Profile exactly), local phone number, state license numbers where applicable, and links to third-party profiles (BBB, state licensing boards, industry associations). These signals are checked by both human quality raters and algorithmic systems.
Outbound links to credible sources. Linking out to relevant, authoritative sources (city government sites, industry associations, manufacturer specs) signals that your page exists within a credible information ecosystem rather than in isolation. It does not pass authority away from your page; it contextualizes your page as credible.
For Phoenix service businesses specifically, keeping your address, phone, and service area consistent across your website, your Google Business Profile optimization settings, and every directory listing is a trust signal that compounds over time. See our full small business SEO checklist for how these elements work together.
Section 10: Content Freshness and Ongoing Maintenance
Onsite SEO is not a one-time event. Pages decay in rankings when competitors update their content and you do not.
Set a content review schedule. Any page that ranks on page one should be reviewed every six months. Check whether the content still matches current search intent, whether new competitors have outpublished you on depth, and whether any statistics or pricing references are outdated.
Use Search Console to find decaying pages. Filter the Performance report by date comparison: last 90 days versus the prior 90 days. Any page with declining impressions and stable click-through rate is losing ranking position, not losing appeal. That is a content or link signal problem to investigate.
Update, do not just republish. A shallow date change with no substantive content additions does not fool Google and does not reset freshness signals meaningfully. Add a new section, update examples, incorporate a new data point, or expand a section that previously underserved user intent. Then change the published date.
Priority Matrix: Where to Start
In SEO, roughly 80 percent of your ranking gains come from 20 percent of the work. For most local service businesses and small business sites, that 20 percent is fixing title tags, passing Core Web Vitals, resolving keyword cannibalization, and keeping Google Business Profile accurate. Everything else in this checklist is refinement that compounds those core gains. The Priority Matrix below sequences the work so you address the highest-return fixes first.
| Fix | Ranking Impact | Time Required | Who Needs This Most |
|---|---|---|---|
| Title tag rewrite | High | 1 to 2 hours for 20 pages | Any site where service pages use generic or brand-only titles |
| Core Web Vitals (LCP) | High | 2 to 8 hours | Sites on shared hosting or those with uncompressed hero images |
| Cannibalization audit | High | 2 to 4 hours | Multi-location businesses and sites with city landing pages |
| Internal link audit | Medium-High | 2 to 3 hours | Sites over 30 pages with orphan service pages |
| Schema markup | Medium | 1 to 3 hours | Any site with zero structured data currently in place |
| Image compression | Medium | 1 to 2 hours | E-commerce and portfolio sites with large product or gallery images |
| Meta descriptions | Medium | 1 to 2 hours | Sites where descriptions are auto-generated stubs or missing entirely |
| Author bios | Medium | 30 to 60 minutes | Blogs, advisory content, or any YMYL (health, finance, legal) pages |
| Canonical tag audit | Medium | 1 to 2 hours | Sites using WooCommerce, Shopify filters, or session-ID parameters |
| Content refresh | Medium | Ongoing | Any page that held a page-one position but has slipped in the last 90 days |
Review the common small business website mistakes that tend to compound these problems before you start, especially if the site was built without SEO in mind.
What We See Running Campaigns
When we run a full onsite audit for a new Phoenix client, the first Screaming Frog crawl almost always surfaces the same three problems before we even open Search Console: duplicate title tags across location pages, hero images between 1.5MB and 3MB that are killing LCP, and zero internal links pointing to the pages the business most wants to rank.
One pattern we track in the Phoenix campaigns we have audited: service pages that receive two to four new internal links from existing, relevant blog posts typically show impressions increasing within four to six weeks, often without any other change to the page itself. The pages were indexed but effectively invisible because nothing on the site signaled to Google that they mattered. That is not a link-building win. It is an internal architecture fix, and it costs nothing but the time to make the edits.
The other pattern worth naming: Phoenix businesses in competitive niches (HVAC, roofing, personal injury law) frequently have cannibalization problems between their main service page and a city landing page added later. In the campaigns we have audited, consolidating the thinner page into the stronger one with a 301 redirect has moved clients from page two to positions four to six for the primary keyword within roughly three months. That result is specific to those campaigns and not a guarantee, but it illustrates how much a single structural fix can accomplish without new content or new links.
DMD Digital
Frequently asked questions
What is onsite SEO?
Onsite SEO (also called on-page SEO) is the practice of optimizing elements you control on your own website, such as title tags, headings, page speed, schema markup, and internal links, so search engines can crawl, understand, and rank your pages for the right queries.
What are the top 10 SEO checklist items for a small business site?
The ten highest-impact items are: unique, keyword-rich title tags; a single matching H1 per page; clean URL slugs; fast load times (LCP under 2.5 seconds); mobile-friendly layout; descriptive image alt text; internal links to and from every key page; schema markup for your business type; a clear meta description for click-through; and a Google Search Console account to catch crawl errors.
What is the 80/20 rule in SEO?
In SEO, the 80/20 rule means roughly 80 percent of your ranking gains come from 20 percent of the work. For most local service businesses, that 20 percent is fixing title tags, passing Core Web Vitals, earning a handful of quality backlinks, and keeping your Google Business Profile accurate. The rest is refinement.
Can ChatGPT do an SEO audit?
ChatGPT can review page copy you paste in, suggest title tag rewrites, and flag readability issues, but it cannot crawl your live site, check server response codes, measure page speed, or pull real search volume data. Use it alongside tools like Google Search Console, PageSpeed Insights, and Screaming Frog, not instead of them.
How long does onsite SEO take to show results?
Most sites see measurable movement within 60 to 90 days of completing a full onsite audit and making the fixes. Pages that already receive some impressions in Google Search Console often respond faster, sometimes within two to four weeks of a title tag or content refresh.
Does onsite SEO work for local businesses in Phoenix?
Yes. Local Phoenix businesses benefit from onsite SEO by targeting neighborhood-level and service-specific keywords, adding LocalBusiness schema, and aligning page content with what Google shows in the local pack. Onsite and local SEO reinforce each other directly.

