/ โ† Ecommerce Audit Fixes / WooCommerce SEO
In this guide
  1. What WooCommerce creates that search engines can see
  2. Permalinks: choose once, then leave them alone
  3. Categories, tags and attributes
  4. Variations, filters, sorting and add-to-cart URLs
  5. Product markup: WooCommerce, the SEO plugin and the review plugin
  6. Why WooCommerce shops are often slow, and what helps
  7. The fix, step by step
  8. Edge cases worth knowing
  9. Questions and answers

What WooCommerce creates that search engines can see

Every WooCommerce shop generates a set of page types. Knowing which exist on your site is the first step, because each needs its own decision.

Page typeDefault address patternUsual decision
Product/product/product-name/Index. Your most important pages.
Product category/product-category/tents/Index, with a written introduction.
Product tag/product-tag/lightweight/Usually noindex, unless a tag is a real, maintained landing page.
Attribute archive/pa_colour/green/ (only if archives are enabled)Leave disabled unless you will write and maintain these pages.
Shop page/shop/Index, as the top of the catalogue.
Sorting and filtering?orderby=price, ?filter_colour=greenKeep out of the index; canonical to the unfiltered page.
Add to basket links?add-to-cart=123Block from crawling.
Basket, checkout, account/basket/, /checkout/, /my-account/Noindex and leave out of sitemaps.

A crawl of the shop, grouped by these patterns, shows at a glance which types have multiplied. Shops that were set up quickly often have more tag and filter URLs than products.

Categories, tags and attributes

WooCommerce gives you three ways to group products, and shops often use all three for the same thing, creating near-identical pages.

A fictional outdoor shop with a category "Tents", a tag "tents" and an attribute archive "Type: Tent" has three pages competing for the same search. Pick the category, and redirect or noindex the others.

Variations, filters, sorting and add-to-cart URLs

Variable products

A variable product in WooCommerce has one page and one URL, with each size or colour selected on the page. Links can preselect a variation with parameters such as ?attribute_pa_colour=green. WordPress's canonical tag points to the clean product address, which keeps these out of the index. If a separate page for one colour would genuinely answer a search people make, that is a decision for a separate simple product or a landing page, not for variation parameters. The trade-offs are explained in Fixing product variants.

Filter and sort parameters

The classic layered navigation widgets and the newer product filter blocks add parameters such as filter_colour, query_type_colour, min_price and max_price, and the sorting menu adds orderby. Combined, they can create thousands of URLs for one category. Check that these pages carry a canonical tag pointing at the unfiltered category or a noindex, and consider disallowing the heaviest combinations in robots.txt. The full approach is in Fixing faceted navigation, and the crawl side in Fixing WooCommerce crawl issues.

Add to basket links

Product grids link to ?add-to-cart= addresses so that one click adds an item. WooCommerce marks these links nofollow, but crawlers still find and request them, which wastes crawling and can create empty sessions. A robots.txt rule stops it:

