The query match
Product pages target narrow queries, often brand plus model. Category pages target the broader, high intent queries that sit one step earlier: a product type plus an attribute such as color, size, material, brand, use or audience. Those queries are where shoppers compare options, and Google often ranks category pages for them because a listing of several matching products satisfies the intent better than a single product.
The faceted navigation problem
Filters exist for shoppers. A category with ten facets, each with several values, produces combinations that multiply quickly, and sort orders, view modes and price sliders add more variants on top. Left unmanaged, this creates:
- Thousands of near duplicate URLs showing overlapping products
- Crawl effort spread across low value combinations instead of new products and key categories
- Internal link equity diluted across URLs that never rank
- Index bloat that makes it harder to see which pages matter in Search Console reports
The goal is not to block all facets. Some facet combinations are exactly what shoppers search for and deserve to be strong landing pages. The goal is to choose deliberately.
Two tests, demand and depth
A facet combination earns an indexable URL when it passes both tests:
- Search demand. People search for this combination as a phrase. "Black leather boots" yes, "black leather boots size 8.5 under 120" almost never. Check your keyword research, Search Console query data and internal site search logs.
- Inventory depth. The page shows enough products to be a useful listing, and the assortment is stable. A page with one or two products, or one that empties every few weeks, makes a weak landing page and a poor result for searchers.
A practical threshold many stores use is a minimum product count (for example 6 to 10 items) plus consistent demand evidence. Pick a number that suits your catalog, then apply it consistently.
Facet types and their usual treatment
- Usually indexable. Product type subcategories, brand, primary material, gender or audience, core use case ("trail", "waterproof").
- Sometimes indexable. Color, style, room, occasion, when demand and depth exist for the specific value.
- Rarely or never indexable. Size, price ranges, ratings, sort order, view mode, in stock toggles, and any combination of three or more facets.
Decision table for facets
| Situation | Example | Indexable? | Recommended treatment |
|---|---|---|---|
| One facet, real demand, deep inventory | /boots/waterproof | Yes | Static, clean URL, self canonical, linked from navigation, unique title and copy |
| Two facets, real demand, enough products | /boots/womens/waterproof | Yes | Same as above, linked from parent category and breadcrumbs |
| One facet, no search demand | /boots?lining=fleece | No | Canonical to parent category or noindex, no links from navigation |
| Size, price or rating filter | /boots?size=9&price=50-100 | No | Generated client side or with parameters, canonical to parent, not linked as crawlable anchors |
| Sort order or view mode | /boots?sort=price_asc | No | Canonical to the unsorted URL, or apply sorting without changing the URL |
| Three or more facets combined | /boots?color=black&size=9&brand=x | No | Prevent crawling at scale with robots.txt rules on the parameter pattern |
| Combination with demand but thin inventory | /boots/vegan-leather (3 products) | Not yet | Keep out of the index until assortment grows, then promote |
What each control does
These three tools solve different problems and they are often confused.
| Control | What it tells Google | Saves crawl budget? | Consolidates signals? | Best use |
|---|---|---|---|---|
| rel=canonical | This URL is a duplicate or variant, treat that URL as the main one | No, the page is still crawled | Yes, usually | Sort orders, tracking parameters, minor filter variants close to the parent |
| meta robots noindex | Do not show this page in search results | No, the page must be crawled to see the tag | No | Pages that should be reachable for users but never appear in results |
| robots.txt disallow | Do not crawl URLs matching this pattern | Yes | No | Large parameter spaces, infinite combinations, internal search results |
Canonical is a hint, not a directive. Google may ignore it if the canonical target looks very different from the page, for example when a filtered page shows a mostly different set of products than the category it points to. That is one reason canonicals work best for close variants, not for every filter.
Why noindex plus disallow conflict
This is the most common mistake in faceted navigation setups. If a URL is disallowed in robots.txt, Google does not crawl it, so it never sees the noindex tag on the page. The URL can still end up indexed, typically without a description, if other pages link to it. Choose one per URL pattern:
- Use noindex when you want the page dropped from the index. Leave it crawlable until it drops out.
- Use disallow when the priority is stopping crawl waste across a huge URL space, accepting that a few URLs may remain known to Google.
A common sequence for a site already bloated with indexed filter URLs is to apply noindex first, wait until those URLs leave the index, then add the disallow rule.
Parameter handling in 2026
Google retired the URL Parameters tool in Search Console in 2022, so there is no longer a setting there to tell Google how to treat parameters. Control now lives entirely on your site: clean URL design, canonicals, robots meta tags, robots.txt patterns and which links you make crawlable. Keep parameter order consistent (for example always alphabetical) so the same combination never produces two URLs.
When crawl budget actually matters
Google has said crawl budget is mainly a concern for large sites and sites that generate many URLs, which describes most stores with faceted navigation. Signs of a problem include new products taking weeks to get indexed, a large share of "Crawled, currently not indexed" or "Discovered, currently not indexed" URLs in the Search Console page indexing report, and server logs showing Googlebot spending most of its requests on parameter URLs.
Links decide what gets crawled
Googlebot discovers URLs mostly through links. Filters that render as standard anchor links create crawl paths into every combination. Filters applied with JavaScript without generating crawlable anchors, or forms using POST, do not. A practical pattern:
- Indexable facet pages get clean static URLs and real anchor links from the category page, the mega menu where relevant, and related category blocks.
- Non indexable filters update the listing without exposing crawlable links to every combination.
Mega menus and breadcrumbs
- Mega menus pass strong internal signals because they appear on every page. Include top categories and the highest value facet pages, not every subcategory. A menu with hundreds of links dilutes the signal and slows the page.
- Breadcrumbs create a clean hierarchy (Home, Boots, Women's Boots, Waterproof) and link each level upward. Mark them up with BreadcrumbList structured data.
- Contextual links inside category copy and from buying guides point to specific subcategories with descriptive anchor text.
- Related categories at the bottom of a listing link sideways to siblings, which helps both shoppers and crawlers.
Where to place copy
Category copy helps search engines understand a listing and helps shoppers choose, but a long block above the products pushes the grid down and hurts conversion. A pattern that works for most stores:
- Above the grid. One or two sentences that confirm what the page is and who it suits. Keep it short so products appear without scrolling on mobile.
- Below the grid. A more detailed buying guide section: how to choose, key attributes explained, sizing or fit notes, care information.
- FAQ block. Real questions from customer service and site search, answered briefly.
Write copy that helps people decide. Paragraphs stuffed with keyword variants add nothing and read badly.
On-page checklist for every indexable category
- [ ] Unique title tag with the main query near the start
- [ ] One H1 that matches the category or facet name
- [ ] Short intro above the grid and a buying guide below it
- [ ] Self referencing canonical on the clean URL
- [ ] Product names in the grid as crawlable links to product pages
- [ ] Breadcrumb navigation with BreadcrumbList markup
- [ ] Links to two to five related subcategories
- [ ] Images with descriptive alt text and modern formats sized for the grid
- [ ] Fast load of the first row of products, with no layout shift as filters load
What changed with rel next and prev
Google stated in 2019 that it no longer uses rel="next" and rel="prev" as an indexing signal. You can leave the tags in place (other search engines and browsers may still read them), but they do not group a paginated series for Google. Each paginated page is treated as its own URL.
How to paginate today
- Use crawlable links. Page 2, page 3 and onward need real anchor links with an href, so Googlebot can reach products deep in the listing.
- Self canonical on each page. Page 2 should canonicalize to itself, not to page 1. Pointing every page to page 1 hides deeper products from discovery.
- Unique, simple URLs. For example ?page=2. Keep them consistent.
- Infinite scroll and load more. Fine for users if each loaded set also has a paginated URL that a crawler can reach through a link. Google's guidance on infinite scroll recommends exactly this pairing.
- Keep copy on page 1. Show the intro and buying guide on the first page only, so paginated pages do not duplicate it.
Reducing depth helps too. If important products only appear on page 8, better subcategories or facet pages surface them earlier.
Temporarily out of stock
Keep the product page live with a 200 status, show the stock status clearly, offer back in stock alerts and link to close alternatives. Update the availability value in your Product structured data so Google can show the correct status. Removing and restoring pages every time stock changes throws away rankings.
Permanently discontinued
| Situation | Recommended action |
|---|---|
| Direct replacement exists | 301 redirect to the replacement product |
| No replacement, close category exists | 301 to the most relevant category, or keep the page with alternatives if it still gets traffic and links |
| Page has strong links or ongoing traffic | Keep it live with a discontinued notice and links to alternatives |
| No traffic, no links, no replacement | Return 404 or 410 |
Avoid redirecting large numbers of discontinued products to the homepage. Google often treats irrelevant redirects as soft 404s.
Empty category and facet pages
A category that drops to zero products for a season is a soft 404 risk. Keep the page with a short message and links to related categories, or temporarily noindex it if the gap is long. For facet pages, apply the inventory threshold automatically, so a facet page drops out of the index when it falls below the minimum product count.
What to mark up
Google's rich results for products are driven by Product structured data on product pages, with offers, price, availability, and review data where reviews are genuine. On category pages, keep markup modest:
- BreadcrumbList on every category and facet page
- ItemList is optional for listing pages and does not produce product rich results in standard search on its own
- Do not add Product markup for many products on a category page in a way that suggests the page itself is a single product
- Keep marked up prices and availability identical to what the page shows
Merchant listings in Google Shopping surfaces rely on product page data and your product feed, so consistency between feed, markup and visible content matters more than adding extra schema types to categories.
Category and faceted navigation programs are part of our ecommerce seo agency work, and the Scale plan at 7 500 USD per month includes a dedicated e-commerce category and faceted navigation program plus one CRO landing page test per month. Stores on Shopify have platform specific constraints around collection URLs and filters, which we cover on the Shopify SEO page. Plans are a monthly retainer bought online, no sales calls, no setup fee, month to month, and you cancel in the panel. Annual prepay saves 20 percent.
To see how your own category pages and filters are handled today, start with a free SEO audit, which crawls up to 15 pages and shows technical issues and keyword gaps. For the crawl and indexation checks that sit underneath this playbook, see our technical SEO checklist.