Why internal search is the most honest user survey
Every other analytics metric is an interpretation. A high bounce rate suggests a page did not fit - why remains open. A scroll trace shows how far someone got - not what they were looking for. The search field, by contrast, delivers a phrase the visitor chose themselves. It is the one place on a website where users voluntarily leave text without a form, an incentive or a consent dialogue standing in the way.
Benchmark data from search research shows how wide the gap between expectation and offering usually is. Across more than 170 benchmarked sites and apps with over 10,000 performance ratings, 56 percent of providers have substantial trouble serving their users' search needs (Baymard Institute, E-Commerce Search UX Research). It becomes most obvious outside the product catalogue: for searches covering non-product content - shipping, returns, invoices, contact - 66 percent of sites have issues (Baymard Institute). And those searches are anything but marginal: in usability testing on accounts and self-service, 34 percent of participants used the search field to look for non-product content (Baymard Institute).
Almost half the users whose first search failed gave up immediately.
— Nielsen Norman Group, Site Search Usability
That also shows how little time a search function is given. Success drops with every attempt: 51 percent of first queries reach the goal, the second manages 32 percent, the third only 18 percent (Nielsen Norman Group). Anyone landing on a zero-result page rarely rephrases patiently - they leave. This is why internal site search analytics is not an SEO side exercise but a revenue question. It shows exactly where demand meets an empty result.
In intranet settings, search quality counts as a hard economic factor: search usability accounted for 43 percent of the productivity difference between intranets with high and low usability (Nielsen Norman Group). And motives have shifted - in a replication study on information-seeking behaviour, 40 percent of respondents named understanding as their goal, 36 percent comparing and choosing, 24 percent acquiring (Nielsen Norman Group, 498 responses analysed). Searchers want to understand more often than merely to find.
Capturing search terms first-party, without personal data
Technically there are two ways to capture search terms, and both work without cookies and without recognising individuals. The first is the query parameter: classic search forms submit via GET, so the term ends up in the URL, typically as ?q=, ?s=, ?search=, ?query=, ?suche= or ?term=. Since a page view is recorded anyway, the term can be extracted from the path server-side. No extra script, no extra request - one reason why internal search reporting is among the metrics that stay fully available with cookieless first-party analytics.
The second route is an explicit event. Instant and AJAX searches no longer change the URL, or only via the History API, and overlay searches in single-page applications produce no classic page view at all. Here a small piece of JavaScript reports the term together with the result count. Timing matters: firing on every keystroke turns w, wa, was, wash into four records and distorts every ranking. A debounce of roughly 700 to 900 milliseconds plus a minimum length of three characters delivers stable results in practice (project experience).
// Instant search: only report once results have actually been rendered
let timer;
searchInput.addEventListener('input', () => {
clearTimeout(timer);
timer = setTimeout(() => {
const term = searchInput.value.trim();
if (term.length < 3) return;
renderResults(term).then((count) => {
xictraq.event('site_search', {
term: normalise(term), // lowercased, trimmed, patterns masked
results: count, // 0 = zero results
page: location.pathname
});
});
}, 800); // Debounce: no event per keystroke
});
// Masks anything that looks like personal data
function normalise(t) {
return t.toLowerCase()
.replace(/[\w.+-]+@[\w-]+\.[a-z]{2,}/g, '[email]')
.replace(/\b[a-z]{2}\d{2}[a-z0-9]{10,}\b/g, '[iban]')
.replace(/\b\+?\d[\d /-]{7,}\b/g, '[number]')
.slice(0, 80);
}The second field is the decisive one: the result count. Without results the key metric of this article cannot be formed at all, because a term on its own does not reveal whether it ran into nothing. If the count is hard to obtain from the front end, mark the results page instead - for example with a dedicated body attribute or an extra parameter the server sets when there are zero hits.
| Capture route | What arrives | Typical pitfalls |
|---|---|---|
| Query parameter (GET) | Term from the URL, parsed server-side, no extra script | Reloads and pagination count twice; sort and filter parameters dilute the terms |
| JS event on AJAX search | Term plus result count, even without a URL change | Without debouncing you collect typing fragments; the event fires before results render |
| POST form | Only capturable via an event, nothing appears in the URL | Easily overlooked during a relaunch and then fails silently |
| Autocomplete selection | Click on a suggestion instead of submitting | Without its own event, all suggestion usage is missing from the statistics |
For the analysis itself: lowercase the terms, trim whitespace, collapse double spaces. Without this normalisation, Spare parts, spare parts and spare parts appear as three separate rows, and actual demand is systematically underestimated. A character limit helps as well - anything beyond 80 to 120 characters is almost never a search term but a pasted block of text.
When personal data accidentally ends up in the search box
Search boxes are free-text fields, and free-text fields eventually receive content that does not belong there. In practice you find email addresses, because someone mistook the search box for a login form. You find order and customer numbers, phone numbers, occasionally entire address lines from the clipboard - and in rare cases passwords, when focus sat in the wrong field. A harmless analysis field thereby becomes a data protection topic, because a search term is personal data as soon as it makes a person identifiable.
The data minimisation principle in Article 5(1)(c) GDPR requires processing only the data necessary for the purpose. For internal search reporting that is the term itself - not the person behind it. Patterns such as email addresses, IBAN-like strings and long digit sequences can be masked before the request leaves the browser; pattern detection is not a perfect defence, but it lowers the risk considerably. In addition, reports should only display terms above a minimum frequency, so a one-off entry does not appear verbatim in a ranking.
- Mask before sending - replace patterns for email, IBAN, phone numbers and long digit chains in the client so they are not transmitted
- Set a length limit - truncate or discard entries beyond 80 to 120 characters, they are practically never genuine queries
- Use a frequency threshold - show terms in reports only from several searches upwards; rare entries remain in the totals, not in plain text
- No linking to profiles - do not bind search terms permanently to a visitor identifier, keep them as an aggregated series
- Limit retention - delete raw data after a defined period and keep only the aggregates
- Document the processing - record search analysis as its own processing activity, including purpose, retention and masking logic
Solved cleanly, search reporting runs without a consent banner, because no cookies are set and no devices are recognised - the same logic that applies to GDPR-compliant website analytics in general. Anyone already working on evidence obligations, for instance around NIS2 registration with the German BSI, should add search analysis to the same documentation straight away: describing a processing activity from the start is easier than retrofitting it later.
The metrics that actually matter
A ranking of the most frequent terms is a start, but not a steering instrument. Only five metrics turn that list into a basis for decisions - and four of them require the result count and the rest of the session to be measured as well.
Share of sessions with at least one internal search. If the value rises after a navigation rebuild, that is a signal that people no longer understand the structure.
Share of searches without results, measured against all searches. The single most important number in this report, because every zero-result query is a concrete, unanswered demand.
Share of searches followed by another search in the same session. High values mean the first answer did not hold - matching the drop from 51 to 32 percent in success rate (Nielsen Norman Group).
Share of sessions ending after a search. The combination of a high zero-result rate and a high exit rate marks the most expensive terms.
Goal completions in sessions with search compared to sessions without. The difference shows whether search is an accelerator or a workaround for weak navigation.
Time between results appearing and the first click within them. Long delays point to unclear result presentation, not necessarily to wrong results.
For interpretation: absolute values say little, because sector, catalogue breadth and navigation quality vary widely. What is meaningful are comparisons - between terms, between periods and between sessions with and without search. An online shop with a deep catalogue naturally has a higher search share than an eight-page company website; what counts is the direction the value moves after a change.
| Metric | Calculation | What it indicates |
|---|---|---|
| Search share | Sessions with search divided by all sessions | Navigation quality and catalogue depth |
| Zero-result rate | Searches with zero results divided by all searches | Content and range gaps, missing synonyms |
| Refinement rate | Searches with a follow-up search divided by all searches | Result quality and ranking of the result list |
| Exit rate after search | Session endings after a search divided by all searches | Points of frustration and weak zero-result pages |
| Conversion with and without search | Goal completion rate of both groups compared | Economic value of the search function |
Linking to the goal is the point at which search reporting leaves the reporting corner. If sessions with search measurably convert more often, every improvement to search becomes assessable - and can be handled in the same logic as the rest of your conversion tracking without third-party scripts.
Reading zero results: from query to content gap
The zero-result list is the most valuable page of any search report, because it holds demand without supply. The most common mistake is the quick conclusion that the product or content is simply missing. In practice, zero results fall into four cause classes that trigger entirely different measures.
- Genuine gap - the requested content or article does not exist. Action: extend the range or content, or deliberately decline the demand and offer an alternative.
- Naming gap - the content exists but is called something else internally. Action: add the synonym to the search index, adjust category names.
- Spelling gap - typos, hyphen variants, singular and plural, transliterated umlauts. Action: fault tolerance and normalisation in the index.
- Expectation gap - people search for something the company does not offer at all. Action: no product change, but a clear statement on the results page.
The zero-result page itself is a lever of its own and is consistently underrated: around 50 percent of shops design their pages for empty searches in a way that creates frustration and abandonment (Baymard Institute). A good zero-result page repeats the query, explains in one sentence why nothing was found, offers the closest alternatives and keeps a direct route to contact. What it should not do: show an empty list and leave users wondering whether they made a typo.
Terms such as invoice, cancellation, spare part, complaint or opening hours are not noise in the search index, they are service demand. This is exactly where 66 percent of sites have issues (Baymard Institute) - even though 34 percent of test participants use the search box for such content (Baymard Institute). Finding these terms in your zero-result list gives you a ready-made task list for the help centre and FAQ.
Assignment becomes easier when every row carries a hypothesis and an action. Such a table can be filled in half an hour and replaces the usual debate about who ought to take care of search.
| Zero-result term | Assumed cause | Action |
|---|---|---|
| invoice download | Naming gap: internally called document archive | Direct link in the account plus synonym in the index |
| cancel contract | Genuine gap: no dedicated help article exists | Create a help article and anchor it in the navigation |
| spare part filter | Spelling gap: catalogue lists filter element | Extend the synonym list, map singular and plural |
| instalments | Expectation gap: not offered | Clear statement on the results page plus alternative |
Prioritising synonyms, typos and diverging category names
After the first analysis you typically have several hundred terms on the table, and most of them are one-offs. Without prioritisation that becomes a list nobody works through. A simple ranking from three factors has proven itself: search volume, zero-result rate and the commercial relevance of the underlying topic. A term with 300 searches and a 70 percent zero-result rate beats twenty terms with five searches each - even if those twenty fill more rows in the spreadsheet (project experience).
Which query types fail most often is well documented. Hardest are abbreviations and symbols, where 54 percent of sites have issues; then come compatibility searches at 44 percent, use case searches at 43 percent, feature searches at 39 percent and symptom searches at 37 percent (Baymard Institute). Searches for the plain product type fail markedly less often at 20 percent, exact searches for a product name least often at 12 percent (Baymard Institute). That order tells you where synonym work pays off most: not on the exact name, but on the paraphrase.
- Sort by volume - order all terms from the last 30 to 90 days by search count, merging spelling variants first
- Mark zero results - annotate every row with its result rate; handle terms above 50 percent zero results first
- Weight exits - prioritise terms after which the session ends over those followed by another search
- Assign a cause - allocate every row to one of the four gap classes so the action is unambiguous
- Book the action - create a synonym, help article, landing page or range decision as a concrete task with a deadline
- Measure the effect - repeat the same analysis 30 days later and compare the term's zero-result rate
Fault tolerance is worth having for typos, but in moderation. A deviation of one to two characters catches the most common slips. On short article and type numbers the same tolerance causes damage, because it merges two entirely different items. A sensible rule therefore allows fault tolerance only from a word length of around five characters and excludes purely numeric input.
The third category is diverging category names - in-house jargon. Ranges are named internally by merchandise group, customers search by occasion and problem. Search reporting is the cheapest way to learn that translation, because it delivers customer language for free. A side effect: these terms make a good starting point for keyword work, but should not be adopted unchecked, since internal searches carry different volume and intent than search engine queries. Aligning with automated technical SEO monitoring prevents pages that nobody outside the website is looking for.
Turning top search terms into navigation, landing pages and FAQ
When a term sits permanently in the top ten, it is no longer a search topic but a navigation topic. Users search because they cannot find the route - not because they prefer the search box. The practical rule is therefore: terms with high volume and good result coverage belong in the navigation or on their own landing page; terms with high volume and poor coverage belong in the index first and in the navigation second.
That placement changes behaviour is well documented: when a link on a well-known test site was replaced by a visible search box, search usage rose by 91 percent (Nielsen Norman Group). The reverse holds for navigation elements - a prominent entry point for a frequently searched topic noticeably relieves the search function. Order matters: close the gap first, then create the entry point. A landing page pointing at a half-empty search index only moves the problem.
- Review the top ten - every term that stays at the top for three months in a row gets a fixed entry point in navigation or footer
- Bundle service terms - route invoice, cancellation, complaint and spare parts into a visible help area instead of the search box
- Build the FAQ from questions - take queries phrased as questions one to one as FAQ entries and keep the user's wording
- Justify landing pages - create a new page only when a term shows sustained volume, not after a single outlier
- Keep search on the results page - prefill the search field on the results page with the entered term so rephrasing does not start from zero
With search suggestions, restraint is advisable. In an e-commerce study, offered suggestions were selected in only 23 percent of the instances where they appeared at all - 31 selections out of 136 impressions, with a margin of error of 7 percent (Nielsen Norman Group). Elaborately enriched suggestion lists therefore rarely justify their development effort. What matters more is the quality of the first results: in eyetracking research, users make do with the first result and look no further 20 percent of the time (Nielsen Norman Group).
Query length argues for simplicity too: the mean query in those studies consisted of 2.0 words (Nielsen Norman Group). Designing an index around long, precise phrasing optimises past reality. Two words have to be enough to hit the right category.
A special case arises when classic search is replaced or complemented by an AI assistant. Not only does the data change - queries become longer and more conversational - so does the legal classification: from August 2026 such dialogue functions carry their own disclosure duties, described in detail in the article on the transparency obligation for website chatbots.
Checking the results page for accessibility and load time
The results page is the most frequently visited page that is least frequently tested. It is generated dynamically, has no fixed URL in the menu and therefore drops out of most review routines. Yet it touches several requirements of the Web Content Accessibility Guidelines, available in version 2.2 as a W3C Recommendation since 12 December 2024 (W3C, WCAG 2.2).
- 2.4.5 Multiple Ways (AA) - more than one way must lead to a page; internal search is one of those ways and only counts if it works (W3C, WCAG 2.2)
- 3.3.2 Labels or Instructions (A) - the search field needs a programmatically associated label, placeholder text alone is not enough (W3C, WCAG 2.2)
- 2.5.3 Label in Name (A) - the accessible name of the button must contain the visible text so voice control works (W3C, WCAG 2.2)
- 4.1.3 Status Messages (AA) - with instant search the result count must be announced as a status message without moving focus (W3C, WCAG 2.2)
- 1.3.5 Identify Input Purpose (AA) - input fields collecting information about the user must convey their purpose programmatically (W3C, WCAG 2.2)
That form elements are a persistent problem is shown by the analysis of the home pages of the one million most visited domains: 51 percent of pages were missing labels for form inputs, and 95.9 percent of home pages had automatically detectable WCAG failures, averaging 56.1 errors per page (WebAIM Million 2026). A search field without a label is statistically the rule rather than the exception - and it is one of the fastest findings to fix. How to keep such regressions in view permanently is covered in the article on the most common WCAG errors on business websites; the ongoing check is handled by accessibility monitoring.
The second blind spot is load time. Results pages often render client-side, load filters afterwards and shift content while hits arrive. The Core Web Vitals thresholds apply here exactly as on the home page: 2.5 seconds for Largest Contentful Paint, 200 milliseconds for Interaction to Next Paint and 0.1 for Cumulative Layout Shift (Google/web.dev). Interaction latency in particular shows up on search pages, because that is where people type, filter and sort - details in the article on optimising Interaction to Next Paint.
Verifying measurement after every relaunch
Search measurement is the measurement that most often fails silently during a relaunch. The reason is mundane: it hangs on a technical detail nobody has on the migration list. ?s= becomes ?query=, the GET form becomes a POST endpoint, the results page turns into an overlay component without a URL change, or a new search module fires the event under a different name. In every case the dashboard stays empty without an error appearing - and nobody misses a metric that simply reads zero.
First, search for a control term that reliably returns hits and check that it arrives in the raw data. Second, search for an invented term that definitely returns nothing and check that the result count is transmitted correctly as zero. Third, operate the search once using only the keyboard to verify label and status message. Fourth, compare yesterday's search count with the same weekday a week earlier - a drop of more than half is as a rule a measurement problem, not a change in behaviour (project experience).
The week-on-week comparison belongs in the same routine as the rest of your relaunch checks. If you already verify redirects, status codes and page structure after every deploy - for instance with automated broken link and 404 monitoring - search measurement adds just one more step.
A second distortion comes from automated access. Crawlers and scrapers request results pages with parameters, and some work through term lists systematically. Without filtering, terms appear in the report that no human typed, and the zero-result rate rises for purely technical reasons. Server-side detection of machine traffic therefore belongs to search reporting; the basics are described in the article on filtering bot traffic out of analytics.
As a cross-check for interpretation, observing actual behaviour on the results page helps. When the numbers say people frequently exit after a search but not why, a GDPR-compliant heatmap analysis supplies the missing layer of observation - for example when users repeatedly tap a non-clickable element.
Bringing internal search into a fixed review rhythm
The effort for reliable search reporting is smaller than its effect suggests. Capture costs an hour once, data hygiene another. After that you need a fixed appointment - monthly is enough in most cases - to review three lists: the most frequent terms, the terms with the most zero results and the terms with the highest exit rate. From those three lists come tasks for content, navigation and range that, unlike many optimisation ideas, justify themselves directly: there is counted demand behind them.
The second effect is organisational. Search terms are understandable for everyone involved - management, editorial, support and development read the same list without translation. Debates about whether a topic matters shorten considerably when the number of searches and the number of empty results sit right next to it. That search quality carries measurable economic weight is not a guess: in intranet research, search usability alone explained 43 percent of the productivity difference between good and poor environments (Nielsen Norman Group).
Internal search analysis thus belongs in the same routine as reach, sources and goal completions - and it works entirely first-party. Because no cookies are set and no devices are recognised, the metric stays complete even when a consent banner collects refusals: XICTRAQ's cookieless first-party analytics derives search terms from the recorded page views and events without building profiles. To see how the term ranking, the result distribution and the session flow look together, the live demo offers a complete example account; which feature scope you need is set out in the overview of pricing and plans.
This article draws on data and documents from: Baymard Institute - E-Commerce Search UX Research (benchmark of more than 170 sites and apps with over 10,000 performance ratings: 56 percent of sites do not adequately support search needs; failure rates by query type - exact searches 12 percent, product type 20 percent, symptom 37 percent, feature 39 percent, use case 43 percent, compatibility 44 percent, abbreviations and symbols 54 percent, non-product searches 66 percent; 34 percent of test participants used the search field for non-product content; around 50 percent of sites implement zero-result pages in ways that create frustration); Nielsen Norman Group - Site Search Usability (success rates of 51, 32 and 18 percent on the first, second and third query; almost half of users give up after the first failed search; mean query length 2.0 words; 91 percent more search usage after adding a visible search box; suggestions selected in 23 percent of impressions, 31 of 136 with a 7 percent margin of error; eyetracking - users make do with the first result 20 percent of the time; 43 percent of the intranet productivity difference attributable to search quality; replication study on information-seeking behaviour with 498 analysed responses - 40 percent understanding, 36 percent comparing and choosing, 24 percent acquiring); W3C - Web Content Accessibility Guidelines 2.2, W3C Recommendation of 12 December 2024 (success criteria 2.4.5 Multiple Ways, 3.3.2 Labels or Instructions, 2.5.3 Label in Name, 4.1.3 Status Messages, 1.3.5 Identify Input Purpose); WebAIM - The WebAIM Million 2026 (analysis of one million domain home pages: 95.9 percent with detected WCAG failures, 56.1 errors per page on average, missing form labels on 51 percent of pages); Google/web.dev - Core Web Vitals (thresholds LCP 2.5 seconds, INP 200 milliseconds, CLS 0.1); Regulation (EU) 2016/679 (GDPR), Article 5(1)(c) - data minimisation. Values marked as (project experience) come from our own analysis projects.