Adding Hyper Search to your site

To add Hyper Search to your storefront you will need to make some small modifications to your BigCommerce theme to let Hyper Search know where to add the search input and search results.

Add the search box to the header

Add the following HTML to your theme where you would like the search input to be shown.

<div class="s48_hypersearch"></div>

We recommend replacing the original search input with this snippet. In the Cornerstone theme, this would be in templates/components/common/quick-search.html:

<div class="container">
  <div class="s48_hypersearch"></div>
</div>

Replacing the search results

To display Hyper Search on the search results page, you will need to add the following HTML to your theme:

<div id="s48_hypersearch-results"></div>

We recommend replacing the original search results with this snippet. In the Cornerstone theme, this would be in templates/pages/search.html

---
product_results:
    limit: {{theme_settings.searchpage_products_per_page}}
---
{{inject 'categoryTree' forms.search.category_options}}
{{inject 'searchProductsPerPage' theme_settings.searchpage_products_per_page}}
{{inject 'searchResultsCount' (lang 'search.results.count' count=result_count search_query=(sanitize forms.search.query))}}
{{#partial "head"}}
  {{#if pagination.product_results.previous}}
    <link rel="prev" href="{{pagination.product_results.previous}}">
  {{/if}}
  {{#if pagination.product_results.next}}
    <link rel="next" href="{{pagination.product_results.next}}">
  {{/if}}
{{/partial}}
​
{{#partial "page"}}
{{{ stylesheet '/assets/scss/vendor/jstree/style.css' }}}
{{> components/common/breadcrumbs breadcrumbs=breadcrumbs}}
<section class="page">
  <div id="s48_hypersearch-results"></div>
  {{{region name="search_below_content"}}}
</section>
{{/partial}}
{{> layout/base}}

You're almost there; now enable Hyper Seach

Once you've made these theme changes, you can enable Hyper Search within Settings > Storefront in the app. This will add the required JavaScript and enable Hyper Search on your store.

Customizing the product grid template

When using our out-of-the-box storefront integration, it's common to want to change the HTML of the product cards to more closely match that of your own theme.

This can be achieved by going to Settings > Storefront and viewing the Developer tab.

The product card templates are in JSX format. And so fields can be output with braces, e.g. {product.name}

Available product fields

The fields available by default are:

Field name Description Example
product.brand The brand name OFS
product.categories An array of category names ["Shop all", "Clothing"]
product.channel_ids An array of channel IDs that the product is assigned to. [1, 10234]
product.description The product description (HTML) <p>Brand new to the store</p>
product.display_price The product price with currency $39.99
product.hover_image_url Deprecated
product.image_url This is the URL of the variant image, if available, otherwise the product thumbnail image
https://cdn11.bigcommerce.com/s-nqivp06qsb/products/113/images/376/5060758402902__89412__02605.1704205148.220.290.jpg?c=1 
product.images This is an array of all product images

Fields that are available on each image include:

is_thumbnail sort_order url_standard url_thumbnail url_tinyurl_zoom

product.in_stock The availability message In Stock Out of Stock
product.meta_description The product meta description
product.meta_keywords The product meta keywords
product.name The product name
product.on_sale Whether the product is on sale true false
product.page_title The product page title
product.price The base product price 60.59
product.product_id The product ID "118"
product.product_variant_id The ID of one of the variants for this product "101"
product.review_rating_sum The total of all the review ratings added up 0
product.sale_display_price The sale price with currency, if a sale price is set £7.00
product.sale_price The sale price, if one is set 7
product.search_keywords Any search keywords on the product
product.sku The product SKU ABC-SAMPLE
product.stock_qty Available inventory 1
product.updated_at When the product was last updated 2025-06-25 02:00:49
product.url The relative URL for the product /1-l-le-parfait-jar/

You can make additional fields available by adding them as an indexed field.

Available product functions

We also provide a selection of helper functions. Predominantly, these are to help show pricing information in the correct currency.

Function Description Example
product.getPrice() Get the product price in the currently selected currency 39.99
product.getDisplayPrice() Get the product display price for the currently selected currency "$39.99"
product.getSalePrice() Get the product sale price in the currently selected currency, if set. 34.99
product.getSaleDisplayPrice() Get the product sale display price in the currently selected currency, if set. $34.99
product.getMsrpPrice() Get the MSRP price in the currently selected currency 39.99
product.getMsrpDisplayPrice()

Get the MSRP display price in the currently selected currency


$39.99
product.getOnSale() Get whether the product is on sale true
product.hasVariants() Does this product have variant options true
product.renderImage(options) Render a responsive image element
  const options = {
    lazyLoad: true, // enable lazy loading
    width: '320w', // default width (from srset option below)
    rollover: false, // enable secondary image on roll over
    srcsets: { // list of responsive image sizes
      '80w': '80w',
      '160w': '160w',
      '320w': '320w',
      '640w': '640w',
      '960w': '960w',
      '1280w': '1280w',
      '1920w': '1920w',
      '2560w': '2560w'
    }
  }
  


For further design options, see customizing the design.

Custom Integrations

If you would prefer, we provide the option to implement a custom storefront experience. Under the hood, our app is powered by Typesense and so you can consider their documentation on building search UIs to consider how this might be achieved.

Please get in touch for more information & support on this approach.

Did this answer your question? Thanks for the feedback There was a problem submitting your feedback. Please try again later.

Still need help? Contact Us Contact Us