Web & product
If you are searching for site search, or for search on a website, you are usually here: someone said the header looks empty without a field, or that 'real sites have search'. Someone buys Algolia before you have counted how many things can even be found. Someone installs a WordPress plugin that scans on every keystroke and warms the origin. Someone hides a filter page behind an icon and calls it search. Someone refuses to touch anything until you have a 'real' index, and lets a catalogue of hundreds of items hide in a menu with eight entries.
The portal post is login and records you already own. The CMS post is where the content lives. This one is findability: when a sitemap and an honest navigation are enough, and when you owe a field that actually finds. An honest site search is a product with an index, an empty state and a query log you look at. Without that you have an input. You do not have search.
TL;DR
The main points
- Search is a product when the catalogue, docs or portal is larger than a menu can carry.
- A marketing site with a handful of pages needs a sitemap and honest navigation — not a field.
- A filter page with honest facets is often enough before you buy a vendor index.
- The empty result page is the product. The field in the header is chrome.
- A vendor index is a second system. Own the query log first, so you know what people actually type.
- The portal post is access to records. This one is finding them, without letting a plugin scan origin on every keystroke.
Why this matters at all
A search field is a promise: what you type can be found. The promise holds when there is an index of the things you actually want found, and a page that says honestly when they are not there. It rots when the field searches blog posts because you meant the catalogue, when it 200s an empty layout without saying 'none', or when it is an icon that opens the same menu you already have. You think you have site search. You have an input that disappoints.
Teams inherit the word search from another product. In a shop it is find-the-item. On a docs site it is find-the-page. In a portal it is find-the-order. On a marketing site with a dozen pages it is usually 'someone wants a field because the header looks like everyone else's'. That last one is decoration. It costs crawl, it costs origin if the plugin scans, and it costs trust the first time someone types 'price' and gets three old posts and no page that answers.
It is also an SEO and a product question. Internal result pages you let get indexed are thin URLs you donate to the crawler. Search that is not noindexed is how you make 'site:you' look like a hole. Search that only lives behind login is a different job — portal, not marketing header. If nobody owns the empty state, the field is chrome. It is not findability.
We write this because 'we need search' has become a purchase you make before you have talked about what should be findable. An honest setup is boring: navigation and sitemap until the inventory is too large; then an index you own, an empty page you have written, and a log you read. Without that sentence you have Algolia on a site a menu would have handled. You do not have site search.
What site search actually is — and what a field in the header is not
Site search is a named index over a named inventory: products, articles, tickets, documents — and a query that returns that inventory, not the whole site because you forgot to scope it. It is a product choice because it says what you think people came to find. It is not an icon. Most marketing sites need a sitemap and a menu. They do not need a field.
It is not 'put an input in the header'. A field without an index is a GET against a page that scans or hits the database on every keystroke. A WordPress plugin that LIKEs wp_posts is that pattern. It works on a site with little content. It becomes the expensive call the rate-limit post is about the day someone scrapes `?s=`. An honest index is built: you know what is in it, you know what is not, and you know what happens at zero hits.
It is not 'buy Algolia, Typesense or a shop-search add-on and we are done' either. A vendor index can be right when the inventory is large and you want typeahead and relevance you do not want to own. It is a second system: sync, keys, a preview that must not leak what you have not published. If you do not have a query log and an empty state, you have bought relevance for a field you do not have a product for. Start by counting what people would type. Buy the index after, if the count requires it.
And it is not a sitemap. The sitemap is for the crawler and for you: here are the pages we mean. Navigation is for the human who will browse. Search is for the human who will look up, because browse is not enough. If you can stand behind every important thing living in the menu or on a filter page with honest facets, sitemap and nav are enough. The field arrives when you can honestly say: 'this inventory cannot be surveyed without asking'.
What usually goes wrong when someone says we have put search on
The first failure is searching the wrong inventory. You wanted products. The field searches the blog, cases and the old privacy policy because the plugin indexed 'all posts'. The user types a product name and gets a post about a webinar that ended. Scope the index. If the job is the catalogue, marketing pages are not hits. If the job is docs, the shop is not hits. One field over everything is how you get relevance you cannot explain.
The second failure is the empty state you did not write. Zero hits is 200 with a white hole, or '0 results' without a next step. The empty page should say you understood the query, that it did not hit, and what they can do: see the catalogue, write to us, try another word you actually have. An empty page without an owner is a broken promise. The error-page post is 404 chrome. Here is letting 'no hit' be a product, not a failure you are ashamed of.
The third failure is indexing the result page. `/search?q=` as a crawler-friendly page is thin content you have asked Google to rank. Noindex search that is a tool. Index the things search points at. If you are proud of a search page as a landing page, you have a different problem: then the query is a topic you owe a real page — not a result layout with three hits.
The fourth failure is buying vendor before you have a log. You sync 'the whole site', you turn on typeahead, you get a bill the day the preview environment syncs too. You still do not know whether people type product numbers, synonyms or 'contact'. Log the query. Read it for a month. Then you know whether you need synonyms, whether you need an index at all, or whether you need a page named what people type. A clever index without a log is a slide.
Sitemap and honest navigation vs. an index you actually own
When sitemap and nav are enough
The inventory can be surveyed. The human browses. The crawler gets an honest map.
- A marketing site, an agency site, a handful of services — the menu is the findability
- A filter page with honest facets beats a field that scans origin while the list can still be seen
- No thin `/search?q=` pages to noindex, because you never promised an index
- Is the right default. It is the wrong answer once the catalogue can no longer be a menu
When you owe an index
The inventory is too large to browse. The query has an empty state and a log.
- Catalogue, docs, portal records, a help centre — things you cannot stand behind in eight menu items
- Scoped index, noindex on search itself, an honest zero-hit with a next step
- Vendor when relevance and typeahead are the job — after you have read what people type
- Is waste if you still have not written which inventory should be findable
How to decide whether the site should have search at all
Without this order you get a field in the header you call site search.
- 01
Count the things a human must be able to find — not the pages you have
Products. Docs articles. Orders in a portal. Not 'every URL in the sitemap'. If the count fits in a menu or on one filter page, build that. The sitemap is enough. The field is decoration. If the count is 'this cannot be surveyed without asking', you have a search job. Write the inventory. That is the index. The rest of the site may stay navigation.
- 02
Write the empty state before you put the field in the header
What does a human see at zero hits? What can they do? Who owns the copy? If you cannot write that page, you are not ready for an index. You are ready to let the menu do the job. An honest empty page beats a clever typeahead that still ends in a white hole. The error-page post is status. Here is letting 'none' be an answer you meant.
- 03
Scope the index to the job you actually have
Catalogue or docs or portal — not 'the whole site' because the vendor default is that. Noindex the result page. Index the destinations. If people type a topic you ought to have a page about, write the page. Search is not a substitute for a page you owe. It is a path to pages you have.
- 04
Log the query before you buy relevance
Store what people type — landing page, spelling, zero-hit. Read it. Then you know whether you need synonyms, whether you need vendor, or whether you need a better menu. An index without a log is how you pay for relevance you cannot fix. The rate-limit post is the cap on the expensive call. Here is letting the call be one you learn from — not one you only cache.
- 05
Pick the host for sync and secrets — not for the slide
A small, scoped index can live in your app. A large catalogue with typeahead can live with a vendor. Preview must not sync what you have not published. Keys do not belong in the client bundle. The staging post is the environment. Here is refusing to let 'search' be a public API key in a script tag and an index you cannot explain.
“You have search when an empty result page has an owner. A field without an index is decoration.”
Marketing site, catalogue, docs and the portal — same word, four jobs
The marketing site is the job that most often should not have search. A dozen pages, five services, a contact. Sitemap and nav are the findability. A field here is a promise you do not have an inventory for: people type 'price' and 'next.js' and get whatever the plugin happened to index. Build the pages you owe. Let the menu point at them. The Next.js agency landing is what you link to when the job is the site. The field does not arrive because the header looks like a shop.
The catalogue and the shop are the job that is most often right as search — and most often wrong as 'search the whole site'. Find the item. Scope the index to what can be bought or chosen. A filter page with honest facets lasts a long time if the list can still be seen. Vendor lasts when typeahead and spelling are the job and you have read the log. The B2B shop post is the difference between B2B and B2C. Here is letting find be a product in the catalogue, not a field that also hits the blog.
Docs and the help centre are the job that most often looks like search and most often dies as a sidebar you forgot. If the articles cannot be surveyed, you owe an index over docs — not over marketing. The empty state should point at a contact or an article you actually have. The RAG post is when the answer must be generated. This one is when the answer is already a page you wrote, and the human must find it. Do not mix the two: a chat field is not site search, and site search is not a model you have not scoped.
The portal is the job that is most often right as search and wrong as a public field. Find the order, the case, the file — behind login. That is not the header on www. It is an index you must not leak, and a query you rate-limit. The portal post and the form-to-portal post are access. Here is findability inside. One vendor index over public and private is how you get a preview or a script to show what you promised was behind the passcode.
What you should typically do in the situation you are in
The left is what you typically say. The right is the next step we typically recommend.
Situation
The header looks empty, and you have a handful of pages in the sitemap
Next step
Finish the navigation. The field is decoration until the inventory cannot be a menu
Situation
You have a catalogue people already browse, and you are considering Algolia
Next step
An honest filter page first. Vendor when the log shows browse is not enough
Situation
A plugin scans wp_posts on every keystroke, and origin has become expensive
Next step
That is the expensive call. Scope or turn it off. An index beats a LIKE on every ?s=
Situation
The result page can be crawled, and you are proud of the thin `/search?q=` URLs
Next step
Noindex the tool. Write a real page on the topic if the query is a topic you owe
Situation
The portal and www share one index so 'search just works'
Next step
Two jobs. Public finds pages. Portal finds records. One index is a leak you call convenience
Checklist before you call it site search
If you are missing several of these, the sentence is search on a website — the setup is a field.
- You can point at the inventory that must be findable, and say why the menu is not enough
- The empty result page has an owner, a next step and no shame-200 without copy
- The index is scoped. The result page is noindex. The destinations are what you want crawled
- You have a query log you actually read before you buy relevance or synonyms
- Vendor and keys are a second system — preview does not sync what you have not published
- Portal search is not the www header. The marketing site may have a sitemap and no field
Questions we get again and again
When should a website have search?
When the inventory is larger than a menu or one filter page can carry: a catalogue, a docs site, records in a portal. If you have a handful of marketing pages, sitemap and navigation are enough. 'The header looks empty' is not a search job. Count the things a human must be able to look up. If you cannot point at them, do not buy a field. Write the pages and the menu first.
Is site search the same as having a good sitemap?
No. The sitemap is the map for the crawler and for you. Navigation is browse for a human. Search is look-up when browse is not enough. You can have an honest sitemap without a field. You can have a field without an honest sitemap — that is what usually goes wrong. Build the map. Build the field when the inventory requires it. They are two jobs. One does not replace the other.
Should we buy Algolia or another vendor index?
When you have read a query log and can say that relevance, spelling and typeahead are the job — and the inventory is too large for a filter page you want to own. Do not buy vendor because the header looks like a shop. A vendor index is a second system: sync, keys, preview that must not leak. A small, scoped index in the app beats a sync of 'the whole site' you took before you knew what people type.
May search results be indexed in Google?
Almost never. The search page is a tool. Noindex it. Index the pages it points at. Thin `/search?q=` URLs are how you donate crawl to combinations you have not written as content. If a query is a topic you owe a page about, write the page. Search is not a landing page you can be proud of in Search Console.
Is this the same as a customer portal or an AI chat?
No. The portal post is access to records behind login. Form-to-portal is when a form has become a workflow. RAG and chatbot are when the answer must be generated. This one is find: an index over something you have already written or put in a catalogue, and an empty state you own. A chat in the header is not site search. A portal field on www is a leak you call convenience.
If you have a field in the header and an inventory the menu could still have carried
Let us separate sitemap, filter and an honest index.
An empty page with an owner beats a vendor purchase you made before you counted the things.
