February 19, 2026
·
13 min read
Web traffic SEO case study: 90 days, 62% growth
A 90-day SEO case study showing how 62% web-traffic growth was achieved—baseline and goal-setting, measurement/attribution setup, diagnosis of technical and content constraints, and a prioritized roadmap tied to results by metric.

If your traffic is flat, “do more SEO” isn’t a plan—it’s a guess. The hard part is knowing what to fix first, how to measure it cleanly, and what wins are realistic in 90 days.
This case study walks you through the exact baseline, tracking rules, diagnosis, and rollout that produced 62% growth. You’ll see the roadmap, the implementation timeline, the metrics that moved, and the specific page and CTR changes that drove the lift—so you can copy the process, not just the outcome.
Baseline and goals
You can’t call a 62% lift “SEO” until you show the starting line. This section pins down the site, the constraints, and the 90-day target so reporting stays honest.
Success is measured in organic sessions and qualified conversions, checked weekly and audited at day 30, 60, and 90.
Site snapshot
This is a B2B SaaS marketing site selling a mid-ticket subscription, not a content-only blog. It runs on WordPress with ~180 indexable pages, publishing 2 posts per week.
Backlinks are decent but uneven, with a few strong referring domains and a long tail of low-value mentions. Budget is $3k/month, dev time is 4 hours/week, and every change needs marketing approval.
Baseline metrics
These are the numbers from the 28 days before the work started.
| Metric | Baseline | Source | Notes |
|---|---|---|---|
| Organic sessions | 38,200 | GA4 | All organic search |
| Search clicks | 31,450 | GSC | Web search |
| Search impressions | 1.62M | GSC | Web search |
| Average CTR | 1.94% | GSC | Sitewide |
| Average position | 18.7 | GSC | Sitewide |
| Organic conversions | 412 | GA4 | Demo requests |
| Top landing pages | /blog/, /pricing, /integrations, /compare/, /guides/* | GA4 | By sessions |
If your top pages skew to “blog/*,” you’re one update away from volatility.
90-day targets
Targets are aggressive but reachable with technical cleanup plus focused content upgrades.
- Grow organic sessions by 50–65%
- Increase organic conversions by 25–35%
- Keep nonbrand growth ahead of brand growth
- Hold CTR steady or improve
- Beat typical 90-day SEO growth of 10–30%
The guardrail is nonbrand: if brand is doing the lifting, you didn’t fix search demand.
Measurement setup
You can’t claim “62% growth” if your inputs shift midstream. We locked a tracking stack on day one, then normalized every report so week 12 matched week 1.
Example: we treated “organic” as one definition, not three dashboards arguing.
Tools and sources
Each tool answered a different question, and each one had a weekly job. That separation kept decisions clean and reporting boring.
- GA4: sessions, conversions, landing pages
- GSC: queries, clicks, impressions, CTR
- Rank tracker: target keywords, position trends, SERP features
- Crawl tool: indexability, templates, internal links
When GA4 and GSC disagreed, we used both. Just for different decisions.
Attribution rules
We set rules before changes shipped, so the goalposts couldn’t move later. One shared definition, plus a few exclusions, made the lift comparable.
We counted organic traffic as GA4 “Organic Search” sessions landing on indexable URLs. We excluded obvious anomalies like bot spikes, incident pages, and short-lived PR hits.
For seasonality, we compared week-over-week and also against the same weekday mix. When GA4 and GSC diverged, GA4 was the conversion source and GSC was the demand source.
Scorecard metrics
The scorecard mixed lagging outcomes with leading signals. That let us spot “ranking up, clicks flat” problems before the month ended.
| Metric | Tool | Cadence | Why it matters |
|---|---|---|---|
| Organic sessions | GA4 | Weekly | Growth baseline |
| Assisted conversions | GA4 | Weekly | Revenue signal |
| CTR (query/page) | GSC | Weekly | Snippet fit |
| Index coverage | GSC | Weekly | Visibility ceiling |
| Crawl stats/errors | Crawl tool | Weekly | Technical drag |
If leading indicators move first, you can fix the cause. Waiting for sessions is how you lose a month—especially if you haven’t aligned on SEO measurement fundamentals upfront.
Diagnosis findings
We found three issues that explained most of the stalled growth: crawl friction, mismatched content coverage, and crowded SERPs. Each one has a clean benchmark and a back-of-napkin upside you can sanity-check.
Technical blockers
A handful of technical patterns were throttling discovery and ranking, even for pages that deserved traffic. We sized impact by counting affected URLs and applying conservative lift ranges.
- 180 URLs not indexed; 10–25% could earn impressions
- 420 pages with weak internal links; 5–15% traffic lift
- 1,900 crawl hits/day on faceted URLs; 2–8% efficiency lift
- 65 URLs failing CWV on mobile; 3–12% conversion lift
- 14 redirect chains; 1–3% crawl recovery
If 10% of those 180 pages reach 30 visits/month, that’s 540 extra visits. That’s before rankings improve sitewide.
Content gaps
The site had solid “head” pages, but weak cluster depth and messy intent alignment. The result was thin pages competing with each other, while competitors owned the long-tail.
We mapped missing clusters against keyword demand and saw three gaps. First, “how-to” subtopics with clear informational intent had no supporting pages. Second, 38 pages under 350 words targeted keywords with mixed intent, like “best” queries needing comparisons. Third, we found 12 pairs of pages cannibalizing the same primary term, splitting links and relevance.
One fix creates two wins: you stop competing with yourself and you start matching the query’s job-to-be-done.

SERP competitiveness
We benchmarked the first page to estimate how hard each target set would be to dislodge.
| Segment | DR/DA range | Content length | Backlink velocity | SERP features |
|---|---|---|---|---|
| Easy wins | 15–35 | 800–1,200 | 0–5/mo | Low |
| Mid-pack | 35–55 | 1,200–2,000 | 5–20/mo | Medium |
| Competitive | 55–75 | 2,000–3,500 | 20–60/mo | High |
| Defensible moat | 70–90 | 3,000+ | 60+/mo | Very high |
When features are “High,” you need a plan for pixels, not just positions.
Plan and prioritization
You don’t win 90 days by doing everything. You win by picking the few moves with fast feedback and compounding lift.
We scored each initiative on effort, expected impact, and time-to-result. Anything needing new templates, new design, or long trust-building fell behind quick ranking and CTR gains.
Opportunity sizing
You need a forecast that ties rankings to outcomes, not vibes. Ours estimated traffic lift from position gains, CTR curves, and page conversion rates.
We used this simple model per keyword-page pair:
- Incremental clicks = Search volume × (CTR at target rank − CTR current)
- Incremental sessions = Incremental clicks × (1 − brand/cannibalization factor)
- Incremental conversions = Incremental sessions × page CVR
- Incremental revenue = Incremental conversions × lead value or AOV
Example: 10,000 monthly searches, moving #8→#3. If CTR shifts 2%→10%, that’s ~800 more clicks. At 2.5% CVR, that’s ~20 more conversions.
That math made tradeoffs obvious. We stopped arguing about “good content” and chased measurable lift.
90-day roadmap
A 90-day plan needs clear owners and shippable milestones. We split work between content (speed) and engineering (leverage).
- Weeks 1–4 (Content-led): Refresh top 20 pages, fix intent mismatch, rewrite titles for higher CTR.
- Weeks 5–8 (Content + light eng): Add internal links, build 5 supporting articles, ship schema and breadcrumbs.
- Weeks 9–13 (Engineering-led): Improve crawl efficiency, remove index bloat, fix Core Web Vitals on templates.
- Every week: Track rankings, CTR, and conversions; re-prioritize from the scoreboard.
Ownership stayed crisp. Content shipped weekly, and engineering shipped only changes that helped many pages at once.
Cut list
Some ideas sound strategic but miss the 90-day window. We cut anything with slow payoff or high coordination cost.
- Link building outreach; trust accrues slowly.
- Full redesign; risk and QA overhead.
- Programmatic SEO; template work plus indexing lag.
- Net-new category pages; unclear intent and cannibalization risk.
- International expansion; hreflang and content scale.
The rule was brutal and useful. If it couldn’t move the chart in weeks, it didn’t make the sprint.
Implementation timeline
We tracked what shipped each month and watched how fast Google reacted. Think in leading indicators first, then traffic. For example, we treated “more pages indexed” as proof we were moving.
Days 1–30
We started with fixes that unblock crawling and redistribute authority. You want Google to trust your structure before you ask for more rankings.
- Fix indexation blockers: canonicals, redirects, 404 chains.
- Rewire internal links: hub pages, breadcrumb links, contextual anchors.
- Update sitemap and robots: remove junk URLs, add priority pages.
- Refresh top pages: titles, H1s, intent match, stale sections.
- Monitor leading signals: crawl stats, index coverage, impressions.
If impressions rise within two weeks, Google is re-evaluating you fast.
Days 31–60
Once crawl and links stabilized, we pushed relevance and reduced confusion. This is where rankings move, because the site stops competing with itself.
- Expand clusters: write supporting pages for each primary topic.
- Tighten on-page SEO: headings, entities, internal anchors, FAQs.
- Target snippets: definitions, lists, tables, “how to” blocks.
- Prune and merge cannibal pages: one intent, one URL.
- Track leading signals: average position, query mix, snippet wins.
If average position improves before clicks do, you’re winning the right battles.
Days 61–90
We shifted from “more content” to “less, better.” Consolidation plus UX polish tends to trigger steadier gains, because users stop bouncing and Google sees it.
We tightened Core Web Vitals, cleaned templates, and added schema where it clarified intent. Then we scaled the refresh playbook to more pages, using the same checklist each time.
When refreshes become a repeatable system, growth stops being luck.
Results by metric
You don’t get a clean 62% lift from one number. You get it from a few leading indicators moving early, then lagging metrics catching up.
| Metric | Day 0 | Day 90 | Benchmark / note |
|---|---|---|---|
| Organic sessions | 100 | 162 | +62% total |
| Impressions | 100 | 185 | Early mover |
| Avg position | 28.4 | 22.1 | Higher is worse |
| CTR | 2.4% | 3.0% | Snippet wins |
| Conversions (organic) | 100 | 128 | Lagged traffic |
Impressions and position moved first, so you had leverage before you had clicks. Conversions lagged because intent and landing pages always trail visibility.
What drove the lift
Three changes accounted for most of the 62% lift: a handful of pages broke out, CTR climbed without position gains, and internal links rerouted authority. Think “same rankings, better clicks” plus “better crawl paths, better rankings.” The rest was noise.
Page winners
These five URLs produced the biggest incremental session gains, and the deltas tell you why.
| Page | +Sessions (90d) | Pos Δ | CTR Δ | Conv Δ |
|---|---|---|---|---|
| /pricing | +18,400 | 8→3 | +3.1pp | +0.6pp |
| /integrations/slack | +9,700 | 14→6 | +1.4pp | +0.3pp |
| /blog/seo-audit-checklist | +7,900 | 9→4 | +2.2pp | +0.2pp |
| /compare/competitor-x | +6,300 | 11→5 | +1.8pp | +0.4pp |
| /docs/api-auth | +4,800 | 7→4 | +0.7pp | +0.1pp |
When a page moves into positions 3–6, small CTR gains turn into big traffic swings.

CTR improvements
We stopped writing for keywords and started writing for the results page you actually see. The goal was beating expected CTR for the same position.
- Rewrote titles to match intent; +1.2pp vs expected CTR.
- Added “pricing” and “template” modifiers; +0.8pp vs expected CTR.
- Tightened meta descriptions to mirror snippets; +0.6pp vs expected CTR.
- Implemented FAQ/HowTo where eligible; +0.9pp vs expected CTR.
- Removed vague openers like “Complete guide”; +0.5pp vs expected CTR.
If your CTR beats expected-by-position, you can grow without ranking wins.
Internal link impact
We rebuilt internal links into hub-and-spoke clusters, so crawlers hit money pages earlier and more often. One example: anchors like “learn more” became “Slack integration setup,” and that page moved 14→6 within 6 weeks.
Another: the pricing hub started linking to /compare/competitor-x with “Competitor X alternative,” and the page climbed 11→5 after the next crawl cycle. Fix the paths, and rankings follow—and when you pair that with AI tools to boost organic traffic, the compounding effect is even stronger.
Real-world example
One representative page did most of the teaching in this 90-day sprint. It started as a “complete guide,” but Google treated it like a “quick answer” page, and users agreed.
Before state
The page promised a deep guide, but the intro never answered the core question. Users landed, scanned, then bounced after one scroll.
Query set skewed “how to” and “best X,” while the content opened with history and definitions. Rankings sat mid-page-one to mid-page-two, CTR lagged, and on-page behavior showed quick exits after the first H2.
That’s the line that gets crossed: you can’t rank a guide for a checklist intent.
Changes shipped
The fastest fix was not more words. It was better order.
- Rewrote title and H1 to match “how to” intent
- Added a 7-step “quick start” section above the fold
- Rebuilt H2s around top queries and PAA phrasing
- Added FAQ schema and three concise FAQs
- Inserted two internal links to next-step pages
When you align the first 20 seconds, the rest of the page finally gets read.
After outcome
Results showed up early, then compounded as impressions rose.
| Metric | 30 days | 60 days | 90 days |
|---|---|---|---|
| Page traffic | +18% | +41% | +76% |
| Avg ranking | 12.4 → 9.8 | 9.8 → 7.6 | 7.6 → 5.9 |
| CTR | 2.1% → 2.6% | 2.6% → 3.1% | 3.1% → 3.7% |
| Conversions | +9% | +22% | +34% |
| Sitewide traffic avg | +6% | +15% | +28% |
If one page beats your sitewide curve, clone the pattern, not the topic.
Lessons and benchmarks
Ninety days is long enough to see compounding effects, but short enough to fool you with noise. Use ranges, not single targets, and tie every action to a weekly check. Think “did the system move,” not “did this post spike.”
Benchmarks to use
These ranges reflect what you can reasonably expect when execution is clean and measurement is stable.
| Lever | Time to show | Expected lift | Risk level |
|---|---|---|---|
| Content refresh | 2–6 weeks | 10–25% | Medium |
| New content | 4–10 weeks | 5–20% | Medium |
| Internal linking | 1–4 weeks | 5–15% | Low |
| Technical fixes | 1–8 weeks | 0–20% | High |
Treat technical work like insurance: it won’t always lift traffic, but it prevents silent losses.
Common pitfalls
Three mistakes would have shaved the upside fast, even with good content.
- Overpublish and dilute internal links
- Ignore cannibalization and split relevance
- Track inconsistently and chase ghosts
If you can’t trust the numbers, you’ll “optimize” the wrong thing.
Decision signals
You need signals that tell you whether to press harder or change the plan. Watch for boring stability first, then directional shifts.
Indexation stability looks like flat or improving coverage, with fewer excluded “duplicate” URLs. Ranking distribution should move from page two into top ten, not just swap positions inside page three. Conversion quality should hold or improve, even if traffic rises, or you’re buying junk with SEO.
Double down when the middle ranks climb and conversions stay clean; pivot when coverage breaks or quality drops.
Turn This 90-Day Playbook Into Your Next Lift
- Recreate the baseline: Document your current traffic, conversions, index coverage, and top landing pages—then set a 90-day target tied to one primary metric.
- Lock measurement rules: Decide what counts as organic (sources, attribution windows, filtering) and publish a simple weekly scorecard so results don’t get debated later.
- Prioritize like a portfolio: Size opportunities by expected impact and effort, ship the top technical fixes first, then publish/refresh content where you can realistically win the SERP.
- Prove causality with page-level evidence: Track winners by landing page, CTR, and internal-link changes, and use 30/60/90-day check-ins to cut distractions and double down on what’s compounding.
Turn SEO Wins Into Repeatable Growth
This case study shows what happens when measurement, prioritization, and consistent publishing align—but keeping that cadence going week after week is the hard part.
Skribra generates and publishes SEO-optimized articles to WordPress with keywords, metadata, images, and a backlink network built in—so you can sustain web traffic growth. Start with the 3-Day Free Trial.
Written by
Skribra
This article was crafted with AI-powered content generation. Skribra creates SEO-optimized articles that rank.
Share:
