Forty thousand parts nobody could find
Halyard supplies marine engine parts to yards across Scandinavia. Their catalogue was the best in the region and completely invisible: 40,000 SKUs generating 300 organic sessions a month.
The problem
The catalogue generated a near-infinite URL space. Every filter combination — length, thread, material, brand — produced a crawlable link, so Googlebot spent its budget on 340,000 permutations of the same eleven gaskets and never reached the real pages.
Only 1,100 of 40,000 SKUs were indexed. The other 38,900 existed, worked, and could not be found by anyone who was not already a customer.
Nobody could prove the channel was worth anything, because a NOK 40,000 order placed by phone three weeks after a search was invisible in GA4.
What we did
- 1
Close the parameter faucet
We canonicalised filter permutations to their parent category and cut the crawlable URL space by 94%. This is unglamorous work and it was the entire unlock: the crawler had budget for the first time.
- 2
Give the SKU a reason to exist
A part number is not a page. We generated fitment tables — which engines, which years, which yards use it — from the ERP, so each SKU page answered the question a mechanic actually types.
- 3
Follow the order past the website
We piped GA4 client IDs into their ERP at quote stage, so a phone order could be traced back to the search that started it. Half our job here was making the results provable.
What it returned
Indexation went from 1,100 to 8,900 SKUs — deliberately not all 40,000, because roughly three quarters of the catalogue are low-volume variants that would only dilute the pages worth ranking.
The pipeline figure is the one their board cares about, and it only exists because we spent six weeks on the ERP integration nobody asked for.
“Three agencies told us to write blog posts. Startegys told us our filters were eating Google's crawl budget and then proved it with a graph. That was the whole problem.”