WordPress SEO Checklist
An ordered, plugin-neutral WordPress SEO checklist — permalinks, Yoast/Rank Math/SEOPress setup, sitemap, robots.txt, archive noindex, images, caching, redirects, schema, and a before-you-launch gate.
1 evidence signal on this page
- Related live toolScout Site Audit Free
This is the ordered task list for setting up SEO on a WordPress site — the what-to-click layer, with the why living in the WordPress SEO deep dive it links to. Set permalinks to /%postname%/ before you publish. Run exactly one SEO plugin (Yoast, Rank Math, or SEOPress) and finish its wizard. Confirm the sitemap is live and submit it in Google Search Console and Bing Webmaster Tools. Edit robots.txt through the plugin — never Disallow pages you want deindexed, because Google can't read a noindex it isn't allowed to crawl. Noindex date and thin tag archives; treat category archives as a judgment call. Compress and alt-text images. Check whether your host already caches before stacking a caching plugin. Install a redirect manager before you need it. Validate schema in the Rich Results Test. Then walk the before-you-launch gate.
TL;DR — This is the click-by-click list for setting up SEO on a WordPress site. Do these in order: set your permalinks to the post-name style, install one SEO plugin (Yoast, Rank Math, or SEOPress — never two), run its setup wizard, make sure your sitemapA sitemap is a file that lists the pages, images, videos, and other files on your site so search engines can discover them. It helps discovery, but submitting a sitemap doesn't guarantee crawling or indexing. is on and submitted to Google and Bing, compress your images and give them alt textAlt text is the value of the `alt` attribute on an HTML `<img>` element — a short text substitute chosen for the image's purpose and context, not a literal description of what it shows. It makes images accessible to screen-reader users and helps search engines understand images, mainly for image search., and — the one that catches everyone — uncheck “Discourage search engines” before you go live. The full explanation of why each of these matters lives in my WordPress SEOWordPress SEO is the process of configuring, optimizing, and maintaining a WordPress site so search engines can efficiently crawl, index, and rank it. WordPress gives you a solid foundation, but its defaults — ?p=123 permalinks, attachment pages, thin archives — need cleanup before a site is actually well-optimized. guide; this page is just the to-do list.
Evidence for this claim WordPress's Discourage search engines setting asks search engines not to index the site but does not block access to the site. Scope: WordPress core setting; search engines decide whether to honor the request. Confidence: high · Verified: WordPress.org: Settings Reading Screen Evidence for this claim WordPress core exposes an XML sitemap index for public content on supported installations. Scope: WordPress core sitemap behavior; plugins may alter or replace it. Confidence: high · Verified: WordPress Developer Blog: XML sitemaps
How to use this list
WordPress works fine for SEO out of the box — but its defaults leave a few things half-done, and one setting can accidentally hide your whole site from Google. This checklist is the ordered set of things to fix or confirm. Building a new site? Go top to bottom. Auditing a site that’s already live? Jump to whatever section looks shaky.
I keep this to “what to click.” For the reasoning behind each item — why ?p=123
URLs are bad, why two SEO plugins fight each other — see the full WordPress SEO
article.
1. Fix your permalinks first
Go to Settings → Permalinks and choose Post name, so your URLs look like
/your-post-title/ instead of /?p=123. Do this before you publish real content —
changing it later means setting up redirectsA redirect sends browsers and crawlers from a requested URL to a different one. An HTTP redirect specifically is a 3xx status code paired with a Location header; meta refresh and JavaScript redirects achieve a similar navigation without being a 3xx response themselves. Permanent redirects (301/308) are Google's signal the target should be canonical; temporary ones (302/303/307) aren't. so old links don’t break.
2. Install one SEO plugin and run the wizard
Pick one of Yoast SEO, Rank Math, or SEOPress. Install it, run its setup wizard, and connect Google Search ConsoleA free Google service that reports how a site performs in Google Search and surfaces problems with how Google crawls, indexes, and serves it. It's first-party data straight from Google — but you don't need it to appear in results. when it offers to. Do not run two SEO plugins at once — they’ll produce conflicting tags and step on each other.
3. Turn on the search-engine visibility (this is the big one)
Go to Settings → Reading and make sure “Discourage search engines from indexingStoring a crawled page in the search index so it can appear in results. Crawled is not the same as indexed — Google selects what to keep, and indexing isn't guaranteed. this site” is unchecked. People leave this ticked from the build phase and then wonder why they never rank. Check it first, check it again before launch.
4. Make sure your sitemap is on — and submit it
Your SEO plugin generates an XML sitemapAn XML sitemap is a UTF-8 file listing the canonical URLs on your site (with optional lastmod) so search engines can discover and prioritize them. It's a discovery and diagnostic aid, not a guarantee of indexing — and Google ignores its priority and changefreq tags. automatically. Confirm it loads (Yoast and
Rank Math use /sitemap_index.xml), then submit that URL in both Google Search
Console and Bing Webmaster ToolsMicrosoft's free portal for monitoring and improving how a site appears in Bing search — the peer to Google Search Console, plus IndexNow instant indexing, richer backlink data, and keyword volumes. Because Bing's index also feeds Microsoft Copilot, it doubles as a window into AI-search visibility.. WordPress does not submit it for you.
5. Handle your images
- Give every content image real alt textAlt text is the value of the `alt` attribute on an HTML `<img>` element — a short text substitute chosen for the image's purpose and context, not a literal description of what it shows. It makes images accessible to screen-reader users and helps search engines understand images, mainly for image search. (describe it; don’t stuff keywords).
- Compress images before or on upload — WordPress doesn’t shrink them for you. Plugins like ShortPixel, Smush, or Imagify do it automatically.
- Name files descriptively (
black-labrador-puppy.jpg, notIMG_4021.jpg).
6. Decide what to hide from search
Your SEO plugin lets you noindex (hide from Google) thin pagesThin content is web content that provides little or no value to users. Google's spam policies name it 'thin content with little or no added value' — and it's about value per page, not word count.. Good defaults: hide
date archives and usually tag archives — they tend to be thin and duplicate
your categories. Leave category pages indexed only if they’re real, useful
landing pages. Important: use the plugin’s noindexNoindex is a directive that tells search engines to keep a page out of their index, so it won't appear in search results. It works only on pages a crawler can actually fetch — a page blocked in robots.txt can never be noindexed. setting for this, never a
robots.txtA plain-text file at the root of a host that tells crawlers which URLs they may and may not request. It controls crawling, not indexing — a blocked URL can still be indexed if it's linked from elsewhere. “Disallow” — Google can’t obey a “hide me” instruction on a page it isn’t
allowed to look at.
7. Check caching and speed
Many good WordPress hosts (Kinsta, WP Engine, Pressable) already cache your site at the server. Check that first — piling a caching plugin on top can conflict. If your host doesn’t cache, WP Rocket, LiteSpeed Cache, or W3 Total Cache handle it.
8. Before you launch
Uncheck “Discourage search engines,” confirm permalinks, confirm one plugin, confirm HTTPSHTTPS is the encrypted version of HTTP — it uses TLS to authenticate the server and protect data in transit between a browser and a website. Google announced it as a lightweight ranking signal in 2014 and today conditionally prefers HTTPS pages as canonical; Chrome marks plain HTTP pages 'Not Secure.' with no mixed-content warnings, and submit your sitemapA sitemap is a file that lists the pages, images, videos, and other files on your site so search engines can discover them. It helps discovery, but submitting a sitemap doesn't guarantee crawling or indexing. in both consoles. The Advanced tab has the full gated launch checklist.
Want the plugin-by-plugin menu paths, the robots.txt do’s and don’ts, the schema and redirect details, and the full launch gate? Switch to the Advanced tab.
TL;DR — This is the execution artifact, not the explainer — the ordered task list, with the “why” routed to the WordPress SEOWordPress SEO is the process of configuring, optimizing, and maintaining a WordPress site so search engines can efficiently crawl, index, and rank it. WordPress gives you a solid foundation, but its defaults — ?p=123 permalinks, attachment pages, thin archives — need cleanup before a site is actually well-optimized. deep dive. Set
Evidence for this claim WordPress's Discourage search engines setting asks search engines not to index the site but does not block access to the site. Scope: WordPress core setting; search engines decide whether to honor the request. Confidence: high · Verified: WordPress.org: Settings Reading Screen Evidence for this claim WordPress core exposes an XML sitemap index for public content on supported installations. Scope: WordPress core sitemap behavior; plugins may alter or replace it. Confidence: high · Verified: WordPress Developer Blog: XML sitemaps/%postname%/before publishing. Run exactly one of Yoast / Rank Math / SEOPress and finish its wizard; kill any theme-level SEO tags too. Confirm the sitemapA sitemap is a file that lists the pages, images, videos, and other files on your site so search engines can discover them. It helps discovery, but submitting a sitemap doesn't guarantee crawling or indexing. is live, contains only indexable URLs, and is submitted in Google Search ConsoleA free Google service that reports how a site performs in Google Search and surfaces problems with how Google crawls, indexes, and serves it. It's first-party data straight from Google — but you don't need it to appear in results. and Bing Webmaster ToolsThe free, first-party consoles search engines give site owners — Google Search Console and Bing Webmaster Tools — to see how their pages are crawled, indexed, and ranked, and to fix problems. The legacy name is 'webmaster tools.' (add IndexNowIndexNow is an open push protocol that lets you instantly tell participating search engines (Bing, Yandex, Naver, Seznam, and Yep) which URLs you've added, changed, or removed via a simple HTTP request — and one submission is shared across all of them. Google does not use it. if you publish often). Edit robots.txtA plain-text file at the root of a host that tells crawlers which URLs they may and may not request. It controls crawling, not indexing — a blocked URL can still be indexed if it's linked from elsewhere. through the plugin: add aSitemap:line, never Disallow/wp-content/, and never Disallow a page you want deindexed — a disallowed page’snoindexis never read. NoindexNoindex is a directive that tells search engines to keep a page out of their index, so it won't appear in search results. It works only on pages a crawler can actually fetch — a page blocked in robots.txt can never be noindexed. date and thin tag archives; category archives are a judgment call, and whatever you noindexNoindex is a directive that tells search engines to keep a page out of their index, so it won't appear in search results. It works only on pages a crawler can actually fetch — a page blocked in robots.txt can never be noindexed. must stay crawlable. Compress and alt-text images. Check for host-level cachingCaching stores a copy of a page or resource — in a browser, a CDN edge node, or a search crawler's own cache — so it can be served again without regenerating or re-downloading it. It isn't a direct ranking factor, but it feeds page speed and crawl efficiency. before stacking a plugin. Install a redirectA redirect sends browsers and crawlers from a requested URL to a different one. An HTTP redirect specifically is a 3xx status code paired with a Location header; meta refresh and JavaScript redirects achieve a similar navigation without being a 3xx response themselves. Permanent redirects (301/308) are Google's signal the target should be canonical; temporary ones (302/303/307) aren't. manager before the permalink change needs one. Confirm JSON-LDJSON-LD (JavaScript Object Notation for Linked Data) is a script-based structured data format, typically paired with the schema.org vocabulary to describe page content for search engines and AI systems. Google recommends it over Microdata and RDFa because it's the easiest format to implement and maintain at scale — but all three work, and structured data isn't a ranking signal. output and validate it in the Rich Results Test. Then walk the before-you-launch gate.
New build or existing-site audit?
- New build: work top to bottom — the order is roughly the order you’d actually do the work.
- Existing site: treat this as a triage list. Jump to permalinks, the single-plugin check, and the archive-indexingStoring a crawled page in the search index so it can appear in results. Crawled is not the same as indexed — Google selects what to keep, and indexing isn't guaranteed. decision first — those are where unmanaged WordPress sites break most often.
Everything below is the “what to click / what to confirm” layer. The reasoning —
WordPress’s self-canonicalizationHow search engines pick one canonical URL among duplicates and consolidate signals onto it., the core-vs-plugin sitemapA sitemap is a file that lists the pages, images, videos, and other files on your site so search engines can discover them. It helps discovery, but submitting a sitemap doesn't guarantee crawling or indexing. tradeoffs, the
wp_head() conflict behind the one-plugin rule — already lives in my full WordPress
SEO article, and each section here links back rather than re-deriving it.
1. Permalinks and URL structure
- Settings → Permalinks → Post name (
/%postname%/). - Do this before publishing. WordPress auto-redirects standard posts when you change the permalink structure, but custom post types and pages may not — verify.
- Don’t bake the category into the permalink (
/%category%/%postname%/) unless you have a deliberate reason; it creates fragile, deeply nested URLs. - If you’re changing structure on an established site, map the old→new URLs with 301s (see the redirects section below) before flipping the switch.
2. SEO plugin setup (Yoast / Rank Math / SEOPress)
Do the same core steps regardless of plugin, then use the menu-path table.
- Install exactly one SEO plugin and run its setup wizard.
- Confirm Settings → Reading → “Discourage search engines from indexing this site” is unchecked.
- Set the homepage title and meta descriptionThe meta description is an HTML head tag — `<meta name=\"description\" content=\"…\">` — that suggests a short summary of the page for the search snippet. It's not a Google ranking factor, and Google rewrites it the majority of the time, but a good one can still lift click-through. template; set a default Open GraphOpen Graph (OG) tags are `<meta>` elements in a page's head, defined by the Open Graph protocol (ogp.me, created by Facebook), that describe a page as a shareable object — its title, description, image, URL, and type. They control how a link preview card looks when the page is shared on Facebook, LinkedIn, Slack, Discord, WhatsApp, and iMessage. They are not a direct Google ranking factor, though Google reads og:title, og:image, and og:site_name as inputs to how a result appears. social image.
- Connect Google Search ConsoleA free Google service that reports how a site performs in Google Search and surfaces problems with how Google crawls, indexes, and serves it. It's first-party data straight from Google — but you don't need it to appear in results. (and Bing Webmaster ToolsMicrosoft's free portal for monitoring and improving how a site appears in Bing search — the peer to Google Search Console, plus IndexNow instant indexing, richer backlink data, and keyword volumes. Because Bing's index also feeds Microsoft Copilot, it doubles as a window into AI-search visibility. where the plugin
supports it). Google’s official Site Kit plugin is a clean way to wire up GSC
- Analytics if you prefer.
- Confirm only one SEO source is active — check that your theme (Genesis, Thesis, some page builders) isn’t also emitting its own title/meta/schema, and disable that if so.
| Task | Yoast SEO | Rank Math | SEOPress |
|---|---|---|---|
| First-run setup | SEO → General (wizard) | Rank Math → Setup Wizard | SEOPress → Setup Wizard |
| Titles / meta templates | SEO → Search Appearance | Rank Math → Titles & Meta | SEOPress → Titles & Metas |
| Per-taxonomy noindex | SEO → Search Appearance → Taxonomies | Rank Math → Titles & Meta → per-taxonomy | SEOPress → Titles & Metas → per-taxonomy |
| GSC / integrations | SEO → Integrations | Rank Math → General Settings | SEOPress → Advanced |
| Sitemap path | /sitemap_index.xml | /sitemap_index.xml | /sitemap.xml |
(Plugin UIs shift between versions — confirm the exact menu label in your install.)
3. XML sitemap configuration
- Confirm the plugin’s sitemap is enabled and reachable at its URL (paths in the table above).
- Exclude noindexed post types and taxonomies from the sitemap — don’t list what you’re telling Google not to index.
- Submit the sitemap manually in Google Search ConsoleGoogle's free tool for monitoring crawling, indexing, and search performance. and Bing Webmaster Tools. WordPress and the plugins do not auto-submit.
- If you rely on WordPress core’s
/wp-sitemap.xmlinstead of a plugin, know its limits (all public taxonomies/authors, no image sitemapAn image sitemap is a sitemap (or an extension added to an existing sitemap) that lists the images on your pages using Google's image namespace, helping Google discover images it might otherwise miss., 2,000-URL cap per file) — the full explanation is in the WordPress SEO article. - Note: Google ignores
<priority>and<changefreq>— the plugin’s priority/frequency toggles do nothing for crawl behavior, so don’t fuss over them.
4. robots.txt configuration
- Edit the virtual robots.txtA plain-text file at the root of a host that tells crawlers which URLs they may and may not request. It controls crawling, not indexing — a blocked URL can still be indexed if it's linked from elsewhere. from the plugin dashboard (Yoast and Rank Math both allow this without FTP). Self-hosted WordPress can serve a real robots.txt — you’re not locked like a hosted CMSA content management system (CMS) is software that lets users create, manage, and publish digital content — like blog posts and pages — without writing raw code. WordPress, Drupal, and Joomla are the most common open-source CMS platforms..
- Add a
Sitemap:line pointing to your sitemap (many plugins do this automatically once the sitemap module is on — verify). - Do NOT Disallow
/wp-content/— it blocks CSS/JS/images and breaks renderingTurning HTML, CSS, and JavaScript into the final visual page and DOM.. - Do NOT Disallow pages you want deindexed. Use the
noindexmeta tag instead. A disallowed page’snoindexis never seen (see Quotes) — Google may even index a blocked URL with no snippet. - Reasonable Disallow candidates:
/wp-admin/(WordPress adds this by default) and internal-search query variants (?s=) if not otherwise handled.
5. Category, tag, and archive indexing decisions
Set these per-taxonomy in your plugin’s title/meta section. The guiding rule: index what functions as a real landing page, noindex what’s thin — and keep noindexed pages crawlable.
- Tag archives: usually noindex — thin, and they overlap your categories.
- Date archives: noindex almost always — nobody searches by publish month; Yoast noindexes these by default.
- Author archives: noindex on single-author sites; keep indexed only on genuine multi-author publications where the author page adds value.
- Category archives: judgment call, not a blanket rule — index a curated category page with real intro copy and meaningful post volume; noindex a bare list of post titles.
- Whatever you noindex, do not also Disallow it in robots.txt — this is the single most-missed nuance in generic checklists.
- Don’t belt-and-suspenders a noindex and a canonical to another page on the same archive — pick one signal (see Quotes).
6. Image alt text and compression
- Descriptive alt textAlt text is the value of the `alt` attribute on an HTML `<img>` element — a short text substitute chosen for the image's purpose and context, not a literal description of what it shows. It makes images accessible to screen-reader users and helps search engines understand images, mainly for image search. on every content image — describe the image, don’t keyword-stuff. Depth lives in the alt-text article; don’t re-derive it here.
- Compress/resize before upload — WordPress won’t optimize on upload without a plugin. Common choices: ShortPixel, Smush, Imagify, EWWW.
- Descriptive filenames before upload (
black-labrador-puppy.jpg, notIMG_4021.jpg) — renaming after upload doesn’t change the live file/URL. - Serve modern formats (WebP/AVIF) via plugin or host support.
7. Caching and CDN setup
- Check host-level caching first. Many managed WordPress hosts (WP Engine, Kinsta, Pressable) cache at the server — stacking a caching plugin can conflict or add nothing.
- If you’re self-managing: WP Rocket (paid, easiest), LiteSpeed Cache (free, best on LiteSpeed hosting), W3 Total Cache (free, most configurable), WP Super Cache (free, simplest).
- Add a CDN — many caching plugins bundle or partner with one; Cloudflare is a common standalone option.
- Clear the cache after any SEO-plugin config change, then spot-check the cached HTML shows the correct title/meta/canonical — caching before the SEO plugin’s hooks fire can serve stale metadata. This ties straight into your Core Web VitalsGoogle's three real-user UX metrics — LCP (loading), INP (responsiveness), and CLS (visual stability) — used by Google's ranking systems, with no official weight attached, measured on field data. work.
8. Broken links and redirects
- Install a redirect manager before you need it. Rank Math and AIOSEO bundle one free; Yoast’s is a paid add-on; or use the standalone Redirection plugin. Set 301s for any URL-structure change — including the permalink change in step 1.
- Broken-link checking: AIOSEO’s Broken Link Checker or the standalone Broken Link Checker plugin — scans internal/external links and flags 404s.
- Prefer a redirect/broken-link tool that reads Search Console’s 404 data so you catch the 404s Google actually found, not only what a local scan surfaces.
9. Schema / structured data output
- Confirm the SEO plugin outputs JSON-LDJSON-LD (JavaScript Object Notation for Linked Data) is a script-based structured data format, typically paired with the schema.org vocabulary to describe page content for search engines and AI systems. Google recommends it over Microdata and RDFa because it's the easiest format to implement and maintain at scale — but all three work, and structured data isn't a ranking signal. (not legacy microdata). Yoast and Rank Math auto-add Organization/Person, WebSite, WebPage, Article, and BreadcrumbList.
- Add specific types where they fit the content: FAQ, HowTo, Review / AggregateRating.
- WooCommerce: core WooCommerce does not output Product JSON-LD — you need Yoast WooCommerce SEOWooCommerce SEO is optimizing a WooCommerce store — which runs as a free plugin on WordPress, not as a standalone platform — to rank in organic search. Because you control the whole stack (templates, URLs, plugins, server), the ceiling is high and the ways to misconfigure it are many. (paid) or Rank Math Pro for full Product schemaProduct schema (schema.org/Product) is structured data that tells search engines a page's product name, price, availability, and reviews so it can appear in Shopping-style rich results. It's separate from a Google Merchant Center feed, though Google reconciles the two. (price, availability, reviews).
- Validate with Google’s Rich ResultsRich results (formerly 'rich snippets') are enhanced search listings — stars, images, prices, breadcrumbs, video thumbnails, and more — that Google and Bing build from structured data. They're a display feature, not a ranking factor, and eligibility never guarantees they'll show. Test — plugin defaults aren’t guaranteed error-free against your specific theme. Bing reads JSON-LD too, so the same output benefits both.
10. Before you launch — final gate
A distinct pre-launch pass, separate from ongoing maintenance:
- Settings → Reading → “Discourage search engines” is UNCHECKED.
- Permalink structure finalized (
/%postname%/) before real URLs get indexed. - Exactly one SEO plugin active and fully configured.
- XML sitemap live, reachable, contains only indexable URLs.
- robots.txt reviewed — no
/wp-content/block, no Disallow standing in for a noindex. - SSL/HTTPSHTTPS is the encrypted version of HTTP — it uses TLS to authenticate the server and protect data in transit between a browser and a website. Google announced it as a lightweight ranking signal in 2014 and today conditionally prefers HTTPS pages as canonical; Chrome marks plain HTTP pages 'Not Secure.' active site-wide, no mixed-content warnings.
- Caching/CDN configured and cache cleared after the last config change.
- Core Web VitalsWeb Vitals is Google's initiative (launched May 2020) for unified page-experience quality signals. Core Web Vitals — LCP, INP, and CLS — are the subset used in ranking; the rest (TTFB, FCP, TBT, Speed Index) are diagnostic, not ranking factors. spot-checked (PageSpeed InsightsPageSpeed Insights (PSI) is a free Google tool at pagespeed.web.dev that reports two kinds of data for a URL: real-user field data from the Chrome UX Report and a single Lighthouse lab run with the 0–100 Performance score. Only the field Core Web Vitals are what Google uses for ranking. / Search Console) on the home page, a post, and a key landing page.
- Redirect plugin installed; staging→production and any migration URLs mapped with 301s.
- Schema validated via Rich Results Test on a representative page.
- Google Search Console and Bing Webmaster Tools verified; sitemap submitted in both.
- Analytics / Site Kit connected.
This raw-HTML pass catches repeatable template basics and states what it did not evaluate. WordPress plugin settings, rendered JavaScript, and Search Console still need separate checks.
Crawl the site before launch with my free Scout Site Audit Free Free
- Crawl the launch candidate and note discovered versus crawled coverage.
- Group recurring title, canonical, indexability, and metadata findings by template.
- Fix the source template, rerun the crawl, then verify important URLs in Search Console.
The sample has an 82 out of 100 raw-HTML score, crawled 24 of 31 discovered URLs, reports two missing-title warnings, and says rendered JavaScript and AI checks were not evaluated.
A note on Bing and IndexNow
There’s no Bing-specific “WordPress checklist” — the same technical items apply, you just also submit to Bing Webmaster Tools. If you publish or update frequently, add the IndexNowIndexNow is an open push protocol that lets you instantly tell participating search engines (Bing, Yandex, Naver, Seznam, and Yep) which URLs you've added, changed, or removed via a simple HTTP request — and one submission is shared across all of them. Google does not use it. plugin: it hosts the required API key at your site root and pings Bing (and Yandex, Seznam) on new/changed/deleted URLs for faster discovery, separate from the standard sitemap submission.
AI summary
A condensed take on the Advanced version:
- This is the task list, not the explainer. The “why” lives in the WordPress SEOWordPress SEO is the process of configuring, optimizing, and maintaining a WordPress site so search engines can efficiently crawl, index, and rank it. WordPress gives you a solid foundation, but its defaults — ?p=123 permalinks, attachment pages, thin archives — need cleanup before a site is actually well-optimized. deep dive; every section here is “what to click / what to confirm.”
- Permalinks first: Settings → Permalinks → Post name (
/%postname%/), before publishing; 301-map any later structure change. - One SEO plugin only (Yoast, Rank Math, or SEOPress). Run its wizard; disable any theme-level SEO tag output. Connect GSCA free Google service that reports how a site performs in Google Search and surfaces problems with how Google crawls, indexes, and serves it. It's first-party data straight from Google — but you don't need it to appear in results. (Site Kit optional).
- Uncheck “Discourage search engines” (Settings → Reading) — the single most common launch-killer.
- SitemapA sitemap is a file that lists the pages, images, videos, and other files on your site so search engines can discover them. It helps discovery, but submitting a sitemap doesn't guarantee crawling or indexing.: confirm it’s live and contains only indexable URLs; submit manually
in Google Search ConsoleA free Google service that reports how a site performs in Google Search and surfaces problems with how Google crawls, indexes, and serves it. It's first-party data straight from Google — but you don't need it to appear in results. and Bing Webmaster ToolsMicrosoft's free portal for monitoring and improving how a site appears in Bing search — the peer to Google Search Console, plus IndexNow instant indexing, richer backlink data, and keyword volumes. Because Bing's index also feeds Microsoft Copilot, it doubles as a window into AI-search visibility.. Google ignores
<priority>/<changefreq>. - robots.txtA plain-text file at the root of a host that tells crawlers which URLs they may and may not request. It controls crawling, not indexing — a blocked URL can still be indexed if it's linked from elsewhere. via plugin: add a
Sitemap:line; never Disallow/wp-content/; never Disallow a page you want deindexed — a disallowed page’snoindexis never read. - Archive indexingStoring a crawled page in the search index so it can appear in results. Crawled is not the same as indexed — Google selects what to keep, and indexing isn't guaranteed.: noindexNoindex is a directive that tells search engines to keep a page out of their index, so it won't appear in search results. It works only on pages a crawler can actually fetch — a page blocked in robots.txt can never be noindexed. date and thin tag archives (and single-author author archives); category archives are a judgment call; keep noindexed pages crawlable; don’t stack noindexNoindex is a directive that tells search engines to keep a page out of their index, so it won't appear in search results. It works only on pages a crawler can actually fetch — a page blocked in robots.txt can never be noindexed. + canonical on the same page.
- Images: descriptive alt textAlt text is the value of the `alt` attribute on an HTML `<img>` element — a short text substitute chosen for the image's purpose and context, not a literal description of what it shows. It makes images accessible to screen-reader users and helps search engines understand images, mainly for image search. (no stuffing), compress before/on upload, descriptive filenames, modern formats.
- CachingCaching stores a copy of a page or resource — in a browser, a CDN edge node, or a search crawler's own cache — so it can be served again without regenerating or re-downloading it. It isn't a direct ranking factor, but it feeds page speed and crawl efficiency.: check for host-level caching first before stacking a plugin; clear cache after SEO-config changes and verify cached metadata.
- RedirectsA redirect sends browsers and crawlers from a requested URL to a different one. An HTTP redirect specifically is a 3xx status code paired with a Location header; meta refresh and JavaScript redirects achieve a similar navigation without being a 3xx response themselves. Permanent redirects (301/308) are Google's signal the target should be canonical; temporary ones (302/303/307) aren't.: install a redirect manager before you need it; add a broken-link checker; prefer tools that read GSC 404 data.
- Schema: confirm JSON-LDJSON-LD (JavaScript Object Notation for Linked Data) is a script-based structured data format, typically paired with the schema.org vocabulary to describe page content for search engines and AI systems. Google recommends it over Microdata and RDFa because it's the easiest format to implement and maintain at scale — but all three work, and structured data isn't a ranking signal. output; add FAQ/HowTo/Review where relevant; WooCommerce needs a paid add-on for Product schemaProduct schema (schema.org/Product) is structured data that tells search engines a page's product name, price, availability, and reviews so it can appear in Shopping-style rich results. It's separate from a Google Merchant Center feed, though Google reconciles the two.; validate in the Rich ResultsRich results (formerly 'rich snippets') are enhanced search listings — stars, images, prices, breadcrumbs, video thumbnails, and more — that Google and Bing build from structured data. They're a display feature, not a ranking factor, and eligibility never guarantees they'll show. Test.
- Launch gate: visibility checkbox, permalinks, one plugin, sitemapA sitemap is a file that lists the pages, images, videos, and other files on your site so search engines can discover them. It helps discovery, but submitting a sitemap doesn't guarantee crawling or indexing., robots.txtA plain-text file at the root of a host that tells crawlers which URLs they may and may not request. It controls crawling, not indexing — a blocked URL can still be indexed if it's linked from elsewhere., HTTPSHTTPS is the encrypted version of HTTP — it uses TLS to authenticate the server and protect data in transit between a browser and a website. Google announced it as a lightweight ranking signal in 2014 and today conditionally prefers HTTPS pages as canonical; Chrome marks plain HTTP pages 'Not Secure.', caching, CWV, redirects, schema, both consoles, analytics.
- Bing/IndexNowIndexNow is an open push protocol that lets you instantly tell participating search engines (Bing, Yandex, Naver, Seznam, and Yep) which URLs you've added, changed, or removed via a simple HTTP request — and one submission is shared across all of them. Google does not use it.: same items apply; add the IndexNow plugin if you publish often.
Official documentation
Primary-source documentation behind the checklist items.
- Build and submit a sitemap — CMSA content management system (CMS) is software that lets users create, manage, and publish digital content — like blog posts and pages — without writing raw code. WordPress, Drupal, and Joomla are the most common open-source CMS platforms. sitemapsA sitemap is a file that lists the pages, images, videos, and other files on your site so search engines can discover them. It helps discovery, but submitting a sitemap doesn't guarantee crawling or indexing., the 50MB / 50,000-URL cap, and the sitemapA sitemap is a file that lists the pages, images, videos, and other files on your site so search engines can discover them. It helps discovery, but submitting a sitemap doesn't guarantee crawling or indexing. indexStoring a crawled page in the search index so it can appear in results. Crawled is not the same as indexed — Google selects what to keep, and indexing isn't guaranteed..
- Create and submit a robots.txt file — hosted vs. self-hosted CMS robots.txtA plain-text file at the root of a host that tells crawlers which URLs they may and may not request. It controls crawling, not indexing — a blocked URL can still be indexed if it's linked from elsewhere. editing.
- Robots meta tag, data-nosnippet, and X-Robots-Tag — why a noindexed page must stay crawlable.
- Intro to structured data markup — installing a schema plugin on a CMS.
- Google Images best practices — image size, descriptive filenames, and alt-text guidance.
- Site Kit is now available for all — Google’s official WordPress plugin for GSCA free Google service that reports how a site performs in Google Search and surfaces problems with how Google crawls, indexes, and serves it. It's first-party data straight from Google — but you don't need it to appear in results./Analytics.
Bing / Microsoft
- Sitemaps (Bing Webmaster Tools) — submitting and passive discovery via the
Sitemap:robots.txtA plain-text file at the root of a host that tells crawlers which URLs they may and may not request. It controls crawling, not indexing — a blocked URL can still be indexed if it's linked from elsewhere. directive.
Quotes from the source
On-the-record statements behind the checklist’s trickier calls. Each link jumps to or sources the quoted passage.
Google — CMSA content management system (CMS) is software that lets users create, manage, and publish digital content — like blog posts and pages — without writing raw code. WordPress, Drupal, and Joomla are the most common open-source CMS platforms. sitemapsA sitemap is a file that lists the pages, images, videos, and other files on your site so search engines can discover them. It helps discovery, but submitting a sitemap doesn't guarantee crawling or indexing.
- “If you’re using a CMS such as WordPress, Wix, or Blogger, it’s likely that your CMS has already made a sitemapA sitemap is a file that lists the pages, images, videos, and other files on your site so search engines can discover them. It helps discovery, but submitting a sitemap doesn't guarantee crawling or indexing. available to search engines.” — Google Search Central, Build and submit a sitemapThe Google Search Console report where you submit sitemaps and watch how Google processes them — type, last read date, status, and how many URLs were discovered. It confirms Google read your list; it doesn't prove anything got indexed.. Jump to quote
Google — hosted CMS robots.txtA plain-text file at the root of a host that tells crawlers which URLs they may and may not request. It controls crawling, not indexing — a blocked URL can still be indexed if it's linked from elsewhere.
- “If you use a site hosting service, such as Wix or Blogger, you might not need to (or be able to) edit your robots.txtA plain-text file at the root of a host that tells crawlers which URLs they may and may not request. It controls crawling, not indexing — a blocked URL can still be indexed if it's linked from elsewhere. file directly.” — Google Search Central, Create and submit a robots.txt file. (Self-hosted WordPress can edit a real robots.txt — this is Google’s general hosted-CMS note.) Jump to quote
Google — why noindexNoindex is a directive that tells search engines to keep a page out of their index, so it won't appear in search results. It works only on pages a crawler can actually fetch — a page blocked in robots.txt can never be noindexed. needs crawlabilityCrawlability is how well search engine crawlers can discover, access, and fetch a site's pages. A crawlability issue is any technical condition — blocked access, broken links, server failures, or bloated URL inventory — that stops pages from reaching the index.
- “If a page is disallowed from crawlingCrawling is how search engines use automated bots (like Googlebot and Bingbot) to discover URLs and download pages. A page has to be crawlable to be indexed, but crawling on its own isn't a ranking factor. through the robots.txt file, then any information about indexingStoring a crawled page in the search index so it can appear in results. Crawled is not the same as indexed — Google selects what to keep, and indexing isn't guaranteed. or serving rules will not be foundA 302 (\"Found\") is a temporary redirect: it forwards users to a new URL while telling search engines the original URL should stay in the index. It's a weak canonicalization signal, not the zero-equity dead end of SEO folklore. and will therefore be ignored.”
— Google Search Central, Robots meta tagThe robots meta tag is an HTML element in a page's head — <meta name=\"robots\" content=\"noindex\"> — that tells search engines how to index and serve that page. It's crawl-then-obey: a page blocked in robots.txt is never fetched, so the tag is never seen.. (The reason you
noindexthin archives via the meta tag, never via a robots.txt Disallow.) Jump to quote
Google — images and page weight
- “images are often the largest contributor to overall page size, which can make pages slow and expensive to load” — Google Search Central, Google Images best practices. Jump to quote
- “Avoid filling
altattributes with keywords (also known as keyword stuffing) as it results in a negative user experience” Jump to quote
Google — structured dataStructured data is a standardized way of labeling page content (using the schema.org vocabulary in JSON-LD, Microdata, or RDFa) so search engines can understand its meaning. It's not a direct ranking factor — its value is rich results and entity understanding. on a CMS
- “If you use a CMS, such as WordPress, you might not be able to edit your HTML directly. Instead, your CMS may have a search engine settings page, or you may be able to install a plugin that allows you to specify structured data.” — Google Search Central, Intro to structured data markup. Source
Yoast — archive noindexNoindex is a directive that tells search engines to keep a page out of their index, so it won't appear in search results. It works only on pages a crawler can actually fetch — a page blocked in robots.txt can never be noindexed. defaults
- “The plugin allows you to either add
noindex, followthe archives or to disable them completely.” and “If you insist on having a date-based archive present, at least ensure that you applynoindex, nofollowto it” — Yoast, Archive SEO. (Supports the “noindex date archives; categories are a choice” call.) Source
John Mueller, Google — pick one signal, and don’t strand a noindex
- “So noindex and follow is essentially the same as a noindex, nofollowrel=\"nofollow\" is a value of the HTML link rel attribute that tells search engines you don't vouch for a linked page and don't want to pass ranking signals to it. Since 2019–2020 Google treats it as a hint, not a directive — and it does not reliably block crawling or indexing.. There’s no really big difference there in the long run.” — reinforcing that a noindexed archive must stay crawlable and shouldn’t be doubly blocked. Read the coverage
- On combining canonical and noindex: “I’d just pick one (noindex or followed links). Links on a noindexed page can be picked up, but it’s not guaranteed. SEO is often about making your preference very clear and not about maybe’s.” Read the coverage
The WordPress SEO checklist
Work top to bottom for a new build; jump to a section for an audit.
1. Permalinks
- Settings → Permalinks → Post name (
/%postname%/), set before publishing. - No category baked into the permalink without a deliberate reason.
- Any structure change on a live site is 301-mapped before flipping.
2. SEO plugin setup
- Exactly one SEO plugin (Yoast / Rank Math / SEOPress) installed; wizard run.
- Settings → Reading → “Discourage search engines” UNCHECKED.
- Homepage title/meta template set; default Open GraphOpen Graph (OG) tags are `<meta>` elements in a page's head, defined by the Open Graph protocol (ogp.me, created by Facebook), that describe a page as a shareable object — its title, description, image, URL, and type. They control how a link preview card looks when the page is shared on Facebook, LinkedIn, Slack, Discord, WhatsApp, and iMessage. They are not a direct Google ranking factor, though Google reads og:title, og:image, and og:site_name as inputs to how a result appears. image set.
- Google Search ConsoleA free Google service that reports how a site performs in Google Search and surfaces problems with how Google crawls, indexes, and serves it. It's first-party data straight from Google — but you don't need it to appear in results. (and Bing) connected; theme-level SEO tags disabled.
3. XML sitemapAn XML sitemap is a UTF-8 file listing the canonical URLs on your site (with optional lastmod) so search engines can discover and prioritize them. It's a discovery and diagnostic aid, not a guarantee of indexing — and Google ignores its priority and changefreq tags.
- SitemapA sitemap is a file that lists the pages, images, videos, and other files on your site so search engines can discover them. It helps discovery, but submitting a sitemap doesn't guarantee crawling or indexing. live and reachable at its URL.
- Noindexed post types/taxonomies excluded from the sitemapA sitemap is a file that lists the pages, images, videos, and other files on your site so search engines can discover them. It helps discovery, but submitting a sitemap doesn't guarantee crawling or indexing..
- Sitemap submitted in both Google Search ConsoleA free Google service that reports how a site performs in Google Search and surfaces problems with how Google crawls, indexes, and serves it. It's first-party data straight from Google — but you don't need it to appear in results. and Bing Webmaster ToolsMicrosoft's free portal for monitoring and improving how a site appears in Bing search — the peer to Google Search Console, plus IndexNow instant indexing, richer backlink data, and keyword volumes. Because Bing's index also feeds Microsoft Copilot, it doubles as a window into AI-search visibility..
4. robots.txtA plain-text file at the root of a host that tells crawlers which URLs they may and may not request. It controls crawling, not indexing — a blocked URL can still be indexed if it's linked from elsewhere.
-
Sitemap:line present. - No Disallow on
/wp-content/. - No Disallow standing in for a
noindex. -
/wp-admin/(default) and internal-search?s=handled as needed.
5. Archive indexingStoring a crawled page in the search index so it can appear in results. Crawled is not the same as indexed — Google selects what to keep, and indexing isn't guaranteed.
- Date archives noindexed.
- Tag archives noindexed (unless genuinely useful).
- Author archives noindexed on single-author sites.
- Category archives indexed only when they’re real landing pages.
- Nothing noindexed is also Disallowed; no noindexNoindex is a directive that tells search engines to keep a page out of their index, so it won't appear in search results. It works only on pages a crawler can actually fetch — a page blocked in robots.txt can never be noindexed.+canonical on the same page.
6. Images
- Descriptive alt textAlt text is the value of the `alt` attribute on an HTML `<img>` element — a short text substitute chosen for the image's purpose and context, not a literal description of what it shows. It makes images accessible to screen-reader users and helps search engines understand images, mainly for image search. (no keyword stuffing) on content images.
- Images compressed before/on upload.
- Descriptive filenames; modern formats (WebP/AVIF) served.
7. Caching / CDN
- Host-level caching checked first before adding a plugin.
- Caching plugin/CDN configured; cache cleared after SEO-config changes.
- Cached HTML verified to show correct title/meta/canonical.
8. RedirectsA redirect sends browsers and crawlers from a requested URL to a different one. An HTTP redirect specifically is a 3xx status code paired with a Location header; meta refresh and JavaScript redirects achieve a similar navigation without being a 3xx response themselves. Permanent redirects (301/308) are Google's signal the target should be canonical; temporary ones (302/303/307) aren't. / broken links
- Redirect manager installed before it’s needed; permalink change 301-mapped.
- Broken-link checker running.
- Tool reads GSC 404 data where possible.
9. Schema
- SEO plugin outputting JSON-LDJSON-LD (JavaScript Object Notation for Linked Data) is a script-based structured data format, typically paired with the schema.org vocabulary to describe page content for search engines and AI systems. Google recommends it over Microdata and RDFa because it's the easiest format to implement and maintain at scale — but all three work, and structured data isn't a ranking signal. (Org, WebSite, WebPage, Article, Breadcrumb).
- Content-specific types (FAQ/HowTo/Review) added where they fit.
- WooCommerce Product schemaProduct schema (schema.org/Product) is structured data that tells search engines a page's product name, price, availability, and reviews so it can appear in Shopping-style rich results. It's separate from a Google Merchant Center feed, though Google reconciles the two. handled (needs a paid add-on).
- Output validated in the Rich ResultsRich results (formerly 'rich snippets') are enhanced search listings — stars, images, prices, breadcrumbs, video thumbnails, and more — that Google and Bing build from structured data. They're a display feature, not a ranking factor, and eligibility never guarantees they'll show. Test.
10. Before you launch
- “Discourage search engines” UNCHECKED.
- Permalinks finalized.
- One SEO plugin, fully configured.
- Sitemap live, indexable URLs only, submitted in both consoles.
- robots.txtA plain-text file at the root of a host that tells crawlers which URLs they may and may not request. It controls crawling, not indexing — a blocked URL can still be indexed if it's linked from elsewhere. reviewed.
- HTTPSHTTPS is the encrypted version of HTTP — it uses TLS to authenticate the server and protect data in transit between a browser and a website. Google announced it as a lightweight ranking signal in 2014 and today conditionally prefers HTTPS pages as canonical; Chrome marks plain HTTP pages 'Not Secure.' site-wide, no mixed contentMixed content is when a page served over HTTPS loads a sub-resource — a script, stylesheet, image, iframe, or similar — over insecure HTTP. Browsers' current taxonomy is upgradable versus blockable; active mixed content (scripts, styles, iframes) is blocked, and passive mixed content (images, audio, video) is warned about or increasingly auto-upgraded, with exceptions like CORS-enabled images and srcset/picture candidates that are blockable, not upgradable..
- Caching/CDN set, cache cleared.
- Core Web VitalsGoogle's three real-user UX metrics — LCP (loading), INP (responsiveness), and CLS (visual stability) — used by Google's ranking systems, with no official weight attached, measured on field data. spot-checked on home / post / key landing page.
- Redirects mapped for staging→production and any migration.
- Schema validated.
- GSC + Bing verified; sitemap submitted in both.
- Analytics / Site Kit connected.
WordPress launch gate
| Area | Pass condition |
|---|---|
| Visibility | ”Discourage search engines” is off on production |
| URLs | Intended permalink structure is stable; sample routes return expected statuses |
| Plugin | One SEO plugin owns metadata, sitemapA sitemap is a file that lists the pages, images, videos, and other files on your site so search engines can discover them. It helps discovery, but submitting a sitemap doesn't guarantee crawling or indexing., canonicals, and schema |
| Indexation | Categories, tags, authors, search, media, and attachments are intentional |
| Discovery | SitemapA sitemap is a file that lists the pages, images, videos, and other files on your site so search engines can discover them. It helps discovery, but submitting a sitemap doesn't guarantee crawling or indexing. contains canonical public URLs and is submitted |
| Templates | One title, canonical, description, and appropriate robots directive per sample |
| Migration | Old valuable URLs redirectA redirect sends browsers and crawlers from a requested URL to a different one. An HTTP redirect specifically is a 3xx status code paired with a Location header; meta refresh and JavaScript redirects achieve a similar navigation without being a 3xx response themselves. Permanent redirects (301/308) are Google's signal the target should be canonical; temporary ones (302/303/307) aren't. directly to relevant live destinations |
| Performance | Production templates and key images are tested with field/lab evidence |
Tools for the checklist
- Scout Site Audit Free — sample status, metadata, canonical, and crawl issuesCrawlability is how well search engine crawlers can discover, access, and fetch a site's pages. A crawlability issue is any technical condition — blocked access, broken links, server failures, or bloated URL inventory — that stops pages from reaching the index..
- Sitemap Validator — verify WordPress or plugin sitemapA sitemap is a file that lists the pages, images, videos, and other files on your site so search engines can discover them. It helps discovery, but submitting a sitemap doesn't guarantee crawling or indexing. output.
- Robots.txt Tester — test production crawl rules by URL and crawlerA crawler — also called a spider or bot — is an automated program that fetches web pages, extracts their links, and queues new URLs to visit. Search engines use crawlers to discover and download content for their index..
- Schema Validator — inspect combined theme/plugin JSON-LDJSON-LD (JavaScript Object Notation for Linked Data) is a script-based structured data format, typically paired with the schema.org vocabulary to describe page content for search engines and AI systems. Google recommends it over Microdata and RDFa because it's the easiest format to implement and maintain at scale — but all three work, and structured data isn't a ranking signal. output.
- Redirect Chain Mapper — validate migration and permalink redirectsA redirect sends browsers and crawlers from a requested URL to a different one. An HTTP redirect specifically is a 3xx status code paired with a Location header; meta refresh and JavaScript redirects achieve a similar navigation without being a 3xx response themselves. Permanent redirects (301/308) are Google's signal the target should be canonical; temporary ones (302/303/307) aren't..
- Core Web Vitals Checker — review page-template performance evidence.
Test yourself: WordPress SEO Checklist
Five quick questions on setting up SEO on a WordPress site. Pick an answer for each, then check.
Build-time retrieval analysis plus live signals for this exact article. The automatic chunk report includes a deterministic readiness score and is ready without a model download.
Search Console
sampleGA4 traffic (28d)
sampleCloudflare traffic (7d)
sampledCrUX field data (28d, phone)
sampleGoogle NLP entities
localChangelog
Updated Jul 25, 2026.
Editorial summary and recorded change details.Summary
Aligned legacy tool display names with returntag - hreflang checker and Scout Site Audit Free.
Change details
-
Updated the linked tool names to match their current public labels.
Full comparison unavailable — no prior snapshot was archived for this revision.