MAGENTO SEO CASE STUDY

Magento SEO Case Study: How we get 120% More Organic Revenue

+73%
Organic Traffic
+120%
Organic Revenue
6.2x
Faster Pages

The Challenge

The Brief:

Grow non-brand organic traffic for an Adobe Commerce (Magento 2) auto parts store whose rankings had gone nowhere in 18 months.

Budget:

$4,800 per month

The client sells replacement parts and accessories across roughly 14,200 SKUs. The catalog had grown every quarter for two years, but non-brand organic traffic sat flat the whole time. New product pages were slow to appear in search, and the categories that made real money (brake kits, suspension, lighting) sat on page three or worse for terms the store should have owned.

When we pulled Search Console, the reason was hard to miss. Google had indexed about 137,000 URLs for a store with 14,200 products. The extra 122,000 were filter combinations: every make, model, year, brand, and price band that layered navigation could stitch together, each one a near-copy of the category page above it.

The crawl stats told the rest of the story. Around 80% of Googlebot's requests were landing on those filter URLs. So when the merchandising team added a product or changed a price, it took three to four weeks for Google to notice, because the crawler was busy re-reading thousands of pages that never should have been crawlable. The category pages that mattered got visited a fraction as often as the junk.

Speed made all of it worse. The store ran Magento's file-based full page cache with no Varnish layer, so category pages took about two seconds to return their first byte. Largest Contentful Paint on mobile was 4.6 seconds, and the mobile PageSpeed score was 38. The site was slow to crawl, slow to load, and stuffed with pages nobody wanted.

The Strategy

We did not start with content or keywords. On a store this size, the first job is to stop wasting Google's attention and hand it fewer, better pages to read. We split the engagement into three phases that overlapped rather than ran end to end.

Phase 1 (Weeks 1 to 3): Regain Crawl and Index Control

Audit layered navigation, decide which filter URLs (if any) earned a place in the index, and pull the rest out without cutting off link equity. Canonical rules, targeted noindex tags, robots.txt disallows for parameter patterns, and cleanup of catalog search and compare URLs.

Phase 2 (Weeks 2 to 9): Rebuild the Performance Foundation

Move full page cache to Varnish, put Redis on sessions and cache, and fix the front end: critical CSS inlined, unused JavaScript stripped, hero images served as sized WebP. Target a sub-400ms cached TTFB and a mobile LCP under 2.5 seconds.

Phase 3 (Weeks 6 to 20): Make Category and Product Pages Rank

With crawl budget freed up and pages loading fast, give the important pages a reason to rank: unique category intro content, cleaned-up title and meta templates, internal links down to money categories, and Product and BreadcrumbList schema.

Is Your Magento Index Full of Junk URLs?

This store had 137,000 URLs indexed for 14,200 products. Our Magento SEO service finds that bloat and cuts it without losing rankings.

See the Service

The Execution

Layered navigation was the core of the problem, so we spent the first two weeks mapping it. Not every filter URL is worthless. A page for a specific make and model can match real search demand, while "color plus price band plus in-stock" almost never does. We kept a short list of high-demand make and model filter pages indexable, gave them their own editable intro copy and metadata, and sent everything else a noindex, follow tag. The heaviest parameter patterns went straight into robots.txt to protect crawl budget outright.

We phased the deindexing instead of doing it all at once. Removing 118,000 URLs overnight can spook Google and drag crawl activity down with it, so we rolled the robots and noindex changes out in batches over about six weeks and watched the crawl stats and index count after each one. Catalog search results, compare, wishlist, and cart URLs were disallowed on day one, since none of them belong anywhere near an index.

On performance, the single biggest win was switching full page cache from Magento's file backend to Varnish, with Redis handling sessions and the default cache. Cached category pages dropped from roughly two seconds to first byte down to about 340 milliseconds. After that the front-end work was ordinary but tedious: we inlined critical CSS for the product and category templates, deferred the RequireJS bundle, removed jQuery UI libraries the theme no longer used, and rebuilt the hero and product images as sized WebP with a preload and fetchpriority set high on the LCP element.

The on-page work was the least glamorous and the slowest to pay off. We wrote intro content for the top 40 categories, replaced auto-generated title tags that all read the same with a template that pulled in the category plus a qualifier, added Product and BreadcrumbList structured data, and built internal links from the blog and top-level pages down into money categories that had been sitting three and four clicks deep. This is the exact scope our Magento SEO service runs on larger Adobe Commerce catalogs.

The Results

We measured everything against an eight-month baseline. The figures below are non-brand organic, so none of it is propped up by branded search.

Non-brand organic sessions rose 73%, from about 42,300 to 73,180 per month. Revenue grew faster than traffic, up 120%, for a simple reason: a faster store converts better, so the extra visitors landed on pages that turned more of them into buyers. Conversion rate went from 1.7% to 2.16%, and the two gains compounded. Cached category pages went from about two seconds to first byte down to 340 milliseconds, roughly 6.2 times faster.

Index and Crawl Health

Graphic placeholder
Index and crawl health before and after: 137,000 indexed URLs cut to 19,400, with crawl activity to real category and product pages rising from 18% to 71%
Index and crawl health before and after: 137,000 URLs cut to 19,400, crawl to key pages up from 18% to 71%

We cut the index from 137,000 URLs to 19,400, removing about 86% of the bloat and pulling the indexed-to-product ratio from 9.6 to 1 down to 1.4 to 1. More useful than the headline number: Googlebot stopped burning its budget on filter pages, so the share of crawl activity hitting real category and product pages went from 18% to 71%. Fresh products started getting picked up in about five days instead of the previous 24.

