SEO case study

Product-led SEO

How we scaled a freemium SaaS platform from 236 clicks to 42.9K by fixing the product before we scaled the search strategy.

Client
Freemium SaaS, under NDA
Scope
Product build, technical SEO, content, authority
Surface
Google Search

0.0K

Organic clicks

236 at the early benchmark

0K

Impressions

5.67K at the early benchmark

0.0%

Average CTR

4.2% at the early benchmark

0.0

Average position

7.7 at the early benchmark

Figures come from two different Search Console reporting periods, so we present them as project milestones rather than a month over month comparison. The trajectory is the point.

Chapter 01

The starting point

A working product with a limited search footprint

The client runs a technology focused SaaS platform on a freemium model. People could use the core product without paying, which made organic search a direct route into the product rather than a route to a sales page.

The platform was built on WordPress and leaned on an off the shelf implementation for its core functionality. It worked. It also carried limits we could see as soon as we started testing it properly: reliability gaps, patchy coverage, and a system that was never designed to be developed continuously.

That mattered because driving more traffic to a product with unresolved technical problems only widens the audience for those problems. So we made an early call that shaped the whole engagement.

SEO would not come first. The product would.

Google Search Console

Google Search Console performance for the first month showing 235 clicks and 5.61K impressions
Month one baseline: 235 clicks, 5.61K impressions, 4.2% CTR, average position 7.

An average position of 7 told us the site was already reaching the first page for the queries in the report, and 5.61K impressions said Google was exposing it to real demand. The gap between impressions and clicks was the opportunity.

We did not answer that with a content sprint or a link push. We went back to the product.

Chapter 02

Product work

Rebuilding the pipeline before scaling acquisition

Our developers moved past the original implementation and built a more capable pipeline underneath the product. The most valuable change was detecting every relevant board properly, which is the core job the SaaS exists to do.

  • ReliabilityA consistent experience instead of an occasional one.
  • CoverageDetection that handles a much broader range of inputs.
  • ProcessingA workflow that holds up when it is under load.
  • ScalabilityRoom to grow past the limits of the original script.
  • IterabilityA codebase our team could keep improving weekly.

We then stopped treating the platform as finished. Releases were documented in a changelog, feedback fed the next cycle, and the development loop settled into something repeatable: user feedback, diagnosis, development, release, observation, iteration.

Chapter 03

Diagnosis

Having pages is not the same as having visibility

By month two the numbers had barely moved: 236 clicks from 5.67K impressions, CTR flat at 4.2%, average position drifting from 7 to 7.7. Clicks had gone up by one.

Google Search Console

Google Search Console performance for the second month showing 236 clicks and 5.67K impressions
Month two: 236 clicks, 5.67K impressions, 4.2% CTR, average position 7.7.

That flat line was useful. It proved that an operational product and some existing rankings were not going to compound on their own. The next move had to be structural, so we stopped asking how to create more pages and started asking how to make the existing ones easier for Google to discover, understand and prioritize.

  • Page level metadata
  • Crawlability
  • Internal linking
  • Site architecture
  • URL relationships
  • Page relevance
  • Indexation signals

Chapter 04

Architecture

Turning a set of URLs into a connected system

We started with metadata and page level targeting, giving every important URL a single clear purpose instead of overlapping signals. Then we reorganized the site into a hub and spoke model, so core pages, supporting pages and related content reinforced each other rather than competing.

Internal linking carried most of the weight. We used contextual links with descriptive anchors, removed orphan pages, and kept the pages that matter within a shallow click depth.

Search Console, page indexing

Google Search Console page indexing report showing 22 indexed pages and 14 not indexed
Page indexing through the architectural work: 22 indexed against 14 not indexed, with known pages climbing over time.

We are not claiming a single change produced every indexing gain. Several things were improving at once and SEO is cumulative. What the report shows is the site's footprint becoming more established, with Google processing a growing share of the URLs it knew about.

Chapter 05

Search demand

Intent decided what deserved a page

We judged keywords on their relationship to the product: intent, topical relevance, SERP competition and the actual value of the traffic. Volume on its own never justified a page. That kept the site from drifting into traffic it could not serve.

Related queries were grouped by the need behind them. Where several keywords meant the same thing, they became one stronger page instead of four that cannibalized each other. Where the intent genuinely differed, they earned separate pages.

