Blog
Your site search is a list of posts you haven't written
GENERATED · 872 words · EN→FI ✓

The cheapest list of real reader needs a young blog will ever get is not in a keyword tool. It is in your own search box, typed by people who already found you and still could not find what they came for. Most company blogs throw that list away every day. So, it turns out, do we.
Search Console shows strangers, site search shows guests
We argued recently that Search Console sets the agenda once an archive exists: the queries Google shows you for are a truer map of your subject than the brief you started with. That holds, but it describes people who have not met you yet. They typed something into Google, and you were one of ten candidates.
Site search is a different population. These are readers who landed on a post, decided the site was worth a second minute, and asked it a direct question. They are further along than any search visitor, and their question is phrased in their own words rather than in the shorthand people use on Google. When that question returns nothing, you have learned something no external tool can tell you: a need that a qualified reader brought to your door, and that your archive turned away.
That is why we rank it ahead of keyword research for a young blog. A keyword volume is an estimate about a crowd. A failed search on your own site is one specific person, already interested, telling you what is missing.
The measurement is free and usually switched off
Google Analytics 4 already does most of the work. Its enhanced measurement documentation describes an event called view_search_results, fired "each time a user is presented with a search results page, as indicated by the presence of a URL query parameter", and it recognises five parameter names out of the box, including q and s. The term itself lands in a Search term dimension. If your blog runs on a common platform, the plumbing is probably there and nobody has looked at the report.
Notice what that event records, though. The documented parameters carry the query, not the outcome. The default setup tells you what people asked, not whether the page they got back held anything. The single most useful fact, that a search came up empty, is something you have to add yourself, usually by sending the result count alongside the term. Without it you have a list of interests. With it you have a list of failures, and failures are the editorial agenda.
Read the log before you trust it
We concede the limits, because they are real. On a blog with a few hundred visitors a week, site search is used by a small fraction of them, so the log is thin and a single curious visitor can look like a trend. Read it over a quarter, not a week, and give a repeated query more weight than a striking one.
A zero-result search is also not always a missing post. Sometimes the post exists and the search cannot find it. Ours is a fair example: the search on this site matches titles, slugs and meta descriptions, not the body text, so a reader typing a phrase we use in the third paragraph of a post gets nothing back. Fix the matcher before you commission the article, or you will write a duplicate of something you already have.
And people type things into search boxes that were never meant to be stored: names, email addresses, the odd order number. Log the terms, strip anything that looks personal, and keep the retention short. A list of needs does not require a list of people.
What we found when we checked our own
Writing this post meant looking at our own setup, and the honest answer is that nobody was reading anything. Affinero's header carries a search link, the results page reads a q parameter, and no analytics run on the site at all. Every question a reader typed into it has gone unread since launch. We cannot tell you what our visitors searched for, because we never set anything up to tell us.
That is an embarrassing thing for a company that sells an archive-building engine to admit, and it is exactly the gap this post describes. The fix is small: record each query with its result count, drop anything resembling personal data, and read the empty ones once a month alongside Search Console. We have put that on our own list rather than pretend it was always there.
Treat the empty result as a brief
The argument comes down to this. A blog that only listens to search engines is writing for strangers. A blog that also reads its own failed searches is writing for the readers it already won, in their words, about the thing they could not find. One reader's empty result is weak evidence. The same empty result three times in a quarter is a brief, written by the people you most want to keep, and it costs nothing but the decision to look. For a new archive, that list deserves to sit above the keyword tool, next to the question every post should answer first: what did someone actually need.