Faceted navigation on a WooCommerce shop
Why shop filters multiply into thousands of addresses, and which combinations are worth leaving open.
The arithmetic
Colour times size times price band times brand times sort order. Six filters over a few hundred products produce tens of thousands of addresses, and a crawler will work through them instead of through the products. On a large shop this is the single biggest crawl budget problem there is.
Counting yours
The audit reports how many filter URLs the crawl met, how many were indexable, and how many returned the same set of products as another address. For most shops this is the first time the number has been looked at.
Which combinations to leave open
- One filter, alone, when people search for it. "Red bowstrings" is a real search and deserves a crawlable page with its own title and description.
- Two filters together: almost never. Nobody searches for a colour and a size as a phrase, and the combination count is where the multiplication happens.
- Sort order and pagination parameters: never. They produce the same products in a different order, which is the definition of a duplicate.
Doing it
The faceted URL controller in SolSEO Pro is where the choice is made. You allow the combinations worth crawling and close the rest, and the plugin writes the canonical and robots tags for both cases. Allowed combinations get a real title and description rather than the category's, because a page worth crawling is a page worth labelling.
What not to do
Do not block the filters in robots.txt. A blocked address is one Google cannot fetch, so it never reads the noindex tag you also put on it, and the address can sit in the index indefinitely with no description. Blocking and noindex are different instructions and using both cancels the second.
Do not nofollow the filter links either. It does not stop the addresses being discovered, and it wastes the internal linking that helps the products underneath.
Counting yours without a tool
In Google, search site:yourshop.com.au inurl:filter_, and again for whatever parameter names your theme uses. Compare the number with your product count. If it is larger, you have this.
Then look at what is actually in the index: a page of results that are all the same products in a different order is the clearest version of the problem there is.
The same problem in other clothes
Sort orders, pagination past the first few pages, session parameters and tracking parameters all multiply addresses the same way, and they are easier to miss because they do not look like filters.
The audit collapses known parameter families to one address for identity, which is how we found that our own sign-up form was being counted as nine thin duplicate pages: one form, reached through eight different plan and interval links, each with its own address and the same title.
What good looks like afterwards
Your category pages and a handful of single-filter pages indexed, each with its own title and description. Everything else reachable, useful to a human, and canonicalled to the category it came from.