QuQi

Faceted Navigation Crawl Control

Filter combinations multiply: five facets with six values each produce more URLs than you have products. The obvious fix - canonical tags pointing back to the bare category - fails because canonicals are a hint, not a directive, and Google still has to crawl every URL to read them. The budget is burnt before the signal is even seen. You need to stop the URLs being discovered, not just deduplicate them after the fact.

Get the skill file Let the agents run it
CATEGORY
Ecommerce SEO
FORMAT
faceted-navigation-crawl-control.md
STEPS
6
PRICE
Free - no account
WHEN TO REACH FOR THIS

Use when a category with a few hundred products has generated tens of thousands of crawlable filter URLs and crawl stats show Googlebot spending its budget on them.

The skill file

faceted-navigation-crawl-control.md
---
name: faceted-navigation-crawl-control
description: Use when a category with a few hundred products has generated tens of thousands of crawlable filter URLs and crawl stats show Googlebot spending its budget on them.
---

# Faceted Navigation Crawl Control

Filter combinations multiply: five facets with six values each produce more URLs than you have products. The obvious fix - canonical tags pointing back to the bare category - fails because canonicals are a hint, not a directive, and Google still has to crawl every URL to read them. The budget is burnt before the signal is even seen. You need to stop the URLs being discovered, not just deduplicate them after the fact.

## What you need first

- a full list of facet parameters and how they combine in URLs
- server log data or Search Console crawl stats showing which parameter URLs get crawled
- search demand data per facet value (colour, size, brand, price)

## Method

1. Export 30 days of server logs and count Googlebot hits by URL pattern. Anything where parameter URLs exceed 30 percent of total crawl is an active problem, not a theoretical one.
2. Split facets into three tiers: indexable (facet values with real search demand, usually brand, material, and a handful of attribute terms), crawlable but noindex, and never-linked.
3. For the never-linked tier, render the filter controls as POST forms or JavaScript-driven state that produces no anchor tag - Google cannot follow what is not an href. This is the only reliable containment.
4. Give indexable facets clean static paths, not query strings: /boots/waterproof/ rather than /boots?feature=waterproof. Static paths get treated as real pages and support their own copy and internal links.
5. Block the remaining parameter patterns in robots.txt only once nothing indexed depends on them, and confirm with a site: check first - blocking an indexed URL freezes it in the index with no way to remove it.
6. Cap multi-select depth: allow one facet selected, noindex two, and refuse to generate a link at three. Recheck logs at 30 days to confirm parameter crawl share has fallen.

## What this produces

A tiered facet policy document plus the template changes that stop non-indexable combinations being linked at all.

## Where this goes wrong

- relying on rel=canonical alone, which still costs a crawl per URL and gets ignored when the page content differs
- blocking parameters in robots.txt while those URLs are still indexed, which strips the canonical signal and strands them
- indexing price and sort facets, which change constantly and produce thin near-duplicate pages with zero search demand

---

From the QuQi skill library - https://www.quqi.io/skills/faceted-navigation-crawl-control
Free to download · no account, no email

What you need first

  • a full list of facet parameters and how they combine in URLs
  • server log data or Search Console crawl stats showing which parameter URLs get crawled
  • search demand data per facet value (colour, size, brand, price)

Method

  1. 01 Export 30 days of server logs and count Googlebot hits by URL pattern. Anything where parameter URLs exceed 30 percent of total crawl is an active problem, not a theoretical one.
  2. 02 Split facets into three tiers: indexable (facet values with real search demand, usually brand, material, and a handful of attribute terms), crawlable but noindex, and never-linked.
  3. 03 For the never-linked tier, render the filter controls as POST forms or JavaScript-driven state that produces no anchor tag - Google cannot follow what is not an href. This is the only reliable containment.
  4. 04 Give indexable facets clean static paths, not query strings: /boots/waterproof/ rather than /boots?feature=waterproof. Static paths get treated as real pages and support their own copy and internal links.
  5. 05 Block the remaining parameter patterns in robots.txt only once nothing indexed depends on them, and confirm with a site: check first - blocking an indexed URL freezes it in the index with no way to remove it.
  6. 06 Cap multi-select depth: allow one facet selected, noindex two, and refuse to generate a link at three. Recheck logs at 30 days to confirm parameter crawl share has fallen.

What this produces

A tiered facet policy document plus the template changes that stop non-indexable combinations being linked at all.

Where this goes wrong

  • relying on rel=canonical alone, which still costs a crawl per URL and gets ignored when the page content differs
  • blocking parameters in robots.txt while those URLs are still indexed, which strips the canonical signal and strands them
  • indexing price and sort facets, which change constantly and produce thin near-duplicate pages with zero search demand

More in Ecommerce SEO