Ecommerce crawl-budget work should begin with the component creating public addresses, not the report counting crawler requests.
A filter, sort control, campaign system or product-state rule can manufacture thousands of routes before anybody decides whether those routes deserve to exist, be linked, be crawled or appear in search. A canonical tag or cleaned crawl export treats the inventory after the platform has already produced it.
TL;DR
- Prove a crawl-budget constraint exists before using the phrase; most shops have a crawlability, duplication or discovery problem instead.
- One filter is being asked five different questions at once. Separate them before choosing any control.
- Group URL families by the job they do, not the punctuation they share, and give each a decision record.
- Repair the generator. Deleting rows from an export the platform will recreate tomorrow is not control.
This is why “Google is wasting crawl budget” is often an overconfident diagnosis. The observable problem may be repeated requests to low-value parameter combinations while important products appear slow to update. The controllable problem is that the website has no rule governing which interface states may become persistent, discoverable URLs. My first question is not “How do we make Google crawl more?” It is:
Which component is allowed to mint these addresses, and who owns that rule?
Prove there is a crawl-budget constraint
Crawl budget is useful language only when scale, change frequency, serving capacity, discovery and observed request demand point towards the same constraint.
Google describes crawl budget as the URLs its systems can and want to crawl. Its crawl-budget guidance is aimed mainly at very large or rapidly changing sites and sites with a large share of URLs reported as discovered but not indexed. Google presents its volume figures as rough guidance, not universal thresholds.
That boundary matters. A catalogue can contain many URLs without exhausting crawl capacity. A new product can remain unindexed because of weak discovery, duplication, rendering, canonicalisation, page value or processing after crawling. Discovered – currently not indexed is an investigation lead, not a confession from Google. Before changing controls, establish:
- catalogue size and meaningful change rate;
- whether important new or changed pages are actually slow to be discovered or refreshed;
- verified request demand across unwanted URL families;
- host availability, latency and capacity during the observed period;
- sitemap, navigation and product-discovery paths;
- duplication, rendering and canonical conditions;
- alternative page-value or indexability explanations.
If the evidence does not align, call the problem what it is: crawlability, indexability, duplication, serving reliability, discovery or page value. I will not manufacture a crawl-budget emergency for a modest shop because a dashboard looks busy.
One useful filter can create an address factory
Filters help customers narrow a catalogue. Size, colour, material, stock, brand and price can turn an impossible product shelf into a useful buying experience. The problem begins when every interaction is allowed to create, expose and preserve another public route.
/walking-boots?size=8&colour=black&availability=in-stock&sort=price-ascChange the parameter order and another address may appear. Remove a filter while a campaign parameter remains and another state survives. Add pagination, repeated values, internal-search terms or session data and the inventory multiplies again.
Google’s faceted-navigation guidance warns that parameter-based filters can create effectively infinite URL spaces which consume crawling resources before their value is understood. That does not make filters the enemy. The error is allowing one legitimate user-experience decision to answer five different questions:
- Should this state exist in the interface?
A buyer-experience decision about whether the combination is useful at all.
- Should it receive a persistent address?
A URL-governance decision, separate from whether the interaction exists.
- Should the site expose that address through crawlable links?
A discovery decision about navigation, templates and sitemaps.
- Should crawlers fetch it?
An access decision, governed by robots rules.
- Should it be eligible for indexing as a search result?
A search-asset decision that needs evidence and an owner.
“Customers need this filter” does not mean “search engines need every permutation.” Web design creates the interaction. URL governance decides which states become part of the public information architecture.
Group by generated job, not shared punctuation
URL audits commonly group everything containing the same parameter into one family. That is tidy and sometimes unsafe. One maintained colour collection may have a durable organic search purpose. A colour-plus-price-sort state may exist only for browsing. A repeated-value combination may be invalid. A tracking parameter may be unrelated to the underlying product state. Shared syntax does not give those routes the same job. Split a family when it contains materially different states:
| State | Possible human job | Possible search job |
|---|---|---|
| Stable product attribute collection | Find products matching a recurring attribute need | Candidate search asset requiring evidence and ownership |
| Sort order | Reorder the same available products | Usually buyer-only presentation state |
| Combined temporary filters | Narrow a session-specific choice | Often no durable search job |
| Tracking parameter | Attribute campaign traffic | No independent content identity |
| Empty or invalid combination | None or error recovery | No search value established |
| Pagination or sequence | Reach deeper catalogue items | Discovery/sequence job requiring specialist design |
This creates four boundaries: crawl frequency does not grant search value; revenue does not excuse an invalid state; buyer utility does not automatically grant index eligibility; and shared parameter names do not justify one family-wide treatment.
One broad rule can make the report quieter while suppressing a collection the ecommerce team genuinely needs. Split the jobs before selecting controls.
Give every family a decision record
Use a Crawl Value Ledger with one versioned row per closed decision family.
| Record | What it preserves |
|---|---|
| Family identity | Stable ID and representative URL patterns |
| Generator | Component, trigger and multiplication path |
| Human job | What a buyer, merchandiser or operator accomplishes |
| Proposed search job | Specific discovery purpose, “none” or “unknown” |
| Evidence | Inventory, uniqueness, stability, request and discovery observations |
| Current state | Response, crawl access, index eligibility and representative signals |
| Owners | Platform, merchandising and search decision-makers |
| Specialist route | Decision required from canonical, robots, pagination, lifecycle or other owner |
| Generator change | Component or discovery source that must change |
| Verification | Baseline, release receipt and reopening trigger |
Unknown is a valid state. It is not permission to ship. The ledger should return the first honest state:
This is deliberately not a score. Several positive fields cannot compensate for an unbounded generator.
Do not prescribe the control before identifying the object
Technical SEO reaches for familiar tools: robots.txt, canonical tags, noindex, redirects and sitemaps. Each performs a different job. A robots rule governs fetching. A noindex instruction must be fetched before a crawler can read it. A canonical is a representative signal rather than a command that stops alternate URLs being generated or requested. A redirect changes the route. Sitemap inclusion can support discovery without proving that a page should be indexed.
Google’s canonicalisation guidance explains that canonical signals help consolidate duplicate or similar URLs but do not act as production shut-offs. Its crawl-budget guidance also warns that capacity freed from one family is not automatically reassigned elsewhere unless capacity was genuinely constrained.
I will not accept “we added canonicals” as evidence that the URL factory stopped. The generator, links, sitemaps, parameter patterns and observed requests still need to match the approved family decision. Likewise, do not block a family before deciding whether it contains a useful search collection. Control selection belongs after family classification.
Product discovery needs deliberate durable routes
Google recommends persistent ecommerce URLs and consistency across preferred links, sitemaps and canonical annotations in its ecommerce URL guidance. Google also explains that crawlable category-to-product navigation supports discovery and that Googlebot generally does not submit internal-search forms (ecommerce site structure).
This creates a useful design principle: valuable products should not depend on a crawler reproducing a shopper’s filter session. The ecommerce information architecture needs stable routes through categories, collections, product links and appropriate sitemaps. Filter states may enhance the customer journey without becoming the only path through which products can be found.
Product lifecycle complicates this. Out-of-stock, discontinued, replaced and seasonal items need business decisions, not a universal status-code rule. A temporarily unavailable product may retain demand and useful information. A permanently retired product may have an equivalent successor or none. The crawl ledger routes these cases to lifecycle ownership rather than letting a URL-count report decide.
SEO cannot design the catalogue alone. Merchandising knows the product relationships. Development knows the generator. Brand and content owners know what a maintained collection can credibly promise. The ledger makes those dependencies visible.
Is your catalogue printing addresses nobody approved? We trace each URL family back to the component that mints it and give every family a decision record before any control is chosen.
Logs matter only after routes have names
Crawl reports and server logs become useful when requests are classified against the same families the platform can change.
Search Console’s Crawl Stats report includes request totals, response types, host status, file types, crawl purpose and Googlebot type. Google describes example URLs as representative rather than comprehensive. Absence from an example list does not prove a route was never requested.
Verified server or CDN logs can provide more granular request evidence within their retention and infrastructure scope. A user-agent string alone is not requester verification. Edge logs, origin logs and crawler runs may observe different network layers and times. For each family, ask whether it was discovered or requested during the observed period; which component or release introduced it; whether important product and category routes remained discoverable; whether latency, errors or capacity affected serving; whether the unwanted pattern recurred after repair; and what sampling and log-retention limits remain.
Do not pour everything into a flat “crawl waste” total. Not present in this sample does not mean never crawled. Falling request volume does not prove reallocation, indexing, rankings or sales. The evidence should support a family decision, not write a success story for the agency.
Repair the generator instead of deleting examples
The durable repair usually belongs upstream at the component or process manufacturing and exposing the family. Possible generators include filter forms and navigation templates; sort and variant controls; campaign-link builders; internal-search routes; pagination components; sitemap jobs; product-status rules; and feeds and integration layers.
The specialist owner selects the appropriate treatment. The platform owner changes the generator or exposure source. The ledger preserves representative URLs, baseline evidence, release receipt and verification result.
I would rather stop one component producing the next wave than celebrate deleting 50,000 rows from an export the platform will recreate tomorrow.
That is also the commercial trade-off. Some buyer controls are worth keeping even when they create technical complexity. The aim is not to flatten the shopping experience for a cleaner crawl chart. It is to separate valuable interaction from unnecessary public inventory.
Make the release prove control
A family is not controlled because example URLs disappeared from one crawl. Before closing the release, confirm:
If the filter feature can still generate new unowned combinations, the work is not complete. If the report is quieter because useful collections vanished, the work is not successful.
Start with one proliferating pattern. Reproduce it through the interface. Identify the component that creates it. Split the different jobs inside the family. Then decide which public addresses the ecommerce business is willing to own.
The cursor does not belong on “request indexing” while the address bar is still printing inventory nobody approved.
Good to know
FAQs
Only when scale, change frequency, serving capacity, discovery and observed request demand all point to the same constraint. Google aims its crawl-budget guidance at very large or rapidly changing sites. Otherwise name the real problem: crawlability, duplication, discovery, serving or page value.
No. A canonical is a representative signal that helps consolidate similar URLs; it does not stop the platform generating or exposing them, and crawlers may still request them. The generator, links, sitemaps and observed requests must all match the approved family decision.
Not before classifying the family. One maintained attribute collection may be a genuine search asset while a sort-plus-filter state is browsing only. Split the jobs first, then let the specialist owner choose the control for each family.
A versioned record per URL family that captures the generator, human job, proposed search job, evidence, current state, owners, specialist route, required generator change and verification. It returns a state such as mixed family, generator repair required or family controlled, never a score.
Next step
Still treating the export instead of the generator?
We find the component minting your URLs, split each family by job and build the Crawl Value Ledger so the release can prove control.
