CareerFoundry’s 340% Organic Growth: The Technical SEO Infrastructure Behind It
How did CareerFoundry achieve 340% organic traffic growth?
CareerFoundry grew organic traffic from 1.56 million to 6.89 million annual visits over three years by migrating from CloudCannon to a custom WordPress build, implementing templated schema markup across all content types, and systematically optimising Core Web Vitals — with one person owning both the technical SEO strategy and the development implementation.
TL;DR
→ Organic traffic grew 340% — from 1.56M to 6.89M annual visits (GA4) between 2020 and 2023
→ Google Search Console recorded 6.46M clicks and 291M impressions in 2022 alone
→ Monthly clicks scaled from 500K to 800K in five months (September 2022 to February 2023)
→ A controlled video schema test showed 44% traffic increase versus 13% for the control group — a 3.4x performance difference
→ Mobile PageSpeed scores improved from 25 to 64 on key blog templates
→ All 2,020 indexed URLs achieved “Good” Core Web Vitals status with zero issues
→ Ahrefs site health score reached 97/100
→ The entire technical SEO and development implementation was executed by a single person
Table of Contents
The starting point: why the existing platform had to go
Between 2020 and 2023, I built the technical SEO infrastructure that took CareerFoundry from 1.56 million to 6.89 million organic visits per year. I was the only person on this project — I defined the strategy and wrote every line of code that implemented it. Here is exactly what I did and why it worked.
When I joined CareerFoundry in 2020 as a full-stack engineer, the site ran on CloudCannon — a static site CMS that worked adequately for basic content publishing but created a bottleneck for everything else.
The core problem was not that CloudCannon was broken. It was that the marketing team could not operate independently. Every on-page SEO change, every structural update, every new content template required engineering involvement. Schema markup could not be implemented at scale. Core Web Vitals could not be optimised systematically. The content team was publishing at a pace the platform could not support without constant technical intervention.
The organic baseline at the time was approximately 1.56 million annual visits. CareerFoundry had strong content — detailed guides on UX design, data analytics, and web development careers — but the technical infrastructure was not doing that content justice. Pages were slow, structured data was absent, and the internal linking architecture was flat rather than strategic.
The decision was not whether to migrate, but how to migrate without losing what was already working.
What we actually built
The migration was phased over approximately six months, running in parallel with a visual redesign. Rather than a single launch day — which would have introduced two major variables simultaneously — we migrated template by template. Blog posts first, then course pages, then landing pages, each with its own redirect map, schema implementation, and performance validation before the next phase began.
The destination platform was a custom WordPress build with a modular theme architecture. Not an off-the-shelf theme — a purpose-built system designed around three requirements: marketing team publishing independence, templated structured data that would scale automatically with every new page, and performance optimisation baked into the infrastructure rather than bolted on afterwards.
I owned both sides of this project. I was the technical SEO strategist defining what needed to be built, and the developer building it. This eliminated the handoff friction that typically slows migrations — there was no specification document that a separate developer had to interpret. Every SEO decision was implemented directly, tested, and validated in the same workflow.
The migration touched everything — URL mapping, redirects, canonical logic, hreflang, GA/GSC configuration, internal linking architecture — but three decisions drove the majority of the long-term impact:
Templated Schema.org structured data built directly into the WordPress theme across all content types (Article, FAQPage, Course, BreadcrumbList, Video). This is covered in detail in the next section — it was the single most consequential technical decision in the entire project.
Dynamic XML sitemap generation that automatically excluded non-canonical and noindexed URLs. This meant the sitemap was always a clean, curated signal to Google rather than a stale dump of every URL the CMS had ever generated.
A systematic Core Web Vitals optimisation pass baked into the template layer rather than applied page by page. The specific implementations and their impact are covered in the CWV section below.
The schema strategy that changed everything
The most impactful technical decision in the entire migration was building structured data directly into the WordPress theme templates rather than relying on a plugin or adding schema page by page.
This meant every new blog post automatically received Article schema with author attribution, datePublished, and dateModified. Every FAQ section automatically generated FAQPage schema. Every course page had Course schema with provider, description, and pricing information. Every page with video content received Video schema with title, description, thumbnail, and duration.
The templated approach had three advantages that compounded over time.
First, it eliminated human error. No one had to remember to add schema to a new page — it was generated automatically from the content fields the writer was already filling in. This is the most common schema failure I see in audits today: schema exists on 20% of pages because someone added it manually and then stopped.
Second, it scaled without additional engineering cost. When CareerFoundry published its 500th blog post, it had the same schema coverage as the 50th. The marginal cost of structured data on each new page was zero.
Third, it made schema maintenance trivial. When Google updated its Article schema recommendations, I updated one template file and every blog post on the site reflected the change immediately. On a plugin-based system, this kind of bulk update is either impossible or requires a separate migration project.
The results showed up in Search Console within weeks. Rich snippets began appearing across mobile search results for course pages and blog content. Video search clicks grew 40% year-over-year. Image search clicks grew 20% year-over-year. These were not ranking improvements — they were visibility improvements driven entirely by structured data making existing content eligible for rich results it had previously been excluded from.
The video schema experiment: 13% vs 44%
Before rolling out video schema across the entire site, I ran a controlled test to validate the impact.
The setup was straightforward: 22 high-converting blog posts with consistent traffic over the preceding year, split into two groups of 11. Set A received no changes — no schema, no SEO updates, no content edits. Set B received video schema markup added via the Rankmath SEO plugin on January 3rd, 2022. No other changes were made to either set during the test period.
After four weeks, I compared performance using custom Google Analytics reports built specifically for this test. The results were unambiguous:
- Set A (no schema): 13% traffic increase
- Set B (video schema): 44% traffic increase
A 3.4x performance difference from a single structural change — adding video schema to pages that already had embedded videos but were not telling search engines about them.
The mechanism was clear in the SERP data. After schema implementation, the Set B pages began appearing with rich video snippets in mobile search results. These snippets included video thumbnails, titles, and duration — visual elements that dramatically increased click-through rates without changing the underlying ranking position.
Based on these results, I recommended rolling out video schema across all blog content where video was present. The implementation was completed through the video sitemap project, which extended the schema coverage site-wide using the same templated approach as the other schema types.
The takeaway is specific: video schema made existing content eligible for rich snippets that dramatically increased its click-through rate — without changing a single word of the content, without building a single backlink, and without any ongoing maintenance after the initial implementation. Twenty-two pages, one structural change, four weeks, 3.4x difference. That is the kind of ROI that justifies treating schema as infrastructure, not decoration.
Core Web Vitals: two fixes that moved the needle most
Core Web Vitals optimisation at CareerFoundry was not a single project — it was a systematic pass across every template type, measuring field data from Google Search Console and Chrome UX Report rather than relying solely on lab scores from PageSpeed Insights.
Two specific implementations drove the majority of the performance improvement.
Automatic WebP image conversion. CareerFoundry’s blog content was image-heavy — course comparison screenshots, career guide illustrations, infographic-style visual content. These were being served as uncompressed PNGs and JPEGs, many exceeding 500KB per image. I implemented an automatic conversion pipeline that served WebP format to supporting browsers with JPEG fallback, applied appropriate compression levels per image type, and handled responsive sizing so mobile users were not downloading desktop-resolution images.
Lazy-loaded Google Tag Manager without breaking tracking. GTM scripts are one of the most common LCP and INP bottlenecks on content sites — they block rendering, delay interactivity, and load third-party scripts that cascade into further performance degradation. But removing GTM was not an option; the marketing team depended on it for analytics, remarketing, and conversion tracking.
The solution was a deferred loading implementation that delayed GTM initialization until after the main content had rendered, without losing any tracking data. This required careful testing to ensure pageview events, scroll tracking, and conversion events all fired correctly despite the delayed initialization. The implementation preserved 100% of tracking functionality while removing GTM from the critical rendering path.
The combined impact of these two changes moved mobile PageSpeed scores from 25 to 64 on key blog templates — a 156% improvement.
By the end of the optimisation process, all 2,020 indexed URLs on the site achieved “Good” Core Web Vitals status in Google Search Console. Zero pages in “Poor.” Zero in “Needs Improvement.” The Ahrefs site health score reached 97 out of 100.


