Skip to content

The Technical SEO Checklist for WordPress

Key Takeaways

  • WordPress powers 40.7% of all websites, so WordPress-shaped technical debt like duplicate tag and category archives affects a huge share of the web.
  • Google Search Essentials sets the minimum bar at three requirements: Googlebot is not blocked, the page returns an HTTP 200 success status, and the page has indexable content.
  • Crawl budget gets wasted when duplicate URLs pile up, and Google says duplicate URLs on large sites can waste a lot of crawling time that should go to pages you want indexed.
  • Core Web Vitals use three passing thresholds at the 75th percentile: Largest Contentful Paint within 2.5 seconds, Interaction to Next Paint at 200 milliseconds or less, and Cumulative Layout Shift at 0.1 or less.
  • Structured data must include all required properties for eligibility in Google Search with enhanced display, so missing one required property removes eligibility entirely.

A client once forwarded me a “site health” report from a template-based checklist and asked why none of it had moved their rankings in three months. Every box was ticked: alt text present, sitemap submitted, SSL green padlock. What the checklist never asked was whether Google could actually reach the pages that mattered, because 40% of their site was duplicate tag archives quietly eating the crawl budget that should have gone to real content.

That is the problem with most technical SEO checklists: they are written for no CMS in particular, so they miss the failure modes that are specific to WordPress. This one is not generic. Every item below is something WordPress does by default that either helps or quietly works against you, sourced from Google’s own documentation, not a recycled 2019 listicle.

Table of Contents

What “Technical SEO” Actually Means on WordPress

Google’s own Search Essentials documentation reduces the minimum bar for search eligibility to three plain requirements: Googlebot is not blocked, the page returns an HTTP 200 success status, and the page has indexable content. Everything else people call “technical SEO” is really about clearing the way for those three things at scale, across hundreds or thousands of URLs, on a system that generates most of those URLs automatically.

That last part is the WordPress-specific twist. WordPress currently powers 40.7% of all websites, according to W3Techs’ live usage tracking, which also means WordPress-shaped technical debt (duplicate tag and category archives, unoptimized plugin output, default permalink structures) shows up across a huge share of the web. A generic checklist built for a hand-coded site does not know that a WordPress tag archive can quietly duplicate a category archive, because it has never had to.

W3Techs usage statistics showing WordPress powers 40.7 percent of all websites as of September 2026
W3Techs’ live tracker puts WordPress at 40.7% of all websites, which is why WordPress-specific technical debt is worth naming directly instead of generically.

Crawlability and Indexing First

Before anything else, confirm Google can reach and read the page at all.

  • robots.txt is not blocking real content. WordPress generates a virtual robots.txt by default, but caching plugins, staging-to-production migrations, and security plugins all edit it. Check yours directly at yoursite.com/robots.txt, not from memory.
  • Your XML sitemap only lists indexable URLs. If your sitemap plugin lists pages that are also noindexed, that is a direct contradiction Google has to resolve, and it does not resolve in your favor.
  • Noindex tags are doing what you think. Google’s own crawl-budget documentation is specific here: a noindex meta tag does not stop Google from requesting the page. Google still fetches it, sees the tag, and then drops it, which means noindex saves you nothing on crawl budget even though it keeps the page out of the index.
  • Orphan pages get found. A page with zero internal links is a page Google has to stumble onto through your sitemap alone. On a WordPress blog, this usually means old posts that fell off every category and tag list after a redesign.
Google Search Central Search Essentials technical requirements documentation page
Google’s Search Essentials page states the minimum bar plainly: not blocked, returns 200, has indexable content. Meeting it does not guarantee indexing, but missing it guarantees exclusion.

On larger WordPress sites, crawl budget stops being theoretical. Google’s large-site crawl budget guide is direct about the cost of letting duplicates pile up: “if many of these URLs are duplicates, this wastes a lot of Google’s crawling time on your site,” and that time comes out of the budget available for the pages you actually want indexed.

Site Structure, URLs, and Redirects

This is where WordPress’s own conveniences create most of the duplicate-content problems on the platform. Google’s canonicalization documentation names the exact mechanism: “site functions: for example, the results of sorting and filtering functions of a category page” are a standard cause of duplicate content. A WordPress category archive that can be sorted by date, popularity, or price (common on WooCommerce category pages) generates a fresh URL variant for every combination, and by default none of those variants are marked as duplicates of each other.

  • Set a canonical tag on every templated archive. Most SEO plugins do this automatically, but verify it on a filtered or paginated URL specifically, not just the clean version.
  • Fix redirect chains, don’t just add another hop. Every domain migration or permalink change that gets patched with “just add another redirect” instead of updating the original chain adds latency and burns crawl budget on hops instead of content.
  • Decide what tags and categories are actually for. If your tag archives are word-for-word close to your category archives, you have built the duplicate-content problem yourself. Prune tags that don’t earn their own page.
  • Use permalinks that describe the content, not the database ID. This is a one-time setting in WordPress under Settings > Permalinks, but it’s the setting most new sites never revisit after launch.

