Skip to content

As case study

SEO: from 12 clicks to 5K a quarter

How Royal Subz went from 12 search clicks in its first month to 5,000+ in three months, with no agency and no budget, and why I traded impressions for clicks.

Role

Founder · SEO

Timeline

Feb 2026 — Present

Status

Live

Live site

royalsubz.com/blog

SEO: from 12 clicks to 5K a quarter — cover screenshot

At a glance

5.01K
Clicks, last 3 months
203K
Impressions, last 3 months
2.7%
CTR, last 28 days
70%
Sales from organic search
01 · The constraint

The constraint

Running a SaaS reseller means your product catalogue is ChatGPT, Claude, Grammarly, Cursor — products backed by companies with world-class SEO teams and years of domain authority. Competing on “ChatGPT subscription” or “Claude AI pricing” is a dead end before it starts. OpenAI, Anthropic, and every major review site already own those keywords. Difficulty scores in the 80s. No route in.

The real question was different: what are people searching for that the official channels don’t answer?

The answer was in the friction I’d already built the product to solve. People in Bangladesh and South Asia weren’t searching “what is Claude AI” — they were searching “can I get Claude without an international card”, “how do I buy ChatGPT Plus cheap”, “does Claude have a student discount”. The official sites don’t address those questions. That gap was the opening.

02 · The foundation

The foundation

Before writing a single word of content, I audited the site — SEMrush and Ahrefs both. Four issues would have quietly blocked progress:

01

Static sitemap

Every new product and blog post required a manual sitemap edit to get indexed.

Fix

Built a Supabase edge function that generates the sitemap in real time from the live database. No manual edits ever again.

02

robots.txt blocking

Essential pages — products, blog posts — were blocked from Googlebot crawl entirely.

Fix

Unblocked all public-facing pages. Restricted only admin and auth routes.

03

Duplicate H1

One page had two H1 tags. Google picks one and ignores the rest of the structure.

Fix

Fixed the markup. One H1 per page, across the entire site.

04

2.4 MB JS bundle

Every page visit shipped the full JavaScript bundle — including code for all 40+ products — to the browser upfront.

Fix

Refactored to route-based code splitting. Unvisited sections never load. Faster first paint, better Core Web Vitals.

The most involved fix was performance. SEMrush flagged that every page visit was shipping 2.4MB of JavaScript to the browser upfront — the entire product catalog, all 40+ products, regardless of where the user landed. I refactored the build to split the bundle by route. Unvisited sections stay unloaded. Faster first paint, better Core Web Vitals score, and Google’s crawl budget goes further.

The sitemap fix got its own edge function. The original was static — every new product or blog post required a manual edit. I built a Supabase edge function that generates the sitemap in real time from the live database. /sitemap.xml now fetches current products, blogs, and pages on every request. No manual maintenance.

03 · The keywords

The keywords

The research phase used three tools and produced one insight. SEMrush and Ahrefs for volume and difficulty data. Keyword Tool IO for surfacing question-pattern variants — the “how do I”, “can I”, “is it worth it” long-tail variations that tools like Ahrefs often undercount.

The insight: a reseller can’t win on branded head terms, but it can win on the questions that friction creates. I filtered for keywords with real search volume and low-to-medium difficulty — the overlap a new domain can actually compete in. Then I looked at intent: not “what is X” but “how do I get X without Y” or “is X worth it for [my situation]”.

Claude student discount 2026
Informational Cost-sensitive buyer
ChatGPT Plus without international card
Informational Payment-blocked user
How to get ChatGPT Plus cheap
Informational Price-conscious buyer
Buy Cursor AI with bKash
Transactional Ready to purchase
Is Grammarly Premium worth it
Informational Pre-purchase evaluator

The first breakout came directly from this logic: “Claude Student Discount 2026” had real search volume, Anthropic’s site doesn’t answer it, and anyone searching it is close to buying. For months it drove more impressions than anything else on the site.

Today the best post is a different one, built on the same logic: “How to get Claude Pro cheap”. Over the last three months, the pages that bring the most clicks all answer a price question the official sites won’t:

PageClicksImpressionsCTRPosition
How to get Claude Pro cheap1,55777,4672.0%8.2
How to get ChatGPT Plus cheap1,20545,6782.6%9.0
Claude student discount49542,0761.2%12.2
How to get Adobe Creative Cloud cheap1498,5081.8%9.6
Claude AI (product page)1492,3776.3%10.4

The product pages are where intent shows. CapCut’s page is clicked by 13% of the people who see it and ChatGPT’s by 8%, against about 2% for the guides. And “royal subz” itself is now the top query by clicks, clicked 63% of the time: people search for the store by name.

04 · The content engine

The content engine

I built the blog publishing dashboard into the Royal Subz admin panel before writing the first post. The intent was simple: make the right structure unavoidable. Every blog has to clear every field before it goes live — not as a rule imposed after launch, but as a constraint baked into the interface.

Discoverability

Meta title
Meta description
Canonical URL
Slug

Social & Open Graph

OG title
OG description
OG image URL

Content structure

