// CASE-STUDY

Case Study: Multi-Region Ecommerce Crawl Budget Recovery

**60% of Googlebot fetches were being burned on faceted URLs across 4 regional storefronts.** After robots, canonicals, and sitemap partitioning, crawl waste dropped fast and indexation stabilized within 6 weeks.

The numbers

Lighthouse CWV (P75)
BEFORE 62/100
AFTER 97/100
+35 pts
LCP (mobile)
BEFORE 4.1s
AFTER 1.8s
−56%
Hreflang errors
BEFORE 1,420
AFTER 0
−100%
Google Search Console Indexing report listing reasons pages are not indexed

The crawl waste pattern

On the first pass, the site was already paying a crawl tax: 4 storefronts, 35 translated markets, and a faceted catalog that produced far more URLs than products. The client had healthy demand, but Google was spending a huge share of fetches on filter states instead of category and product pages.

The symptoms were visible in Settings › Crawl stats and Indexing › Pages: crawl activity spiked on product-listing parameters, while index coverage ballooned into low-value variants. That mattered because the site had real money on the line: $240,809 lifetime revenue, $255 AOV, and 943 orders to date. If crawl gets distorted, discovery and revenue discovery get distorted too.

This is the same shape I see in most ecommerce SEO audits: the business wants more indexed category demand pages, but the crawler is trapped by internal permutations. In this case study, the fix was a plain crawl budget recovery stack: robots exclusions for dead-end facets, canonicals for sort/filter variants, and separate sitemap files for each regional storefront.

What GSC showed

I started in Performance › Search results, then cross-checked Indexing › Pages, Indexing › Sitemaps, and Settings › Crawl stats. The pattern was obvious: most clicks were going to a small set of evergreen categories, while impressions were spread across thousands of near-duplicate URLs.

For the reference benchmark from the enzymes.bio audit, the scale of the indexing problem is easy to compare: 7,950 organic clicks/mo, 557,000 impressions/mo, 1.4% sitewide CTR, avg position 12.4 overall, and 16,100 indexed pages against 591,000 NOT indexed. That audit also had 0 external backlinks, which made crawl efficiency the main limiter instead of authority. It is a useful benchmark because it shows the same pattern: search demand exists, but technical waste blocks the upside.

In this client’s Search Console, the multi-region setup made things worse. Google was finding the same category in different locales, with near-identical titles and parameterized URLs. That created index bloat, diluted signals, and kept the best pages from getting clean crawl priority.

Diagram of crawl waste pattern showing before-and-after crawl budget recovery metrics

The technical fix

Facet classification

I mapped every parameter into one of three buckets: indexable, crawlable-but-canonicalized, or blocked. Sorts and ephemeral filters went in the blocked bucket. High-intent facet combinations stayed crawlable only if they had search demand and stable templates.

Canonical cleanup

Canonical tags were rewritten so filter states pointed back to their parent category, not to self-referential variants. That reduced duplicate signals and stopped Google from treating every permutation as a separate candidate.

Regional sitemap split

The single sitemap was replaced with one sitemap index per storefront. Each file only listed canonical URLs for its market. That made Indexing › Sitemaps easier to interpret and gave Google cleaner discovery paths.

Robots targeting

I used robots.txt to block low-value parameter patterns that had no business case for indexing. The goal was not to hide the site; it was to stop wasting fetches on infinite combinations that could never rank.

Internal-link pruning

Navigation links were trimmed so the site did not keep surfacing useless states in category modules. That cut internal amplification of faceted URLs and shifted more crawl attention to category and product hubs.

Before and after

FieldBeforeAfter

Facet URL share of crawl

About 60%

Under 18%

Regional sitemap structure

One mixed file

4 market-specific sitemap sets

Canonical signal

Mixed, self-referential on filters

Consistent parent-category canonicals

Indexed page quality

Many duplicate variants

Cleaner category and PDP focus

Search Console reporting

Hard to isolate market issues

Clear per-storefront segmentation

Crawl efficiency

Spending on noise

Spending on product and category URLs

Facet rules we used

<link rel="canonical" href="https://www.example.com/en-us/category/boots/" />
<meta name="robots" content="index,follow" />

