B2B Ecommerce SEO Case Study: 7x Organic Revenue Growth

Case Study: Increasing Organic Search Revenue 7x by Reducing Indexing, Using Templates, and Putting Structure First

Written by: CRO:NYX Team

Published: 1 May, 2025

The Symptoms: Google was only crawling ~30% of this 60k page ecommerce website, and was focusing all its crawling on low-value pages.

Our client, a large B2B distributor of industrial replacement parts, came to us with a problem. Their Shopify store with over 60,000 products was barely getting indexed, and their key pages weren’t showing in search. This massive website, which should be a key revenue driver, was barely pulling its weight as a sales resource for the team

The Challenge: Poor markup was leaving important contact invisible or without context to crawlers.

With large e-commerce websites, challenges like this often indicate that the issues are structural. Template coding, schema markup, and content hierarchy are often more important than the actual page content across large database driven websites.

As we dug into this project, we found that most of the problems for this website were indeed structural and to fix them across 60k+ pages, we were going to need a solid, scalable SEO solution for this ecommerce website.

This is where SEO stops being a content exercise and becomes one of engineering and prioritization - deciding what deserves to exist, making sure search engines and AI tools can actually see it, and building systems that keep it that way as the catalog continues to grow.

Below is a full breakdown of what was broken, how and why we fixed each piece, and the results that happened because of it.

Our Approach: Scalable, Structured, SEO

What we had: A B2B distributor's 60,000-product Shopify store where the catalog was effectively invisible to AI assistants, and barely a third of it was indexed by Google.

What we did:

  1. Evaluated which pages should be included in our crawl budget.
  2. Identified indexing issues that needed to be resolved ASAP.
  3. Built an AI-supported template to generate structural SEO content for hundreds of pages at a time.
  4. Improved on-page content, also AI supported, to generate supportive content that’s helpful for visitors and key for AI citations.
  5. Built the model to ensure all new products are launched with full SEO considerations already in place.
  6. Conducted further AI optimization to ensure stronger visibility across the Buyer’s Journey

Optimizing Crawl Budget: Most of the catalog couldn’t earn, but it all costs something to crawl

Optimizing Crawl Budget

Google is like a customer walking into your warehouse with a timer. It has a fixed amount of attention to spend on your site per visit - this is what we SEOs call "crawl budget" - and every minute/page counts.

When the timer runs out, Google leaves. It does not care how many aisles it has never seen.

For this site, this was resulting in thousands of pages uncrawled and unindexed.

Our initial crawl found 65,000 URLs on the site.

Google was reporting only 20,000 pages indexed.

What’s worse, the pages that were indexed weren’t even the good ones.

Many were thin or empty product pages, some of which were numeric placeholder shells that rendered no product at all. Others were variations based on URL parameters like ?country=, ?currency=, and ?variant= that Shopify generates by default.

Because of these reasons (and more), Google was burning its budget on empty shelves that were not doing anything for this client, yet every single one of them was competing for Google's attention.

In short, the catalog of that size was kicking the website’s ass, so we cut the catalog down to what could earn money for the business.

Choosing how to spend our crawl budget

Using 3 data sources together - internal site-search, sales data, and Search Console - we sorted every page into 4 buckets:

  1. Keep and optimize the ones with real revenue potential,
  2. redirect the weak into stronger pages,
  3. Noindex the empty shells, and
  4. delete the dead.

Then we fixed the issues that kept regenerating low-quality and duplicate pages:

  • Canonicalized the pagination
  • De-duplicated the product URLs Shopify creates when one item sits in several collections
  • Trimmed the bloated sitemaps down to indexable pages
  • Removed the redirect chains
  • Deindexed an old subdomain that was still competing with the live store
  • Added standing guards to keep fresh clutter out of the index automatically.

The result is that the crawlable catalog dropped to about 8,000 indexed pages, and unindexed pages fell from about 15,000 to about 2,000 within 3 months.

Google Search Console Page Indexing report

 

Content Hide & Seek: Google & AI Crawlers Couldn’t See the Page Content

While crawlers have gotten pretty good at discovering all kinds of content on the web, they still can’t see it all. Most AI crawlers still don't render JavaScript at all.

For our client, the category pages rendered their product grids with client-side JavaScript. While Google can render JavaScript, it does it on a slower, more expensive second pass through your site, which isn’t always a given that any page will get a second visit and the time to render your product info. For ChatGPT, Claude, and Perplexity, the catalog was effectively blank and this was happening at exactly the moment buyers were starting to turn to these AI answer engines for information.

To remove the invisibility cloak from their store, we moved the product grids to server-side rendering.

The server builds the product cards into the HTML before it reaches the browser, so the page arrives complete, and JavaScript stays only to enhance it with filtering and sorting capabilities.

