WooCommerce SEO Guide - Optimise Your Store for Search

WooCommerce SEO challenges: thin product pages, duplicate filter URLs, and category cannibalization. How to address each one and rank higher.

Dobromir Dechev
Dobromir WordPress agency owner

Quick answer

WooCommerce SEO requires fixing thin product pages, blocking faceted filter URLs from indexing, resolving category/product page cannibalization, and implementing correct Product schema for rich snippets.

WooCommerce SEO is different from blog SEO. The challenges are distinct: thousands of product pages with thin content, infinite faceted filtering URLs, category pages competing with product pages, and product schema that needs to be correct for rich snippets.

This guide covers the WooCommerce-specific optimisation steps that move the needle for organic store traffic.


WooCommerce SEO foundations

Set up your SEO plugin correctly for WooCommerce

Rank Math, Yoast, and SEOPress all have WooCommerce-specific settings. In Rank Math:

  • Enable "WooCommerce" module in the Rank Math dashboard
  • This adds product-specific schema (Product, Offer, AggregateRating)
  • Enable "Remove generator tag" and "Remove WooCommerce version"
  • In Local SEO settings, ensure Product schema is being output

In Yoast SEO:

  • Yoast > Search Appearance > Post Types > Products: configure the SEO title template
  • Suggested template: %%title%% - %%wc_price%% | %%sitename%%

Configure which WooCommerce URLs are indexed

Not all WooCommerce-generated URLs should be indexed. The default WordPress/WooCommerce setup can produce hundreds of low-value or duplicate URLs:

Should be indexed:

  • Product pages (/product/product-slug/)
  • Category pages (/product-category/category-name/)
  • Key shop page (/shop/)

Should be blocked or noindex:

  • Cart page (/cart/)
  • Checkout page (/checkout/)
  • My Account pages (/my-account/)
  • Order confirmation pages (/checkout/order-received/)
  • Filtered pages from layered navigation (?filter_color=blue&filter_size=large)

Add to robots.txt:

Disallow: /cart/
Disallow: /checkout/
Disallow: /my-account/
Disallow: /?add-to-cart=

Product page optimisation

Write unique, substantive product descriptions

The single biggest WooCommerce SEO problem: product pages with only the manufacturer's description (which every other retailer also has) and no unique content. Google sees hundreds of identical pages and assigns little value to any of them.

Unique product descriptions do not need to be long - 200-300 words of genuinely useful content (how it is used, who it suits, comparison with alternatives) is enough to differentiate.

For stores with hundreds of products, prioritise the top 20% of products by revenue first. Over-optimised product pages for bestsellers give the biggest return.

Use the correct SEO title structure

WooCommerce default product titles are often the product name alone. The SEO title should include the primary search phrase:

Instead of: "Blue Merino Wool Scarf" Use: "Blue Merino Wool Scarf | Lightweight, 100% Pure | YourBrand"

Or if targeting a specific search term: "Merino Wool Scarf - Blue | Lightweight & Warm | YourStore"

Add product attributes as structured data

Use WooCommerce product attributes (color, size, material, weight) consistently. These feed into schema markup and can appear as rich snippet elements in search results.

Make sure your SEO plugin is outputting Product schema with the offers property showing price and availability. Check with Google's Rich Results Test after optimisation.

Add aggregate ratings

Product reviews with star ratings can appear in search results as rich snippets - the yellow stars that significantly improve click-through rate. Enable product reviews in WooCommerce > Settings > Products > Reviews. Ensure your SEO plugin outputs AggregateRating schema.


Category page optimisation

Write category descriptions

WooCommerce category pages are often just a grid of products with no text content. A 200-400 word category description (added via WooCommerce > Products > Categories > edit category) gives Google substantive content to index and rank for category-level searches.

Category descriptions should:

  • Target the category's head keyword (e.g., "men's running shoes")
  • Include natural variations of the term
  • Describe what types of products are in the category
  • Be unique to each category

Avoid category-product page cannibalization

If your category page ("running shoes") and your best product page both target the same keyword, they compete with each other and neither ranks well.

Solutions:

  • Target the category page at broader head keywords ("running shoes", "mens running shoes")
  • Target individual product pages at long-tail, specific keywords ("Nike Air Zoom Pegasus 40 review", "best cushioned running shoes under £100")
  • Build internal links from product pages to category pages with keyword-rich anchor text

Pagination handling

Category archives with many products often paginate (/product-category/shoes/page/2/). Handle pagination correctly:

