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.
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
Productschema 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
Related reading
Frequently Asked Questions
Why is WooCommerce SEO harder than regular WordPress SEO?
How do I stop WooCommerce filter URLs from being indexed?
How do I add product schema to WooCommerce?
Should WooCommerce category pages or product pages rank for keywords?
How do I handle thin product pages in WooCommerce for SEO?
// new_articles
Get notified when new guides drop
Practical WordPress guides from a working agency owner. No filler. Unsubscribe any time.
Was this article helpful?
Thanks for the feedback!