Faceted navigation is the extreme version of the same issue. Google’s own guidance on managing faceted navigation warns that filter combinations “can generate infinite URL spaces which harms the website,” and recommends either a disallow rule for the filter parameters in robots.txt or a canonical tag pointing back to the unfiltered version, specifically to reduce the crawl volume spent on the non-canonical versions.

Core Web Vitals on WordPress

Google’s current passing thresholds, measured at the 75th percentile of real visits, are specific and worth knowing exactly rather than approximately:

  • Largest Contentful Paint (LCP): should occur within 2.5 seconds of when the page starts loading.
  • Interaction to Next Paint (INP): pages should have an INP of 200 milliseconds or less.
  • Cumulative Layout Shift (CLS): pages should maintain a CLS of 0.1 or less.
Google web.dev Core Web Vitals overview page listing LCP, CLS, and INP metrics
web.dev’s Core Web Vitals guide sets the three passing thresholds: 2.5s LCP, 200ms INP, 0.1 CLS, all measured at the 75th percentile.

The WordPress-specific causes behind each metric are predictable once you know where to look:

  • LCP is usually a hero image or featured image served at full resolution with no lazy-loading exemption, or a render-blocking web font. Serve responsive image sizes and mark the hero image as a priority fetch.
  • INP tends to come from plugin JavaScript, especially page builders and chat widgets that attach dozens of event listeners on page load whether or not the visitor ever touches them.
  • CLS is almost always an ad slot, embed, or image without explicit width and height attributes, so the browser reflows the page once the asset finally loads.

Structured Data and Schema

Google’s structured data documentation is unusually strict on one point people tend to soften in their heads: “you must include all the required properties for an object to be eligible for appearance in Google Search with enhanced display.” Not most of them. All of them. A Product schema missing a price, or an Article schema missing a headline, is not partially eligible for a rich result; it is not eligible at all.

Google Search Central introduction to structured data documentation page
Google’s structured data guidelines are explicit that missing even one required property removes eligibility for the enhanced result entirely.

Most WordPress SEO plugins generate Article and Organization schema automatically, which covers the basics. The gaps show up on custom post types, WooCommerce products missing review or availability data, and FAQ sections built as plain headings instead of an actual FAQ block, which emits no FAQPage markup at all no matter how the content reads to a person.

The AI-Readiness Layer Most Checklists Skip

Every item above is classic technical SEO, and none of it is new. What most checklists still leave out entirely is whether an AI crawler, an AI Overview, or an agent acting on a user’s behalf can actually parse and trust the page once it gets there: whether your structured data is complete enough to be lifted cleanly, whether AI crawlers are allowed in your robots.txt at all, and whether your content answers a question directly enough to be quoted rather than just indexed.

This is also the layer a plugin-based SEO audit is least likely to catch, since most audit tools were built to check the pre-AI checklist. If you want a fuller breakdown of what a modern audit should cover beyond rankings and site health, we wrote a separate guide on exactly that gap.

The Actual Checklist

Everything above, condensed into something you can actually run through in under an hour:

  • Confirm robots.txt at yoursite.com/robots.txt is not blocking content you want indexed
  • Confirm your XML sitemap only lists URLs you actually want indexed
  • Set up Google Search Console and check the Coverage and Core Web Vitals reports, not just Performance
  • Check for orphan pages with zero internal links pointing to them
  • Verify canonical tags are correct on filtered, sorted, and paginated archive URLs
  • Audit your redirects for chains longer than one hop, and fix the source instead of adding a new hop
  • Decide whether every tag archive earns its own page, or whether it duplicates a category
  • Measure LCP, INP, and CLS against 2.5s / 200ms / 0.1 at the 75th percentile, not just on your own fast connection
  • Confirm structured data on your key page types includes every required property for its schema type, not just the common ones
  • Check whether your robots.txt allows or blocks the AI crawlers you actually want reading your content

None of this replaces good content, and none of it is a ranking guarantee on its own. What it does is remove the excuses: a technically clean WordPress site is one where Google’s own stated minimum, not blocked, returns 200, has indexable content, is met on every page that matters, instead of being true by accident on some and false by accident on others.

Suggested Reading

Stay updated with Helpful WordPress Tips, Insider Insights, and Exclusive Updates – Subscribe now to keep up with Everything Happening on WordPress!

Have Feedback or Questions?

Join our WordPress Community on Facebook!

About the Author

Photo of Aditya Sharma CMO of Nexter
CMO at POSIMYTH Innovations · Nexter · 7 years experience

He has spent years in the WordPress ecosystem building, breaking, and optimizing sites until they actually perform. He works at the intersection of speed, growth, and usability, helping creators ship websites that load fast and convert. An active WordPress community contributor sharing through tools, tutorials, and direct collaboration. Tested practice, not theory.

WordPressThemesElementorn8nAIClaudeAutomationServer

Related Blogs