In Yoast or Rank Math, ensure paginated pages either use rel=canonical pointing to page 1 (not ideal for large categories) or use rel=prev/next links (better for large catalogs where page 2 has genuinely different products).

For small categories (under 20 products), increase "Products per page" to display all products on one URL - eliminates pagination entirely.


Handling faceted navigation (filtered URLs)

WooCommerce's layered navigation creates filtered URLs like: /product-category/shoes/?filter_color=blue&filter_size=10

These URLs create near-infinite thin-content pages that Google may index and flag as duplicate. Solutions:

Option 1 - Block with robots.txt

Add to robots.txt:

Disallow: /*?filter_*
Disallow: /*?orderby=*
Disallow: /*?min_price=*

Simple and effective. Google will not crawl these filter combinations.

Option 2 - Canonical to base category

Add a canonical tag pointing to the base category URL on all filtered pages. This tells Google the filtered version is a variant of the canonical category page. Most SEO plugins do this automatically for WooCommerce.

Option 3 - Noindex filter pages

Add <meta name="robots" content="noindex, follow"> on filter pages:

add_action( 'wp_head', function() {
    if ( is_shop() || is_product_category() ) {
        if ( ! empty( $_GET ) ) {
            echo '<meta name="robots" content="noindex, follow">';
        }
    }
});

This allows Google to follow links on filter pages (discovering products) but not index the filter pages themselves.


Technical WooCommerce SEO

Improve product page load speed

Product pages typically load: product images (often large), related product queries, review queries, upsell queries, and multiple plugin scripts. They are often the slowest pages on a WooCommerce site.

Specific optimisations:

  • Lazy load product images below the fold
  • Disable related products if they are not driving conversions (they add a slow query to every product page load)
  • Disable the WooCommerce update cart on quantity change AJAX if you have custom quantity inputs
  • Consider splitting the product schema output into a separate deferred request if it is very large

Disable related products:

remove_action( 'woocommerce_after_single_product_summary', 'woocommerce_output_related_products', 20 );

Internal linking from blog to products

If you run a blog alongside the store, link directly to relevant products from blog posts. A post about "how to choose running shoes" should link to your running shoes category and specific product pages. These editorial links pass authority to product pages that may otherwise have few internal links.

XML sitemap for products

Ensure your SEO plugin's sitemap includes:

  • All published products (not drafts, out-of-stock items you want to delist, or variations)
  • Category pages
  • The shop page

Exclude:

  • Cart, checkout, my-account
  • Tag archives (usually thin content)
  • Variation URLs

In Rank Math > Sitemap > Product Settings: verify products and product categories are enabled.


WooCommerce SEO checklist

  • [ ] Product URLs are clean (no query strings)
  • [ ] Cart/checkout/my-account blocked in robots.txt
  • [ ] Every product has a unique description (not manufacturer copy)
  • [ ] Every category has a 200+ word description
  • [ ] Product schema includes price, currency, and availability
  • [ ] AggregateRating schema present on products with reviews
  • [ ] Faceted navigation URLs blocked or canonicalised
  • [ ] Internal links from blog posts to product/category pages
  • [ ] Sitemap includes products and categories, excludes cart/checkout

Frequently Asked Questions

Why is WooCommerce SEO harder than regular WordPress SEO?
WooCommerce creates thousands of indexable URLs — product pages, category pages, tag pages, attribute pages, and infinite faceted filter combinations. Without proper configuration, Google wastes crawl budget on duplicate and thin content while missing your important pages.
How do I stop WooCommerce filter URLs from being indexed?
Use Rank Math or Yoast to noindex filtered URLs by adding a canonical tag pointing to the base category URL, or block filter URL patterns in robots.txt. For stores using plugins like FacetWP, configure the plugin to use AJAX-only filtering with no URL parameter changes.
How do I add product schema to WooCommerce?
WooCommerce outputs basic Product schema by default. For full rich snippet eligibility (price, availability, reviews), use Rank Math or Schema Pro to ensure price, currency, availability status, and aggregate rating are all present in the structured data.
Should WooCommerce category pages or product pages rank for keywords?
Category pages should rank for broad category terms (e.g., 'running shoes'). Product pages should rank for specific product queries (e.g., 'Nike Air Max 270 size 10'). Avoid targeting the same keywords on both — this creates cannibalization that hurts both pages.
How do I handle thin product pages in WooCommerce for SEO?
Add unique product descriptions of at least 150–200 words, include specification tables, add FAQ sections, and use customer reviews to add user-generated content. For large catalogues, prioritise your top-revenue products first and use noindex on very thin pages.

Was this article helpful?