H1 title
Excerpt
Summary box (≥5 bullets)
Reading time
Author

Media

Featured image URL
Featured image ALT text

Taxonomy

Category
Tags

Internal linking

2× internal blog links
1× product page link
Sidebar CTA

The format matters as much as the keyword. Google doesn’t just index words — it reads structure. Summary box with at least five bullet points at the top. Meta title distinct from the H1. Canonical URL set. OG image with alt text. Two internal links to related posts, one link to the product being discussed. Sidebar CTA. Every post ships with all of it, or it doesn’t ship.

First blog published: March 27. Submitted to Google Search Console the same day via manual index request. Three weeks of silence. Then impressions started climbing — exponentially, not gradually.

There are now 17 posts. Since June 2026 a content writer has worked on them with me. Search Console counts 75 pages indexed and 48 not indexed.

05 · The CTR turn

From impressions to clicks

The first version of this case study ended with 39,900 monthly impressions and an honest problem: a 0.3% click-through rate. Almost everyone who saw a Royal Subz listing scrolled past it.

Impressions kept climbing, to 126,000 in the 30 days from mid-June. Then they fell, to about 51,000 by September. Over the same months, clicks rose from 186 a month to more than 1,800, and click-through rate from 0.3% to 2.7%. Average position barely moved, from 9.3 to 8.8. The site was not being shown to more people; more of the people it was shown to chose it.

Search impressions and clicks, month by month

Google Search Console, web search. Each bar is 30 days starting on the 16th of that month; the data begins on 16 February 2026, when I added Search Console.

Impressions

Clicks

All the numbers
30 days from Impressions Clicks CTR Avg position
16 Feb 2026 50 12 24% 43.7
16 Mar 2026 694 22 3.2% 10.7
16 Apr 2026 63,400 186 0.3% 9.3
16 May 2026 99,000 635 0.6% 9.2
16 Jun 2026 126,000 1,610 1.3% 10.4
16 Jul 2026 84,000 1,820 2.2% 10.1
16 Aug 2026 67,500 1,830 2.7% 9.5
16 Sep 2026 51,400 1,380 2.7% 8.8
Impressions peaked in June and have fallen since. Clicks rose almost tenfold from April to August anyway, because more of the people who saw a result chose it.

That trade is the right one for a store. Impressions don’t pay for anything. Clicks from people looking for a cheaper way to buy ChatGPT or Claude do: about 70% of Royal Subz sales start with a search.

06 · Outcomes

Outcomes

LIVE DATA · GOOGLE SEARCH CONSOLE VIA LOOKER STUDIO · UPDATES AUTOMATICALLY
Interactive — hover over the chart to explore data. Source: Google Search Console.
5.01K
Clicks, last 3 months

From 12 clicks in Search Console's first month, most of them me checking my own site.

2.7%
CTR, last 28 days

Up from 0.3% in April. Click-through, not reach, has been the focus since.

9.6
Avg position, last 3 months

From 43.7 in the first month. 8.8 over the last 28 days.

70%
Sales from organic search

Roughly seven in ten Royal Subz sales start with a search. SEO budget: $0.

What the numbers mean

The first version of this case study led with 39,900 monthly impressions and admitted a 0.3% click-through rate. Impressions kept climbing to a peak of 126,000 in the 30 days from mid-June, then fell to about 51,000. If impressions were the goal, the last four months would look like a decline.

They weren't the goal. Over the same period, clicks went from 186 a month to more than 1,800, and click-through rate from 0.3% to 2.7%. Fewer people see a Royal Subz result than in June; far more of them choose it. And search is where the business comes from: about 70% of sales start there.

07 · What I'd do differently

What I’d do differently

01

Start the content engine before launch

The site went live on 15 November 2025. The first blog post went live on 27 March 2026, more than four months later. I waited until the storefront felt "done." SEO compounds from day one, and those four months are indexing time I can't recover. Next time the content calendar starts the same week as the first commit.

02

Impressions are easier than clicks

Reaching 126,000 impressions a month felt like proof the strategy worked. But at a 0.3% click-through rate, 99.7% of the people who saw a listing scrolled past it. Impressions measure visibility, not intent. Once click-through became the focus, it climbed to 2.7% and clicks rose almost tenfold, even as impressions fell. I should have been treating the title and description as the product from the first post.

03

Mix in transactional keywords from the start

The first 8 posts were informational — "does X have a student discount", "is Y worth it." Good for impressions, weak for conversions. Transactional long-tail ("buy Cursor AI with bKash", "get ChatGPT Plus in Bangladesh") sits closer to purchase intent. I front-loaded the informational phase without realising I was building an audience that wasn't ready to buy. The early signal agrees: "capcut pro buy bkash" is clicked by 23% of the people who see it, against about 2% for the big informational posts. It's a small sample (99 impressions) at a better position (4), but it points the same way. Next time: transactional keywords in the mix from week one.

View live

See SEO: from 12 clicks to 5K a quarter in the wild

Visit royalsubz.com/blog →

Next case study

Support desk & AI agent

Read case study →