SEO Benchmarks for a Small SaaS: Build Your Own Baseline
Industry SEO benchmarks mislead small SaaS sites. Build a cohort-based baseline from your own Search Console data and learn which comparisons are valid.
TL;DR The only SEO benchmarks worth trusting on a small SaaS site are the ones you build from your own pages. Group pages into cohorts by age and type, compare each cohort against itself across equal periods, and track four stages in order: indexing, impressions, clicks, and qualified actions. If a cohort is too small to tell signal from noise, say so instead of pretending.
A founder sent me a screenshot last month. His blog's click-through rate was a fraction of the "B2B SaaS average" he had found in an industry report, and he wanted to know which of his twenty posts to rewrite first. I asked how old the posts were. Fourteen had been live for less than six weeks. Most of their impressions came from page-three positions where nobody clicks anything.
His CTR was not bad. It was early. He was comparing a batch of six-week-old posts on a brand-new domain to an average built from sites with years of rankings, thousands of pages, and a branded query stream he did not have yet. No rewrite would close that gap, because the gap was never about the writing.
That is the trap with SEO benchmarks for small sites. The number you compare against decides what you conclude, and most published comparisons are built for someone else.
Why SEO benchmarks from industry reports mislead a small site
Search for SEO benchmarks by industry and you will find tables of average CTR, average organic conversion rate, and average traffic growth by vertical. I am not going to quote any of them here, and that is the point. Each one is an average over a population of sites that looks nothing like a DR-5 SaaS blog in its first year.
Three things break the comparison:
Branded traffic. Established companies get a large share of clicks from people searching their name. Those queries rank at the top and click through at rates no informational post will match. If a report blends branded and non-branded queries, its CTR averages tell you about brand strength, not content. I covered why that split matters in branded vs non-branded keywords.
Page age. A post that has ranked for two years and a post that went live last Tuesday are not the same kind of object. Averaging them together hides the fact that new pages spend weeks being tested at deep positions before they settle.
Query mix. Average CTR and average position are both weighted by impressions. As I showed in how to read Search Console average position, a site that starts appearing for new long-tail queries can see its averages "drop" while its visibility grows. An industry average inherits whatever query mix its sample happened to have.
So I treat industry numbers as trivia. Useful for a conference slide, useless for deciding what to publish next week. What a small site needs is an SEO baseline: a record of how your own comparable pages behaved over comparable periods.
What a Search Console baseline actually measures
Google Search Console is the right data source because it is free, it is first-party, and it shows the stages before traffic. The Performance report gives you clicks, impressions, CTR, and position by query, page, country, and device, and lets you compare two date ranges side by side. It keeps 16 months of data, which matters: if you do not export your early numbers, the first months of your baseline eventually age out.
I track four stages, in order, because each one gates the next:
| Stage | Question it answers | Where to look |
|---|---|---|
| Discovery and indexing | Did Google accept the page? | Page indexing report and URL Inspection |
| Impressions | Is Google testing the page for real queries? | Performance report, filtered by page |
| Clicks | Are searchers choosing it? | Performance report, filtered by page |
| Qualified actions | Did the visit do anything for the business? | Your analytics or product events |
The order matters more than the numbers. A page with zero clicks and zero impressions has a different problem from a page with zero clicks and a thousand impressions. The first may not be indexed at all, and Google is explicit in How Search works that it does not guarantee it will crawl, index, or serve any page. The second is being shown and passed over. Treating both as "no traffic" leads to the wrong fix.
For the indexing stage, the dedicated guides on discovered, currently not indexed and crawled, currently not indexed cover the diagnosis. Here I only care about one baseline question: what share of pages in a cohort is indexed by a fixed age?
Qualified actions are the stage most founders skip. Define one or two that mean something for your product, like a demo request, a signup started, or a click to the pricing page, and count them per cohort. Micro conversions for SaaS content goes deeper on picking them.
Build cohorts, not sitewide averages
A sitewide number answers "how is the blog doing?" That question has no useful answer when half the blog is three weeks old. Cohorts fix this by making sure every comparison is between pages that had a fair chance to behave alike.
Split by age first
I use three buckets:
- New: live for fewer than 30 days. Expect indexing to still be settling and impressions to be sparse and volatile.
- Maturing: 30 to 90 days. Impressions should be accumulating if the page is going to rank at all.
- Mature: more than 90 days. This is the only group where click and conversion numbers start to mean something.
The cutoffs are my working convention, not a Google rule. Pick yours and keep them stable, because a baseline you redefine every month is not a baseline.
Then split by page type
A comparison page, a how-to tutorial, and a glossary-style definition post serve different intents and earn clicks differently. If you publish all three, keep them in separate cohorts. Lumping a bottom-of-funnel alternatives page in with informational posts will make the tutorials look weak on conversions and the comparison page look weak on impressions.
Compare like periods
Compare a page against its own earlier window of the same length, or compare cohorts at the same age. "Post A in its first 60 days" versus "Post B in its first 60 days" is valid. "Post A in its first 60 days" versus "Post B in its second year" is not. Search Console's date-range comparison makes the first kind easy, as long as you line up the windows by publish date rather than calendar month.
Which comparisons are valid
This is the part I wish someone had handed me earlier. The SEO reporting format decides how you lay the numbers out. This list decides which numbers are allowed to sit next to each other.
| Comparison | Valid? | Why |
|---|---|---|
| One page, two equal windows | Yes | Same page, same intent, only time changed |
| New cohort at day 60 vs last quarter's cohort at day 60 | Yes | Same age, similar conditions |
| Mature tutorials vs mature tutorials | Yes | Same type, same age band |
| New page vs mature page | No | Different stage of the ranking process |
| Sitewide CTR this month vs last month, after a publishing burst | Usually no | Query mix shifted, so the average shifted |
| Your blog vs an industry report average | No | Different sites, brands, and query mixes |
| Branded and non-branded queries in one CTR figure | No | Two populations with different behavior |
When a comparison fails this test, I do not try to adjust for it. I just do not make it.
Sample size: when the baseline says nothing
Small sites live with small numbers, and small numbers lie loudly. A post with 40 impressions and 2 clicks has a 5 percent CTR. One more click makes it 7.5 percent. That is not a trend; that is one person.
A few rules I hold myself to:
Do not report rates on tiny denominators. If a cohort has only a handful of clicks, report the raw counts and say the rate is not meaningful yet. I do not use a magic threshold, because the honest answer depends on how much a single event moves the number. If one click or one signup swings the rate by several points, the rate is noise.
Know what Search Console hides. Google states in its notes on Performance report data that some queries are anonymized and not shown to protect user privacy. On a small site, a meaningful share of long-tail impressions can sit in that hidden bucket, so per-query totals will not add up to per-page totals. Compare pages to pages and queries to queries, never one against the other.
Watch the edges of your window. The most recent days in the report can still be filling in, so I end comparison windows a few days before today rather than comparing a partial week against a complete one.
Write the caveat next to the number. A baseline row that reads "Maturing tutorials: 3 pages, 2 clicks total, rate not meaningful" is more useful than a confident percentage. It tells future-you not to act on it.
A worked example (illustrative numbers)
The numbers below are invented to show the method. They are not from a real site and are not targets.
A founder publishes six tutorials in March and six more in April. In June, she wants to know whether the April batch is doing worse.
| Cohort | Pages | Indexed by day 30 | Impressions, days 31 to 60 | Clicks, days 31 to 60 | Qualified actions |
|---|---|---|---|---|---|
| March tutorials | 6 | 6 | 2,100 | 38 | 3 |
| April tutorials | 6 | 4 | 900 | 11 | 1 |
The tempting read is "April's posts are worse, rewrite them." The cohort view says something more specific: two April pages were not indexed by day 30. Impressions per indexed page are lower too, but the first fix is the indexing gap, not the copy. Clicks and actions are too small to compare at all, and the table should say so in a note rather than present 1 versus 3 as a finding.
Notice also what she did not do. She did not compare April's day-31-to-60 window against March's calendar-month totals, and she did not hold either batch up to an industry CTR average.
From baseline to plan
A baseline is not the goal. It is the input to two decisions: which pages to fix, and what to publish next.
For the first, the cohorts show where a page has fallen behind its peers at the same age and stage. That is a much sharper refresh signal than "traffic is low." For the second, the baseline is what makes honest SEO forecasting possible. Once you know how your own new pages typically behave by day 60 and day 90, you can project the next batch from your history instead of from someone else's averages.
That second loop is the one I care most about, and it is why I am building Boomranq the way I am. The calendar it generates is meant to pick topics a low-authority site can actually win, and a cohort baseline is how you find out whether those picks are working. Plan by winnability, measure against your own comparable pages, adjust the next 30 days. Industry SEO benchmarks have no place in that loop.
If you take one thing from this: stop asking whether your numbers are good compared to everyone else. Ask whether this month's new pages are behaving better than last month's new pages did at the same age. That question has an answer, and the answer tells you what to do next.