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.

First published: Jul 2, 2026 · Last updated: Jul 25, 2026 · Advanced
demand #4 in CMS#27 in Platform SEO#219 in Technical SEO#302 on the site
1 evidence signal on this page

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 execution artifact, not the explainer — the ordered task list, with the “why” routed to the WordPress SEO deep dive. Set /%postname%/ before publishing. Run exactly one of Yoast / Rank Math / SEOPress and finish its wizard; kill any theme-level SEO tags too. Confirm the sitemap is live, contains only indexable URLs, and is submitted in Google Search Console and Bing Webmaster Tools (add IndexNow if you publish often). Edit robots.txt through the plugin: add a Sitemap: line, never Disallow /wp-content/, and never Disallow a page you want deindexed — a disallowed page’s noindex is never read. Noindex date and thin tag archives; category archives are a judgment call, and whatever you noindex must stay crawlable. Compress and alt-text images. Check for host-level caching before stacking a plugin. Install a redirect manager before the permalink change needs one. Confirm JSON-LD output and validate it in the Rich Results Test. Then walk the before-you-launch gate.

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

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-indexing 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-canonicalization, the core-vs-plugin sitemap 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.

  • 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 description template; set a default Open Graph social image.
  • Connect Google Search Console (and Bing Webmaster Tools 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.
TaskYoast SEORank MathSEOPress
First-run setupSEO → General (wizard)Rank Math → Setup WizardSEOPress → Setup Wizard
Titles / meta templatesSEO → Search AppearanceRank Math → Titles & MetaSEOPress → Titles & Metas
Per-taxonomy noindexSEO → Search Appearance → TaxonomiesRank Math → Titles & Meta → per-taxonomySEOPress → Titles & Metas → per-taxonomy
GSC / integrationsSEO → IntegrationsRank Math → General SettingsSEOPress → 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 Console and Bing Webmaster Tools. WordPress and the plugins do not auto-submit.
  • If you rely on WordPress core’s /wp-sitemap.xml instead of a plugin, know its limits (all public taxonomies/authors, no image sitemap, 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.txt 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 CMS.
  • 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 rendering.
  • Do NOT Disallow pages you want deindexed. Use the noindex meta tag instead. A disallowed page’s noindex is 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 text 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, not IMG_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 Vitals work.
  • 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-LD (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 SEO (paid) or Rank Math Pro for full Product schema (price, availability, reviews).
  • Validate with Google’s Rich Results 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/HTTPS active site-wide, no mixed-content warnings.
  • Caching/CDN configured and cache cleared after the last config change.
  • Core Web Vitals spot-checked (PageSpeed Insights / 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.

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 IndexNow 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.

Add an expert note

Pin an expert quote

New person? Create their unclaimed profile at /admin/experts/ → Pin an expert quote first.