All Case Studies

EdTech

Education Platform

3x Traffic growth
90 days200+ pages indexed

The Challenge

What They Were Dealing With

An online education platform with 200+ course pages that were functionally invisible to Google. Despite having genuinely useful content — detailed course outlines, instructor bios, student outcomes — only 34 of their 218 pages were indexed. Their previous agency's explanation was that Google was "still catching up" after a site migration eight months earlier. The agency had been billing $6,000/month for eight months to monitor a problem they hadn't diagnosed, let alone fixed.

The Approach

What We Actually Did

The migration was the root cause, but not in the way the previous agency thought. They'd moved from a WordPress site to a custom React SPA without implementing server-side rendering. Every course page was client-rendered JavaScript that Googlebot couldn't reliably parse. Google's JavaScript rendering service has a crawl budget — it doesn't render every page on every crawl. For a site with 200+ pages and low domain authority, most pages simply never got rendered and therefore never got indexed.

The fix wasn't to "wait for Google to catch up." The fix was to make the pages renderable without JavaScript. We implemented server-side rendering for all course pages and generated static HTML fallbacks for the most critical landing pages. This meant Googlebot could crawl and index the content on the first pass without waiting for JS execution.

Beyond the rendering fix, the course pages themselves needed structural work. Each page was a wall of text with no semantic hierarchy — no proper H2/H3 structure, no schema markup, no FAQ sections despite courses naturally generating dozens of common questions. We added Course schema to every page, built FAQ sections from actual student enquiry data, and restructured the content with proper heading hierarchy that matched search intent.

The internal linking was nonexistent. Course pages didn't link to related courses. Subject area pages didn't link to their child courses. We built a topic cluster architecture: subject hubs linking down to individual courses, courses cross-linking to related offerings, and student outcome pages linking back up to the courses that produced those outcomes.

The War Story

How It Actually Happened

The moment we got access to Search Console, the problem was obvious. The coverage report showed 184 pages in "Discovered — currently not indexed" status. Google knew the pages existed (from the sitemap) but hadn't actually crawled them. Another 47 were "Crawled — currently not indexed," meaning Google had attempted to crawl them but couldn't extract meaningful content from the JavaScript bundle.

The previous agency had never opened the coverage report. Eight months of billing and they'd been staring at a traffic graph, not the diagnostic tool that would have told them exactly what was wrong.

The server-side rendering implementation took two weeks. We worked directly with the client's dev team — no meetings, just async communication through their existing project management tool. By day 14, all 218 pages were rendering HTML that Googlebot could parse without JavaScript execution.

The re-indexation happened faster than expected. We submitted updated sitemaps, used the URL Inspection tool to request indexing on the 30 highest-priority pages, and waited. Within five days, 67 new pages appeared in the index. By day 21, we were at 140 indexed pages. Google was crawling the site aggressively now that it could actually read the content.

Month two was about optimization. With pages indexed, we could see which ones were getting impressions but not clicks (ranking page 2-3) and which ones were getting neither. The Course schema implementation drove immediate improvements — course pages started appearing with rich snippets showing price, duration, and rating, which lifted click-through rates by an average of 23% on pages that already ranked.

The FAQ sections were the surprise performer. We'd built them from real student questions, not keyword-stuffed garbage, and Google rewarded them with FAQ rich results on 31 pages. Each FAQ snippet gave the page more SERP real estate, pushing competitors further down the page even when they technically outranked us by position.

By day 90: all 218 pages indexed, organic traffic tripled, and course enrolment from organic search was up 180%. The platform had been running Google Ads to compensate for their organic invisibility — they cut ad spend by 60% and still grew enrolments because the organic traffic was higher-intent than the paid traffic had been.

The "waiting for Google to catch up" diagnosis had cost the client roughly $48,000 in agency fees plus an estimated $200,000 in lost enrolment revenue over eight months. The actual problem was a technical rendering issue that took two weeks to fix.

We had 200+ pages sitting in Google's void. Our old agency said to "wait for Google to catch up." Underdog indexed and ranked every single one. Traffic tripled.

Lisa Park

Head of Growth, Education Platform

Want Results Like These?
Start With a Free Teardown.

We'll find what's broken and show you exactly how to fix it.

Get The Teardown

Get your free site teardown.