WooCommerce variable products behave differently from variants on hosted platforms, because WooCommerce builds them on WordPress taxonomies. That gives you more control and creates a specific set of indexation problems that Shopify stores do not have.
The platform-neutral decision about whether variants deserve separate pages is covered under product variants SEO. This page covers the WooCommerce mechanics.
How WooCommerce represents variations
- A variable product is one product with attributes such as size or colour.
- Each attribute is a registered taxonomy, which by default generates its own public archive.
- Variations are selected on the product page and typically expressed as URL parameters.
- The parent product has one URL; the variations generally do not have their own.
That default is usually correct. The problems come from the taxonomy archives and the parameter URLs, both of which are generated whether or not you intended them.
Attribute archives, the recurring fault
Registering an attribute creates an archive listing everything with that value. A colour attribute produces an archive for every colour, and none of them has meaningful search demand.
- Decide per attribute whether the archive should exist publicly at all.
- Colour and size archives almost never justify indexation.
- Brand is the common exception, since brand plus product is genuinely searched.
- Where an attribute archive has real demand, treat it as a proper category with its own content rather than leaving it as a bare listing.
- Otherwise exclude it, or the archives accumulate as index bloat.
Variation parameter URLs
Selecting a variation typically appends parameters. These are crawlable and produce near-identical pages unless handled.
- Canonicalise parameter variants back to the parent product URL.
- Do not noindex them, which discards value rather than consolidating it. See canonical vs noindex.
- Check that layered navigation plugins are not generating additional crawlable combinations.
- Watch for parameters appearing in your sitemap, which some plugins add.
Structured data for variable products
A variable product offers a price range, and markup asserting a single price contradicts the page.
- Express the range rather than one variation’s price.
- Availability should reflect whether any variation is in stock.
- Confirm only one block is emitted. WooCommerce and an SEO plugin both producing product markup is a common conflict.
- See product schema SEO.
Performance
Variable products with many variations are expensive to render, because WooCommerce loads variation data up front. A product with dozens of combinations can noticeably slow the page, and product templates are commercially important.
- Watch products with large variation counts specifically.
- Confirm object caching is working, since variation queries repeat.
- Consider whether some variations should be separate simple products instead.
Frequently asked questions
Should each variation have its own URL?
Usually not. One product page with variation selection is correct for most catalogues. Separate URLs are justified only where a specific variation has genuine independent search demand.
Why are colour pages appearing in search results?
Attribute archives are public by default in WooCommerce. Unless you have disabled them, every colour and size has a crawlable archive. Decide per attribute and exclude the ones without demand.
Variable products or separate simple products?
Variable products where the choice is genuinely a variation of one item. Separate products where the items are meaningfully different and searched independently. Splitting for SEO reasons alone usually creates duplication.
Why is my product page slow?
Often variation count. WooCommerce loads variation data with the page, so products with many combinations are heavier. Check caching and consider whether the variation set is larger than it needs to be.
Consulting CTA
If attribute archives are filling your index or variable products are slowing your store, book an SEO consultation for a WooCommerce configuration review.