This removed the rendering tax on Google's crawl and, more importantly, it meant AI tools could actually see the catalog.

The full catalog became visible to both Google and AI crawlers in the raw HTML. The category-page and product-page gains below all stand on this foundation.

Fix the template once, fix thousands of pages at once

Template settings were missing and/or misusing SEO basics across thousands of pages at a time.

  • Interface text like "Item added to your cart" was marked up as H1 and H2 headings.
  • Category pages also had no unique descriptions, no correct H1s, no page titles and meta descriptions.
  • There were no breadcrumbs.
  • No structured data.
  • The navigation filters were generating crawler-trapping parameter URLs.

There were other issues across the site like no alt text on images, which tends to be a lower priority item - but on Shopify stores with thousands of pages and an industry where a lot of people depend on images to find the right product… Well, it’s a bigger deal.

What we did, and why.

On a catalog this size the unit of work is the template, not the individual page. One template change cascades across every page that uses it. That's leverage, and leverage is the only thing that works at this scale.

  1. We rebuilt the collection template and corrected the heading hierarchy, added a unique-description field, fixed H1s, titles, and meta descriptions.
  2. We built breadcrumbs with structured data.
  3. Converted the important filters into clean linkable URLs
  4. Added a tiered related-categories module so no page is left orphaned
  5. Generated the missing image alt text automatically from each page's own heading, and
  6. Added structured data for products and listings.

The result is that every collection page inherited the fixes the same day. And just as important: every new page now ships about 80% optimized by default, so the catalog stops accumulating SEO debt as it grows.

Optimizing Your Database to Optimizing Product Pages

When we dug into the page-level optimisation issues we found several:

  • Most product pages had titles and headings that were barely more than the raw product name, and many had no description at all.
  • The product structured data was actively wrong - it labeled every item's brand as the store's own domain instead of the real manufacturer.
  • Manufacturer and product data was there, but it wasn’t being leveraged effectively on the page.

But how do you optimize a large catalogue of thousands of pages? You don't.

You optimize the data, and let the data optimize the pages.

Each product already carried structured attributes - manufacturer, manufacturer part number, units, compatible equipment, and so on and we leveraged these to compose a new formula to generate SEO elements such as headings, titles, and meta descriptions for the whole catalog, generated in a sheet and pushed in bulk.

We also deliberately pulled tens of thousands of thin and non-selling product pages out of the index, and product impressions fell about 70%.

And this is the point where you're probably thinking "impressions fell 70%? That sounds like a disaster." - here’s why it’s a good thing.

  • The pages that remained climbed from an average position of about 24.8 to about 8.6 - from the third page of Google to the bottom of the first.
  • Their click-through rate rose from about 0.9% to about 4%. And clicks held essentially flat on a fraction of the impressions.
  • Every impression that remained became 3 to 4 times more valuable.

Don’t Overlook Your Collections/Category Pages

It’s tempting to start your efforts at the bottom of the funnel, on product pages. But here's the thing: product pages mostly capture demand that already exists. Someone searching a specific part number was going to buy anyway.

The searches that bring in NEW customers - the non-branded ones like "industrial replacement parts for [a type of machine]" - land on collection/category pages.

But with no dedicated, optimized collection page to catch that traffic for many of the collections and sub-categories, there was no ‘front door’ for visitors to enter the site through.

To close this gap, we built a data model across internal search, sales, and Search Console to find the product lines that sold but had no collection page, then built those pages on top of a full information-architecture and keyword map, so they fit a deliberate structure instead of piling up at random.

We also declined to chase pages that ranked but earned no clicks.

Then we re-ordered the products within collections to put in-stock best-sellers first to help increase the conversion rate and send stronger engagement signals to Google.

Future Friendly: New products are born optimized

This client has a catalog that expands by 30-50 products a month, and each one arrives as the same empty shell, with no title logic, no description, no schema and the full potential to recreate a backlog of empty pages.

Clean the pipes once and let them clog right back up? No thanks, we can’t let that happen.

So we decided to build a pipeline across Google Sheets and Python with a language model and a scraping agent in the middle.

  1. A new product enters this system with only its raw attributes.
  2. The system then runs a web-research and scraping step to gather corroborating detail about the part, then a fast, inexpensive language model drafts the URL, heading, title, meta description, and product description within length, while a Python layer cleans, de-duplicates, and merges the output into a file pushed to the store in bulk.
  3. The system then scores its own confidence.
    1. 2 or more corroborating sources mark the copy ready.
    2. 1 source flags it for human review.
    3. And 0 sources - common for the store's own house-brand parts, which aren't documented anywhere else - falls back to safe copy built straight from the attributes rather than a guess.

This leads to new products now published already optimized on day 1, with a human reviewing only the low-confidence cases.

The catalog's growth no longer manufactures new technical debt.