<!-- Facet states with no search demand -->
<!-- block in robots.txt instead of indexing -->

<!-- Sort and pagination variants should not replace the parent category -->
<!-- /category/boots/?sort=price -->
<!-- /category/boots/?color=black&size=10 -->

Implementation order

  1. 01

    Audit the URL space

    I exported Indexing › Pages and grouped URLs by path pattern, parameter, locale, and template. That showed which facet families were multiplying and which category pages were being drowned out.

  2. 02

    Rank the facets

    Each parameter got a business rule. If the filter had no search demand, no merchandising value, and no stable landing-page intent, it was excluded from indexing. That prevented accidental index bloat.

  3. 03

    Fix canonicals and sitemaps

    I updated canonicals first, then split sitemaps by region. This order matters because sitemaps should reinforce the canonical model, not argue with it. Google reads that mismatch as a weak signal.

  4. 04

    Reduce internal amplification

    Next I removed links to junk states from breadcrumbs, filters, and related-products modules. That stopped the site from re-creating the same crawl problem through navigation.

  5. 05

    Validate in GSC

    Finally, I watched Settings › Crawl stats, Indexing › Sitemaps, and Performance › Search results for 6 weeks. The key was not just fewer crawls; it was better crawl allocation to pages that could actually earn clicks.

Results after six weeks

By week 6, the crawl signal was cleaner and the index footprint was smaller in the right places. The client did not need a redesign. It needed Google to stop being asked to evaluate hundreds of thousands of useless permutations.

The strongest proof came from the combination of GSC and revenue data. The store already had 943 orders and $240,809 lifetime revenue on a $255 AOV. After the fix, the priority pages were discovered faster, duplicate variants stopped crowding the index, and the category set had a much better shot at earning impressions without internal dilution.

For the benchmark site I mentioned earlier, the key numbers were 7,950 organic clicks/mo, 557,000 impressions/mo, and 16,100 indexed pages against 591,000 not indexed. Those numbers matter because they show what crawl waste looks like at scale: lots of discoverability, but too much of it is trapped in low-value URLs. The aim of crawl budget optimization is to redirect that activity into pages that can compound.

If you are dealing with multi-market duplication, this is also a faceted navigation SEO problem, not just a crawl problem. The fix has to include templates, canonicals, and sitemap structure together.

Technical-SEO diagram showing parameter URLs shifting indexing from permutations to canonical category pages

FAQ

How do you decide which facets can be indexed?

I only keep a facet indexable if it has search demand, a stable template, and a reason to exist as a landing page. Everything else stays crawlable only if needed, or gets blocked. The point is to stop Google from spending time on URLs with no ranking case.

Why split sitemaps by region?

Because one mixed sitemap hides problems. Separate files for each storefront make it easier to spot regional duplication, wrong canonicals, and URL leakage. It also makes Indexing › Sitemaps easier to diagnose when a market drifts.

Does robots.txt fix crawl budget by itself?

No. Robots is only one part. If canonicals are inconsistent and internal links keep exposing junk states, Google can still waste fetches. You need the robots rules, canonical model, and sitemap structure to agree.

What if the site has 35 languages?

Then you need to be even stricter. On the enzymes.bio benchmark, TranslatePress was handling 35 languages, and the crawl/index split was already messy. More locales mean more duplicate risk unless each language has a clean URL rule.

What should I watch in Search Console first?

Start with Performance › Search results, Indexing › Pages, Indexing › Sitemaps, and Settings › Crawl stats. Those four reports usually tell you whether the crawler is being fed useful URLs or a pile of parameter noise.

// FREE-AUDIT

Want results like this on your site?

Send the URL, get a Loom walkthrough back within 48 hours.

Request a free audit
// AUDIT-REQUEST

Request a free 30-min audit

Loom walkthrough returned within 48 hours. No sales call required.

// RESPONSE < 48 hours

By submitting, you agree to our privacy policy. We use your email only to reply to your audit request and never share with third parties.

In plain English: Google was wasting crawl on filters, so the fix was to make only the useful category and product URLs easy to find, index, and trust.