The journey we were building

  1. Search
  2. Useful content
  3. Relevant internal link
  4. The product
  5. A real experience

Content was published gradually and deliberately. We let the product and the architecture mature instead of racing ahead of them, because a content farm attached to a fragile product helps nobody.

Chapter 06

Authority

We waited until there was something worth citing

Link building started late on purpose. By the time we pushed on authority, the SaaS had a working and improving product, useful pages, organic traction, a stronger architecture and a clear search strategy. Pointing links at a weak foundation would have wasted them.

What we filtered on

  • Topical relevance
  • Contextual relevance
  • Publication quality
  • Audience relevance
  • Editorial fit

What we refused to lead with

  • DA
  • DR
  • Total backlink count

The mix was digital PR for brand mentions and coverage, niche edits where the surrounding content actually related to the product, and guest posts through personal outreach rather than marketplaces, which kept us in control of context and placement quality.

Build authority around something useful instead of using authority to cover for something weak.

Chapter 07

Performance

Speed became the next constraint

As traffic grew, mobile performance became the bottleneck. The product scored 59 on mobile with a 5.9 second First Contentful Paint and an 8.9 second Largest Contentful Paint. Accessibility and SEO were already strong. Loading was what held the experience back.

Performance

5999

Accessibility

9092

SEO

100100

  • First Contentful Paint

    5.9s0.5s

  • Largest Contentful Paint

    8.9s0.8s

  • Speed Index

    6.9s1.0s

  • Total Blocking Time

    50ms30ms

  • Cumulative Layout Shift

    00.006

Measured on mobile before and after the optimization work. SEO was already at 100 and stayed there.

We treated this as product quality rather than a Lighthouse score. Someone arriving from search should not wait several seconds before the product becomes usable, and that fix serves the user and the ranking at the same time.

Chapter 08

The incident

Then we had to defend the growth

The first symptom was speed. A site serving more than 1,500 visitors a day started taking around ten seconds to load, and the loading metrics fell apart. In DevTools we found a request going through a /rpc_proxy endpoint that returned Base64 encoded JavaScript, which the browser then decoded and executed.

Chrome DevTools

Chrome DevTools network panel showing a 10.68 second request
A 10.68 second request stood out immediately in DevTools.

Recovered payload

The decoded malicious script fetching and injecting JavaScript
The payload fetched a signature, decoded it, and injected it into the page as a script.

We checked the WordPress files, plugins, themes, database and configuration. Nothing. That absence was the clue, so we followed the entire request path instead of assuming the problem lived on the origin.

It was sitting at the Cloudflare edge. A Worker had been attached to routes covering the site, fetching the legitimate WordPress response, modifying it, and injecting JavaScript before anything reached the browser. Nothing in WordPress was ever compromised, which is exactly why searching WordPress found nothing.

What we expected

  1. User
  2. Cloudflare
  3. WordPress
  4. Browser

What was actually happening

  1. User
  2. Cloudflare
  3. Malicious Worker
  4. WordPress
  5. Injected JavaScript
  6. Browser

Cloudflare, Workers

Cloudflare dashboard showing the malicious Worker attached to site routes
The Worker was bound to routes covering the website, sitting between the CDN and the origin.

Cloudflare, API tokens

Cloudflare API token summary showing Workers Scripts edit and Workers Routes edit permissions
An unfamiliar API token held permission to edit Worker scripts and routes.

We traced the injected script, located the Worker, removed the affected routes, revoked the unrecognized token, secured the account and retested until the injected behavior was gone.

We are not claiming Cloudflare was breached. What the evidence showed was unauthorized access to the site's Cloudflare configuration and a malicious Worker deployed through the API. How that access was obtained is not something we can establish from the evidence available to us.

When malicious behavior is not on the origin, the investigation cannot stop at the origin. Origin, CDN, edge, browser.

Chapter 09

The turning point

Rankings followed the improvements

With the product rebuilt, the architecture clarified, indexation healthier, content aligned to intent, authority earned and the infrastructure secured, the growth curve changed shape.

Google Search Console

Google Search Console performance showing 42.9K clicks and 783K impressions
The later reporting period: 42.9K clicks, 783K impressions, 5.5% CTR, average position 5.1.