Core Web Vitals

Graphic placeholder
CORE WEB VITALS BEFORE AFTER.png
Core Web Vitals before and after on mobile: TTFB 2.1s to 0.34s, LCP 4.6s to 2.1s, PageSpeed 38 to 81

All three Core Web Vitals moved from failing to passing at the 75th percentile. Cached TTFB dropped from 2.1s to 0.34s, mobile LCP from 4.6s to 2.1s, INP from 340ms to 180ms, and CLS from 0.21 to 0.04. The mobile PageSpeed score climbed from 38 to 81, and the store went from red across the board in the Search Console vitals report to green on mobile and desktop.

Keyword Movement

Across the whole tracked set, non-brand keywords in the top 3 went from 58 to 331, and keywords in the top 10 went from 412 to 1,286. The money categories carried most of the revenue gain: "performance brake kit" moved from #28 to #4, "led headlight bulbs" from #33 to #3, "cold air intake system" from #19 to #5, "coilover suspension kit" from #41 to #6, and "stainless exhaust system" from #37 to #7.

Real-World Proof

Graphic placeholder
REAL-WORLD PROOF.png
Google Search Console crawl stats screenshot showing crawl requests shifting from filter URLs to category and product pages

None of these were quick wins. The first ranking movement showed up around week 7, once Google had recrawled the trimmed index. Revenue only started climbing in a straight line from about month four onward.

Google Is Reading the Wrong Pages

80% of crawl requests here were landing on filter URLs. Fixing that took the index from 137,000 URLs to 19,400 and cut product pickup from 24 days to 5. Our technical SEO service finds where yours goes.

Explore Our Technical SEO Service

Why It Worked

Plenty of Magento stores get an SEO audit that lists a hundred fixes and no order of operations. The reason this engagement moved the numbers was sequencing. Here is what made the difference:

1. We Fixed Crawl Budget Before Touching Content

Writing category copy while Google spends 80% of its budget on filter URLs is wasted effort. Once the crawler was reading the right pages, everything downstream started to land.

2. Speed and Rankings Moved Together

A sub-400ms TTFB helped Google crawl deeper and helped shoppers stick around. That is why the revenue line outran the traffic line.

3. We Kept the Filter Pages That Earned Their Place

Blanket-noindexing every filter URL throws away real make and model demand. Keeping a curated set of them indexable held on to long-tail traffic other stores lose.

4. We Phased the Deindexing

Dropping 118,000 URLs in one push is how you tank a store's crawl activity by accident. Batching it over six weeks let us watch for trouble and back off if the index moved the wrong way.

5. The Category Pages Finally Had Something to Rank

Identical auto-generated titles and empty category pages give Google nothing to choose. Real intro copy, distinct metadata, and internal links gave the money pages a fair shot.

Honest Caveats

This kind of work is not a quick win, and it is not risk-free. Here is what made it hard and where it could have gone wrong:

Deindexing at Scale Is Risky

Get the robots.txt or canonical rules wrong on a Magento store and you can deindex pages that were making money. We staged the rollout and monitored it closely for a reason.

It Needed Real Developer Time

Varnish, Redis, critical CSS, and the theme cleanup all needed a Magento developer, not just an SEO. A store without dev resources would have stalled at the performance phase.

Hosting Set the Ceiling

A cached TTFB near 340ms depended on the store moving to infrastructure that could run Varnish and Redis properly. On weaker shared hosting, the speed gains would have been smaller.

The Timeline Was Long

Rankings did not move until week 7, and revenue did not climb steadily until month four. If you need results inside 30 days, technical SEO on a large Magento catalog is not the lever.

The Faceted Nav Plan Was Store-Specific

Which filter pages we kept indexable came from this catalog's search demand. Copy the exact rules onto a different store and you will keep the wrong pages and drop the wrong ones.

Key Takeaways

If you run SEO on a large Magento or Adobe Commerce store, here is what this project reinforced:

1. On Magento, Crawl Budget Is the First Lever

Faceted navigation can generate more URLs than you have products by an order of magnitude. Until you fix that, content and link building sit downstream of a leak.

Actionable insight: check your indexed-to-product ratio in Search Console before you plan anything else. Anything past 2 to 1 needs attention first.

2. Index Bloat Is a Math Problem Before It Is an SEO One

Twenty filterable attributes with four values each add up to millions of possible URLs. You cannot write your way out of that. You have to decide, per filter, what deserves to exist.

Actionable insight: map your layered navigation and sort filters into keep, noindex, and block. Do it on paper before you touch the config.

3. TTFB Caps Everything Downstream

If your server takes two seconds to respond, no amount of image optimization gets your LCP under 2.5 seconds. Fix the backend first.

Actionable insight: run Varnish and Redis before you spend a day on front-end tuning. The cache layer is the cheapest big win on Magento.

4. Not Every Filter Page Is Junk

Make and model filter pages often match real search demand. Blanket rules throw that traffic away along with the noise.

Actionable insight: cross-check your filter URLs against keyword demand. Keep the handful that people actually search for, and give them real content.

5. Phase Big Index Changes

Removing a hundred thousand URLs at once is a good way to confuse Google and lose crawl activity you wanted to keep.

Actionable insight: roll out robots and noindex changes in batches, and watch crawl stats after each one before you push the next.