The compounding effect: 500K to 800K monthly clicks in five months
The growth trajectory at CareerFoundry was not linear. It compounded.
The infrastructure improvements — faster pages, richer search results, better crawl efficiency — did not produce a one-time traffic bump. They created conditions where every new piece of content the team published performed better than it would have on the old platform. Each new article inherited the site-wide schema, the optimised page speed, the improved internal linking architecture, and the crawl efficiency of a technically clean site.
Google Search Console milestone data tells the story:
- September 2022: 500K clicks in 28 days
- November 2022: 600K clicks in 28 days
- January 2023: 700K clicks in 28 days
- February 2023: 800K clicks in 28 days
500K to 800K — a 60% increase in monthly search clicks — in five months. No major content campaigns were launched during this period. No new backlink initiatives. The growth was the technical infrastructure compounding.

The full-year 2022 data from Google Search Console recorded 6.46 million clicks from web search, 291 million impressions, and a 2.2% average CTR. Google Analytics recorded 6.89 million visits for the same period — the discrepancy reflecting the difference between GSC click measurement and GA session tracking, which is normal and expected.
From the 2020 baseline of 1.56 million annual visits, this represented 340% growth over approximately three years.
What this infrastructure outlasted
There is a detail about this case study that matters more than any individual metric: the technical infrastructure I built continued to perform long after I was no longer maintaining it.
The 800K monthly click milestone was reached in February 2023. I was not actively optimising the site at that point. The content team was publishing on the platform I had built, using the schema templates I had created, benefiting from the CWV improvements I had implemented — all without requiring ongoing technical intervention. The system was self-sustaining.
This is the test that separates infrastructure work from ongoing optimisation. Ongoing optimisation requires a person to keep doing things. Infrastructure, if built correctly, keeps working without one. The templated schema did not need someone to add it to new pages. The WebP conversion did not need someone to compress each new image. The lazy-loaded GTM did not need someone to re-test it with each new tag. These were architectural decisions that produced returns on every subsequent page published, automatically.
CareerFoundry ceased operations in February 2026 as part of insolvency proceedings. The company’s closure was a business decision unrelated to its organic search performance — the technical SEO infrastructure was still functioning as designed when the site went dark. The fact that a site can grow from 1.56M to 6.89M visits, sustain 800K monthly clicks, and maintain a 97 Ahrefs health score across 2,020 URLs — all on infrastructure built by one person over six months — is the strongest argument I can make for treating technical SEO as a capital investment rather than a recurring expense.
What I would do differently today
If I were running this migration in 2026 rather than 2020, three things would change.
I would implement GEO-optimised content structure from day one. In 2020, AI search engines did not exist as a discovery channel. Today, generative engine optimisation is a parallel track to traditional SEO. Every pillar page would include a definition block in the opening paragraph, a TL;DR summary box, and FAQ sections written to match AI prompt patterns — not just user search queries. The templated schema approach we built would extend naturally to FAQPage schema matched to real AI prompts.
I would build AI referral traffic tracking into GA4 from the start. CareerFoundry’s content — detailed career guides, course comparisons, “is X worth it” evaluation pages — is exactly the kind of content AI engines cite. Today, tracking AI referral traffic would be a day-one analytics requirement, not something discovered retroactively.
I would add Person schema for every author from the beginning. Author entity signals are now a direct input to both Google’s E-E-A-T evaluation and AI citation decisions. At CareerFoundry, blog authors had bylines but no structured Person schema connecting them to their credentials, LinkedIn profiles, or other published work. Adding this from day one would have strengthened E-E-A-T signals years earlier.
The core approach — phased migration, templated schema, systematic CWV optimisation — remains sound. These additions would layer AI search readiness on top of a foundation that already works.
Key takeaways
The technical infrastructure is the multiplier, not the content. CareerFoundry had strong content before the migration. The content did not change. The platform it sat on did. Every existing article performed better after the migration because it inherited faster load times, structured data, and better crawl efficiency. Content quality is necessary but not sufficient — without the technical foundation, good content underperforms.
Templated schema scales; manual schema does not. Building structured data into WordPress templates meant every new page was automatically schema-ready. This is the difference between schema coverage on 20% of pages (manual) and 100% of pages (templated). At scale, the compounding effect is substantial.
Test before you roll out. The video schema experiment — 13% vs 44% on matched sets of content — provided the evidence needed to justify a site-wide rollout. Without that controlled test, the recommendation would have been an opinion rather than a data-backed decision.
One person owning strategy and implementation eliminates friction. The most common failure mode in migrations is the gap between what an SEO strategist recommends and what a developer implements. When both roles sit with the same person, every decision is executed exactly as intended with no specification drift.
Phased migration reduces risk. Migrating template by template — rather than launching everything at once — meant each phase could be validated before the next began. If something broke, the blast radius was limited to one content type rather than the entire site.
Core Web Vitals optimisation is infrastructure work, not page-level work. The two biggest CWV wins — WebP conversion and lazy-loaded GTM — were implemented once at the template level and applied across every page on the site. Optimising individual pages for CWV does not scale. Optimising the template does.
Frequently Asked Questions
How long did the CareerFoundry CMS migration take?
The core migration was completed over approximately six months, phased by template type. Blog content migrated first, followed by course pages, then landing pages. Each phase included its own redirect map, schema implementation, and performance validation before the next phase began. Running the migration in parallel with a visual redesign added complexity but allowed both improvements to compound from the same timeline.
Can a CMS migration actually improve organic traffic, or just maintain it?
A well-executed migration can significantly improve organic traffic — not just preserve it. At CareerFoundry, the migration was not a lateral move from one platform to another. It was an upgrade from a platform that constrained technical SEO to one specifically built to enable it. The structured data, performance optimisation, and crawl efficiency improvements that the new platform made possible drove growth that the old platform could never have supported, regardless of content quality.
What was the single most impactful change in the CareerFoundry migration?
Templated Schema.org structured data built directly into the WordPress theme. This single architectural decision made every page on the site eligible for rich results, video snippets, FAQ features, and course listings — automatically, at scale, with zero ongoing manual effort. The video schema test alone showed a 3.4x traffic difference between pages with and without schema.
How do you measure whether a CMS migration was successful?
Compare organic clicks, impressions, and conversion rates against pre-migration baselines using Google Search Console and GA4 data for the same date range in the prior year. Monitor index coverage in Search Console for the first 90 days post-launch — any spike in “Excluded” or “Crawled but not indexed” URLs indicates redirect or canonical issues. Track Core Web Vitals field data (not just lab scores) to confirm the new platform performs better under real user conditions.
Is it safe to migrate and redesign a website at the same time?
It increases risk because you introduce two major variables simultaneously, making it harder to diagnose the cause of any traffic change. At CareerFoundry, we mitigated this by phasing the migration template by template, so each phase could be validated independently. If timelines force you to combine migration and redesign, the phased approach is essential — do not launch everything at once.
What would a similar migration cost and how long would it take for my site?
Timeline depends on site size and complexity. For a content site with 200–500 pages, a phased migration with schema implementation and CWV optimisation typically takes three to six months. Larger sites with thousands of pages or complex e-commerce functionality take longer. Cost varies based on whether the technical SEO strategy and development are handled by one person (as at CareerFoundry) or split across an SEO consultant and a separate development team — the latter adds coordination overhead and typically extends timelines by 30–50%. If you want to understand what this would look like for your specific site, the free audit identifies the scope of work and priority sequence before any engagement begins.
Need Help With Your SEO Strategy?
Let's discuss how I can help you achieve your digital marketing goals.
Get in Touch