User-agent: *
Disallow: /*add-to-cart=*
Disallow: /*?orderby=*

Only add the orderby line if sorting URLs are not already handled by canonical tags, and never block the product, category or image addresses themselves.

Product markup: WooCommerce, the SEO plugin and the review plugin

WooCommerce outputs Product structured data on product pages by itself, including price, stock and, when reviews are enabled, the rating and recent reviews. Yoast SEO with its WooCommerce add-on and Rank Math can replace that with their own Product markup inside their site-wide graph. Separate review plugins and some themes add more.

The audit often finds two or three Product blocks on one page, sometimes with different prices or ratings. Decide on one owner:

  1. If you use an SEO plugin's WooCommerce integration, let it own the Product and confirm it removes or merges WooCommerce's own block.
  2. If not, leave WooCommerce's built-in markup and switch off Product output in the theme and any schema plugin.
  3. Check review plugins separately; many have an option to add their own rating markup that should be off if another source already includes reviews.

Then confirm that price, currency and stock in the markup match the page, including sale prices and VAT display. Field-level errors are covered in Fixing Product schema errors and review markup in Fixing review schema.

Why WooCommerce shops are often slow, and what helps

Unlike a hosted platform, a WooCommerce shop's speed depends on your hosting and your plugin choices. The common causes:

Product-template specifics such as the gallery and app scripts are covered in Fixing product page speed.

The fix, step by step

Step 1

Settle your product and category URLs

Open Settings, Permalinks and note the product permalink option, category base and tag base in use. If the shop is live and ranking, keep the current structure unless there is a strong reason to change. If you do change it, export every product and category URL first, set permanent redirects from each old address to its new one, update menus and internal links, and resubmit your sitemap in Search Console.

Step 2

Decide what categories and tags are for

Make categories your browsing structure and write an introduction in each main category's description field. Review product tags: keep only those you will maintain as proper landing pages, and in your SEO plugin set tag archives to noindex and exclude them from the sitemap. Where a tag duplicates a category, remove the tag from products and redirect its archive to the matching category so the two stop competing.

Step 3

Control attribute archives and filter URLs

Under Products, Attributes, edit each attribute and untick "Enable archives?" unless you will write those pages. Crawl a category with filters applied and check that URLs containing filter_, min_price or orderby carry a canonical to the clean category or a noindex. Add robots.txt rules for add-to-cart= links, and for sorting parameters if needed, without blocking products, categories or product images, which search engines must still be able to fetch.

Step 4

Keep variations on one product page

Check a variable product with variation parameters in the address, such as ?attribute_pa_colour=green, and confirm the canonical tag points to the clean product URL. Give each variation its own image, SKU, price and stock so the page updates properly when a shopper chooses it. Only create a separate product for a variant when people search for it by name and it differs enough to deserve its own description.

Step 5

Leave one source of Product markup

View the source of a product page and count the "@type": "Product" blocks. Decide whether WooCommerce itself or your SEO plugin's WooCommerce integration owns the Product markup, then switch off Product and rating output in the theme, schema plugins and review plugins. Test the page in the Rich Results Test and confirm price, currency, stock and rating match what the page shows, including sale prices and VAT.

Step 6

Fix the product and shop page templates

Check that the product name is the page's only <h1>, that the SEO title pattern in your plugin puts the product name first rather than the shop name, and that the short description beside the price is your own text. Edit the Shop page in your SEO plugin to give it a proper title and description. Turn on reviews, and consider limiting them to verified owners under WooCommerce, Settings, Products.

Step 7

Speed up hosting, images and scripts

Check server response time for an uncached product page in PageSpeed Insights, and ask your host about PHP version, object caching and page caching that respects WooCommerce cookies. Find out whether cart fragments loads on every page and restrict it if your theme does not need it everywhere. Limit heavy plugin assets to the pages that use them, and match product image sizes to your theme, regenerating thumbnails afterwards.

Step 8

Check sitemaps and Search Console

Open your sitemap index, either WordPress's /wp-sitemap.xml or your SEO plugin's, and confirm it lists products and categories but not tags you set to noindex, attribute archives or basket and checkout pages. Submit it in Search Console. Over the following weeks, use the Pages report to watch filter, tag and add-to-cart URLs leave the index, and rerun the Ecommerce Audit on your top products.

Edge cases worth knowing

Questions and answers

1. Which WooCommerce product permalink setting is best for SEO?

For most shops the default /product/product-name/ structure is fine and the safest choice. It is short, stable and does not change when you move a product between categories. Including the category in the product URL looks neat but ties the address to a category decision, and products in several categories can only show one. The more important rule is to avoid changing the structure on an established shop without mapping and redirecting every old address.

2. Should WooCommerce product tag pages be indexed?

In most shops, no. Tag archives usually have no introduction, contain only a handful of products and overlap with categories, so they add thin pages to the index without helping shoppers. Set them to noindex in your SEO plugin and keep them out of the sitemap. The exception is a tag you deliberately maintain as a landing page, such as a curated gift range, with its own written introduction and regular updates, which can deserve to be indexed.

3. Do I need Yoast WooCommerce SEO or a similar premium add-on?

Not necessarily. WooCommerce already outputs Product markup, and the free versions of the main SEO plugins handle titles, sitemaps and noindex settings. Premium WooCommerce add-ons mainly integrate Product markup into the plugin graph, add fields such as brand and GTIN, and improve breadcrumbs. They can be worth it for larger catalogues, but whichever you use, check the result has one Product block per page and that the data matches the page.

4. Why does my WooCommerce product have two Product schema blocks?

Usually because WooCommerce outputs its own Product markup while an SEO plugin, a theme or a review plugin adds another. Search engines then see two descriptions of the same product, sometimes with different prices or ratings. Pick one source, normally either WooCommerce itself or your SEO plugin integration, and switch off Product and rating output everywhere else. Then test the page again in the Rich Results Test to confirm only one complete block remains.

5. Should each WooCommerce variation have its own URL?

Generally not. A variable product works best as one page where shoppers pick size or colour, with the canonical pointing to the main product URL, which is how WooCommerce and WordPress behave by default. A separate page only makes sense when people search for that exact variant by name and it differs meaningfully, for example a distinct model rather than a size. In that case make it a separate product with its own description rather than relying on variation parameters.

6. Is cart fragments still a problem in WooCommerce?

Less than it was. Since WooCommerce 7.8, the cart fragments script is no longer loaded on every page by default. However, many themes and mini-basket widgets load it again because they need live basket counts, sometimes across the whole site including blog posts. Check your pages with browser developer tools for the wc-ajax get_refreshed_fragments request. If it appears where no basket is shown, restrict it using your theme settings or a performance plugin that lets you control it.

7. How do I stop filtered category URLs being indexed?

Make sure filtered and sorted category pages carry a canonical tag pointing to the clean category, or a noindex, which most SEO plugins handle for common WooCommerce parameters. Check a few with view source to confirm. If crawlers still spend a lot of time on them, add robots.txt rules for the worst parameter combinations, but only after the canonical or noindex is in place for pages already indexed, because blocked pages cannot have their noindex read.

Audit your WooCommerce shop

The Ecommerce Audit checks your most important store pages for product page completeness, category depth, Product and review schema, faceted navigation, product images, internal links and product page speed.

Open Ecommerce Audit Fixes โ†’
๐Ÿ’ฌ Got a problem?
Related Guides: All Ecommerce Audit Fixes  ·  WooCommerce Crawl Issues  ·  Fixing Faceted Navigation  ·  Fixing Product Variants  ·  Learning Hub

About aiwebpageseo

aiwebpageseo.com is a data-driven SEO and AEO (Answer Engine Optimisation) platform providing a free suite of technical SEO tools. Rather than relying on AI-theorised assumptions, the platform analyses live URL performance, delivering objective diagnostics, page speed metrics, CLS debugging, and site crawl data alongside actionable technical tutorials.