CRO · SEO · TECHNICAL · 2 DECEMBER 2025 · 8 MIN READ
The search box is a merchandising surface
Somebody curates your home page every week. Nobody has ever looked at what the search box returns for your best-selling product.
Merchandise Shopify search the way you merchandise a collection: decide the ranking, decide what happens to out-of-stock products, and decide what the page looks like when it is nearly empty. Shopify gives you four levers through the Search & Discovery app — synonym groups, product boosts that tie specific terms to specific products, which result types appear, and where unavailable products sit — plus the filters and sort options that already exist on collection pages and work on search results too. None of them is on by default in any meaningful sense, which is why most stores return a relevance-ordered list nobody has ever reviewed.
IN SHORT
- Search results default to `relevance`, which is a ranking algorithm, not a merchandising decision — the store has made no choice until somebody makes one.
- Product boosts let you attach specific search terms to specific products, up to ten terms per product, and they do not apply when the query contains special search syntax.
- Synonym groups are how the words customers use get matched to the words on your product pages; nobody writes product copy in customer language unprompted.
- Shopify’s predictive search only searches `title`, `product_type`, `variants.title` and `vendor` by default — SKUs, tags and body copy are opt-in.
- Unavailable products default to appearing last in search results rather than being hidden, and that default is a merchandising decision you should make explicitly.
- Storefront filters work on search results pages, not just collections, and a store can create up to 25 of them.
The one page nobody owns
Every store has someone who curates the home page, argues about the hero, and reorders the featured collection before a campaign. Almost no store has anyone who looks at what search returns for its ten most-searched terms. The search results template gets designed once during a build, ticked off, and then runs untouched for years while the catalogue changes underneath it.
That is odd, because a customer who types into the search box has told you exactly what they want in their own words. It is the highest-intent behaviour on the site short of adding to basket, and it is the one place where the customer, rather than your navigation, decides what the page is about.
Resist the temptation to reach for an industry statistic here. You do not need one: Shopify reports "Search conversions over time" alongside click rate and purchase rate for search, so you can measure what search is worth on your own store in an afternoon. Do that before you spend anything on it. If search turns out to be a small share of sessions on your store, the priority order changes — and you will know, rather than having been told.
Relevance is the default, and a default is not a decision
Shopify’s search results page sorts by relevance unless the customer changes it, and the documented sort options for storefront search are relevance, price-ascending and price-descending. That is a narrower set than a collection page offers, and it is worth knowing before you promise a stakeholder a "sort by newest" control that the search endpoint does not provide.
Relevance is a reasonable algorithm. It is not a point of view. It does not know that the £19 version of a product is a loss-leader, that a line is being discontinued, or that the three results above the fold for "gift set" are the ones that decide December. Those are merchandising facts, and they only get into the ranking if somebody puts them there.
There is one more parameter that quietly shapes every result set: options[prefix]. By default it is last, which performs a partial word match on the final term of the query. Set it to none and it does not. That single default is the difference between "candl" returning candles and returning nothing, and it is the sort of behaviour worth confirming on your own store rather than assuming.
The four levers, and what each is actually for
Shopify’s own Search & Discovery app is where the merchandising controls live. Four of them matter.
- Synonym groups. Your product copy says "trainers"; half your customers type "sneakers". Synonym groups close that gap. This is the lever with the highest return per hour of work, because the input — the words customers actually use — is already sitting in your search query report.
- Product boosts. Assign specific search terms to a product so it ranks higher when a customer uses them. The documented limit is ten search terms per product boost. Two cautions: boosts do not apply when a query contains special search syntax, and a boost is a standing instruction, so a boost set for a Christmas range is still running in March unless someone removes it.
- Result types. You choose which types appear — products, pages, blog posts, collections and query suggestions — and you choose separately for the results page and for predictive search. Most stores should show collections in predictive search and think hard before showing blog posts on the results page, where an article about jumper care outranking a jumper is a conversion problem wearing a content hat.
- Unavailable products. Show, hide, or place last. The default is
last. Which is right depends on the business: a store that restocks weekly should show out-of-stock products so customers can sign up for notifications; a store with a long tail of permanently dead SKUs should hide them. Either answer is fine. Not having an answer is not.
Predictive search searches fewer fields than you think
The dropdown that appears as a customer types is a separate mechanism with separate rules, and it is where most "our search is broken" complaints actually originate.
Shopify’s predictive search endpoint documents which fields it searches, and the default set is title, product_type, variants.title and vendor. The full list of fields you can opt into also includes author, body, tag, variants.barcode and variants.sku. So unless someone configured otherwise, a customer typing your SKU into the search box gets nothing, a customer typing a tag you merchandise with gets nothing, and a phrase that only appears in the product description gets nothing.
For a fashion store that is usually fine. For a parts business, a trade supplier, or anyone whose customers hold a part number in their hand, it is the whole ballgame — and it is a configuration change, not a development project. Adding variants.sku to the requested fields is a line of code in the theme’s predictive search call.
Two other documented limits shape the dropdown: resources[limit] accepts 1 to 10, and resources[limit_scope] decides whether that limit applies across all types (all, the default) or per type (each). A dropdown showing four products and six blog posts is usually limit_scope doing exactly what it was asked to.
Filters belong on the search results page
Storefront filters are usually built for collection pages and then forgotten, but they apply to search results too — the same filter. URL parameters work on both, so filter.p.product_type=shoes or filter.v.option.color=red refines a search result set exactly as it refines a collection. Filters combine with AND between them and OR within the values of one filter.
This matters most for broad queries. Somebody searching "black" on a clothing store has given you one attribute and no category; the filter rail is the only thing that turns 400 results into a decision. A search results page without filters is asking the customer to scroll.
The documented ceiling is 25 filters, which is far more than any store should use. The practical limit is much lower and it is a design limit, not a platform one: a filter rail long enough to scroll is a filter rail people abandon. Metafield-backed filters (filter.p.m.*) are the ones worth the effort, because they express the attributes your customers actually shop by rather than the ones Shopify happens to model.
Design the results page for the bad cases
The search results template usually gets designed against a query that returns twenty-four good products. The interesting states are the other ones.
The Liquid search object gives you what you need to handle them: performed tells you whether a search was run at all, results_count gives you the number, and terms gives you back what the customer typed. Three states deserve deliberate design — no search performed, one or two results, and zero results — and on most stores all three currently render the same grid with a different number of tiles in it.
A two-result page is the most commonly botched. It is not a failure; the customer found the thing. But a grid built for four columns showing two products with 900px of white space beside them reads as a failure, which is worse, because the customer concludes you do not stock what they searched for and leaves.
Echo the terms back in the heading, always. "24 results for «merino jumper»" is a small thing that does two jobs: it confirms the store understood the query, and it makes a typo visible to the person who made it.
Where to start, and how to know it worked
The honest sequence is short. Pull the "Searches by search query" report and read the top fifty terms out loud. Fix the synonyms those terms reveal. Decide the out-of-stock policy. Check which fields predictive search is looking at. Then look at the results page for your five most-searched terms as a customer would, on a phone.
That is a day of work and none of it is a development project, which is the main reason it never gets done — it does not fit into anyone’s sprint and nobody owns it. It is worth putting a name against it and a recurring hour in the calendar, in the same way somebody already owns the home page.
Measure it with the reports Shopify already gives you rather than with a before-and-after guess: click rate and purchase rate for search, and "Search conversions over time". Those are your numbers, from your traffic, and they will tell you whether the hour was worth repeating. If you want the work done properly as part of a wider programme, that is what our [conversion rate optimisation](/services/optimize/shopify-conversion-rate-optimization) engagements cover — but the first pass is genuinely something your own team can do this week.
Questions this raises
How do I change the order of Shopify search results?
Use product boosts in the Search & Discovery app to attach specific search terms to specific products, up to ten terms per product. Beyond that, the storefront search endpoint supports `relevance`, `price-ascending` and `price-descending` as sort options, with `relevance` as the default. There is no manual drag-and-drop ordering of search results in the way there is for a collection, which is why boosts and synonyms carry most of the merchandising weight.
Why does our search not find products by SKU?
Because it is not looking. Shopify’s predictive search endpoint searches `title`, `product_type`, `variants.title` and `vendor` by default; `variants.sku` and `variants.barcode` are available but must be requested explicitly. For any business whose customers know part numbers, adding them is one of the highest-value changes you can make to the storefront, and it is a theme configuration rather than a rebuild.
Should out-of-stock products appear in search results?
It depends on how quickly you restock. Shopify’s default is to place unavailable products last rather than hide them, and you can change it to show or hide. If stock returns within weeks, showing them lets customers register interest rather than concluding you never stocked the item. If a large part of your catalogue is permanently unavailable, hiding them stops search results being a museum.
Do storefront filters work on search results pages?
Yes. The same `filter.` URL parameters that refine a collection refine a search result set — `filter.p.product_type`, `filter.v.option.*`, `filter.v.price.lte` and metafield filters all apply. Filters combine with AND logic between filters and OR logic within one filter’s values. A store can create up to 25 filters, though a rail that long is a usability problem rather than a feature.
Is the Shopify Search & Discovery app enough, or do we need a search app?
Start with the first-party app, because most stores have not come close to exhausting it — a store with no synonym groups and no boosts has not yet found out what native search can do. Third-party search becomes worth paying for when you need behaviour Shopify does not offer: rules that vary by customer segment, merchandising by margin or stock depth, or federated search across content the storefront does not hold. Paying for a search app to fix a problem that synonym groups would have solved is a common and expensive mistake.
How do we measure whether search merchandising worked?
Shopify reports click rate and purchase rate for search, "Searches by search query", and "Search conversions over time". Those are the before-and-after. Take a baseline before you change anything, note that search reporting can lag by up to 72 hours, and give a change a fortnight before judging it — search volume on any single term is low enough that a week is mostly noise.
NEXT STEP
Free store audit
A senior Shopify engineer reviews your storefront, theme performance and checkout, then sends a prioritised list of fixes.
