Add predictive search to your theme
You can add predictive search to your theme so that suggested results appear immediately as you type into the search field. Predictive search helps customers articulate and refine their search queries, and provides new ways for them to explore an online store. It also lets them quickly browse matches without having to leave their current page to see a separate list of search results.

Predictive search supports suggestions for products, collections, queries, pages, and articles.
Before implementing predictive search in your theme, it's important to be familiar with how suggestions are generated, current API limitations, and the UX guidelines.
Anchor to How suggestions are generatedHow suggestions are generated
The predictive search dropdown displays the following information when you enter a query.

Point | Description |
---|---|
1 | Predictive search dropdown |
2 | Query suggestions |
3 | Collection suggestions |
4 | Product suggestions |
5 | Page suggestions |
6 | Article suggestions |
After you start typing into the search bar, predictive search suggests results that are related to what you’re typing. They match search terms either exactly or with typo tolerance on searchable properties of shop resources.
Matching products or variants are returned as product suggestions that drop down from the search bar. For example, you’re looking for a snowboard and type very-fast snowbo
. Product suggestions appear for products or variants that contain very
, fast
, and a term that begins with snowbo
.
If a word is separated by a hyphen or space, then it will be considered as two terms. Words or phrases that are separated into multiple terms return different results than a single term that includes the same words. For example, T-shirt
and t shirt
return the same results, but tshirt
does not.
Product variants are returned only when the query matches terms specific to the variant title. Only the variants with the most matching terms are returned as results. For example, a store has a snowboard with a blue variant and a light blue variant. If you search for snowbo
, then the snowboard product is returned. However, if you search for light blue snowbo
, then only the light blue variant is returned.
Query suggestions are generated by extracting words and phrases from your product catalog, as well as from customer searches, using natural language processing techniques.
Anchor to ResourcesResources
- The
predictive_search
object - The
/{locale}/search/suggest
endpoint of the Predictive Search API
Anchor to Implementing predictive searchImplementing predictive search
To support predictive search, you need to implement the following components:
-
The main search: A search input for predictive search to apply to.
-
The predictive search section: A section to host the general predictive search display. This display is populated with the results of the predictive search using the
resources
attribute of thepredictive_search
object. -
A JavaScript function: Renders the predictive search section using the section response of the Predictive Search API.
The following examples illustrate a basic predictive search implementation. These examples follow the listbox component pattern suggested by the W3C ARIA authoring practices guide.
TipFor a more in-depth example, refer to the following files in Dawn:
Anchor to The main searchThe main search
The main search is a search input for the predictive search functionality to apply to.
/sections/main-search.liquid
Anchor to The predictive search sectionThe predictive search section
The predictive search section hosts the predictive search results. These results are output by looping through the resources
attribute of the predictive_search
object.
This section is rendered with the main search using the JavaScript function.
The following example renders the products from the search results. For a more complex template that accepts all resource types, refer to Dawn's source files.
/sections/predictive-search.liquid
Anchor to The JavaScript functionThe Java Script function
The predictive_search
object isn't defined when the predictive search section is initially rendered, so you need to retrieve the populated section content using the section response of the Predictive Search API.
The following example uses the default parameters for the Predictive Search API, but you can customize them to fit your needs.
It's recommended to use the Liquid routes
object to dynamically set the endpoint URL for the fetch
call.