Against the early benchmark of 236 clicks and 5.67K impressions, the site reached 42.9K clicks and 783K impressions while improving CTR from 4.2% to 5.5% and average position from 7.7 to 5.1. Rising volume alongside a better position and a better click through rate is the combination worth having.

Attribution

What actually drove the growth

There was no single tactic behind this. Ten things improved together, and the system is what produced the result.

  1. 01

    Product improvements

    We strengthened the SaaS before scaling acquisition.

  2. 02

    Technical SEO

    We fixed what was affecting crawling, indexing and site quality.

  3. 03

    Information architecture

    We reorganized the site around clear page relationships.

  4. 04

    Search intent

    We targeted demand by relevance, not by volume alone.

  5. 05

    Supporting content

    We expanded topical coverage at a pace the product could carry.

  6. 06

    Internal linking

    We made important URLs easy to reach and easy to read.

  7. 07

    Relevance first authority

    We chose placements by topical fit ahead of raw metrics.

  8. 08

    Digital PR

    We earned mentions that widened the brand footprint.

  9. 09

    Performance

    We cut loading friction on the product itself.

  10. 10

    Continuous iteration

    Nothing was treated as finished.

The framework

The product-led SEO loop we took away

  1. 01

    Build

    Ship a product that gives people real value.

  2. 02

    Diagnose

    Find the product, technical and UX weaknesses.

  3. 03

    Structure

    Give the site a logical information architecture.

  4. 04

    Index

    Make important pages discoverable and understandable.

  5. 05

    Target

    Map pages to the search intent that fits the product.

  6. 06

    Publish

    Add supporting content that answers real questions.

  7. 07

    Promote

    Earn relevant authority and brand visibility.

  8. 08

    Improve

    Keep raising product quality, UX and performance.

  9. 09

    Defend

    Protect security and technical stability.

  10. 10

    Repeat

    Treat it as a growth system, not a campaign.

Takeaways

Lessons for SaaS teams

Keep product and SEO on the same team

In a product-led business the experience and the acquisition strategy shape each other. Splitting them costs you both.

Fix the foundation before scaling content

Architecture, technical health and indexation come first. Publishing into a broken structure just adds URLs.

Links are not the starting point

Build something worth referencing, then go earn the references.

Relevance beats volume

One relevant editorial placement can matter more than a batch of links chosen for their DR.

Rankings are not the finish line

More traffic creates new product, performance and infrastructure problems. We ran into all three.

The work compounds

Each fix made another fix more valuable. That is where the growth came from.

The biggest lesson was not a keyword, a link or a technical trick. SaaS SEO works best when the product and the search strategy improve together. The rankings followed because the whole system got better.

FAQ

SaaS SEO questions

(01)What is SaaS SEO?

It is the work of making a software product discoverable in search. In practice it covers technical SEO, information architecture, content, internal linking, authority building and the product experience itself.

(02)How does SEO work for a freemium product?

Organic search can drop someone straight into the free product, so a visit is not just a pageview. That makes product quality part of your SEO performance.

(03)Why does technical SEO matter so much here?

It decides whether Google can crawl, understand and index what you publish. It also surfaces the issues that quietly damage performance and user experience.

(04)How did you improve indexation?

We worked on page level metadata, internal linking, site architecture, URL relationships and the structure connecting important pages to each other.

(05)How does architecture affect a SaaS site?

A clear structure tells both people and crawlers how pages relate, and it keeps the pages that matter within easy reach.

(06)Should SaaS companies build backlinks?

Yes, but quality and relevance decide the outcome. We prioritized placements with a genuine topical relationship to the product.

(07)How important is content?

It widens your search coverage and meets people at different stages of the journey. It should support the product rather than turn the site into a content farm.

(08)How is product-led SEO different?

It ties organic acquisition to continuous product development, so the product becomes part of the growth loop instead of sitting downstream of marketing.

(09)How long does this take?

It depends on where you start, how competitive the space is, and the technical condition of the site. Here the growth arrived in stages rather than in one jump.

(10)Can a small SaaS compete with bigger sites?

Yes, when it builds real topical relevance, delivers genuine product value and develops authority with intent.

Next step

Building a SaaS that needs organic growth?

We build search growth systems that connect technical SEO, information architecture, content, authority and the product itself.