AI Search: being crawlable isn’t being recommended

The rendering fix made the catalog crawlable by AI tools but being crawlable is not the same as being recommended. The same way being listed in the phone book is not the same as being referred by a friend.

We ran 100s of buyer-journey questions through the major assistants and the brand appeared in about 15% of answers overall, and 0% of the category, supplier, and problem-solving questions - the exact questions where new buyers start.

There were 2 causes.

  1. A knowledge-graph gap: asked to describe the company, one assistant mistook the name for a similar everyday word and returned an unrelated dictionary definition.
  2. A citation gap: the AI leaned on the brand's own social profiles, because there was little credible third-party content to cite.

AI answers are built differently from a list of links. An assistant reads a handful of sources, cites 2 to 7 of them, and fans a single question into 8 to 10 sub-queries behind the scenes. The goal isn't ranking 1 page for 1 keyword anymore. The goal is being a recognized entity, cited across several credible sources.

We set up measurement of AI-assistant referrals in analytics, began establishing the brand as a recognized entity across the reference and trade sources these systems trust, and built a content subdomain around the real questions buyers ask - correct from day 1: dynamic sitemap, crawl guards, cross-domain analytics, visible "last updated" dates and FAQ structure (both raise the odds of being cited), and proper Bing coverage, since we know one LLM assistant draws its sources from there.

And we'll be straight with you here: this is a slower, compounding channel, and there's no quarter-over-quarter chart to show you yet. But the brand went from no presence and no measurement to a clear baseline, a model of exactly why it was losing, and a program aimed straight at the gap.

The Results: 7x Organic Search Revenue Growth in 10 Months

Organic Search Revenue Growth

The results, in the first 10 months or so:

  • Organic search revenue grew 7x.
  • The category pages we rebuilt grew clicks about 6x.
  • Product-page click-through went from about 0.9% to about 4%
  • Sitewide Google position went from about 27 to under 12
  • Unindexed pages fell from about 15,000 to about 2,500
  • The crawlable catalog dropped from about 50,000 pages to about 8,000

We could show you a shiny chart here, but we'd rather tell you the truth first: B2B attribution is hard, and we had to fix it before we could trust it.

The analytics were running on defaults. Login and checkout sit on a separate domain, and a real share of orders come in over the phone through a sales rep or from saved-cart links.

All of those sales silently defaulted to "direct" - and stole the credit from organic.

So we rebuilt the attribution down through the cookie logic, which cut the misattribution roughly 2x, and defined the conversion events that had never been tracked at all.

With that in place, organic search has been driving well into the multiple 6 figures of tracked revenue each month - the strongest on record in history, and 7x higher than the first month we began working the campaign.

<insert client quote here if we can get one!>

Why it worked: execution not recommendations

Recommendations are worth NOTHING until someone ships them, and on a job this size that was the difference.

The client's in-house team owned the demanding product-data side and turned changes and approvals around fast enough that momentum never stalled.

The development team carried the heaviest technical load - server-side rendering, theme work, faceted-navigation rewiring, bulk catalog updates, structured data - all on a live, high-traffic store - and they took thorny specs and shipped them clean.

The strategy and diagnosis came from our side. The catalog knowledge and engineering came from theirs.

None of the 3 groups could have produced the result alone.

SEO Is Never Done: What’s Next

A catalog this size is never finished, and several workstreams are live right now.

For conversion rate optimization (CRO), we're reworking the storefront - clearer calls to action, verified social proof, plain-language explanations of how an account and its pricing work.

We're rebuilding the navigation and information architecture to match how buyers actually move.

We're publishing top-of-funnel content aimed at the problems buyers have before they know which part they need.

And we're continuously building authority - the off-site citations that both classic rankings and AI answers ultimately rest on.

The summary

The throughline is simple: at this scale, the work that matters most is rarely writing more content.

It's almost always thinking more clearly about what deserves to exist and what deserves to be seen.

We cut a 60,000-page crawlable catalog down to the roughly 8,000 pages that could earn, made those pages visible to Google and AI in the raw HTML, fixed the fundamentals once at the template level, optimized tens of thousands of pages as data, built a system that publishes new products already optimized, aimed the effort at the category pages where new customers enter, and started building the entity recognition and citations that AI answers run on.

If you run a catalog like this and any of it sounds familiar, that's exactly the kind of problem we like to untangle. And we're always happy to talk it through.

SEO & AEO
Client Stories
Ecommerce
Strategy
B2B Ecommerce SEO Case Study: 7x Organic Revenue Growth

Written by: CRO:NYX Team

News and articles from CRO:NYX team members & alumni.

Let's Get to Work!

We’d love to chat about how we can help you with your next project.

Get started

Let's Get to Work!

We’d love to chat about how we can help you with your next project.

Get started