Skip to content

Search Re-ranking

Search re-ranking applies your Dynasort recipes to your storefront’s search results. Shopify still decides which products match a shopper’s query (including typo tolerance and synonyms), and your recipe decides what order they appear in, so your best sellers, high-margin items, or in-stock products rise to the top instead of whatever the default relevance happens to surface.

Real store data shows why order matters: in one large catalog we analyzed, nearly half of all search result clicks landed past the third position. Shoppers scroll, and what they find there is up to you.

Think of search as two separate jobs:

  1. Matching stays with Shopify. A query like “jacket” matches the same set of products it always did.
  2. Ordering moves to your active search recipe. The matched products are re-scored by the recipe’s attributes (sales, conversion rate, inventory, and so on) and returned in that order.

Because matching is untouched, shoppers never see products that don’t fit their query, and they never lose results they would have found before.

When several products score the same (common on newer stores with little sales history), the recipe’s tie-breaker decides their order. Search recipes default to Shopify relevance as the tie-breaker, which means: with no data at all, your results look exactly like Shopify’s, and as data accumulates your recipe takes over gradually. No cliff, no scrambled results on day one.

Re-ranking covers both storefront search surfaces:

  • The search results page: the full result grid, with pagination.
  • The live search dropdown: the suggestions that appear as a shopper types, re-ranked by the same recipe.
  1. Create a search recipe. On the Recipes page, choose Add recipe → Search recipe. Pick the attributes that define “best” for your store and weight them. Dynasort seeds sensible defaults you can start from.

Search recipe editor with attributes and the tie-breaker setting

  1. Preview the re-ranking. In the recipe editor, type any query into Preview re-ranking to see exactly how results will be ordered, before anything is live.

Preview re-ranking showing reordered results for a query

  1. Activate it. On the Search page, choose your active recipe (search uses one active recipe at a time) and connect the storefront. The status banner tells you when everything is ready.

Search page with active recipe, storefront connection, and display settings

  1. Add the storefront pieces in your theme editor. On the search template, add the Dynasort Search Results app block (in the block picker under Apps) and remove or hide your theme’s own results section. Then, under Theme settings → App embeds, toggle on Dynasort Live Search so the typeahead dropdown is re-ranked too; set its hide selector for your theme per Live Search theme selectors.

The Search page controls how the results grid looks: columns per device, results per page, and which details show on each card (color swatches, sale and new badges, star ratings, quick add-to-cart).

These settings apply to the results page grid. The live search dropdown always uses a compact list (thumbnail, title, price) designed for fast scanning.

Storefront search results grid rendered by Dynasort

Live search dropdown with re-ranked suggestions

Every time Dynasort serves a search results page, it records what was served. From there it tracks what shoppers did with it:

  • Serves: how many times the recipe ordered a results page.
  • Clicks and CTR: clicks on served results, with the position that was clicked.
  • Adds: served products added to the cart, whether from the result card or the product page, within the same visit.
  • Checkouts: visits where a served product was added and the shopper went on to check out.

You’ll find these numbers on the search recipe’s page: totals in the sidebar and a day-by-day table below the editor. They’re the foundation for comparing recipes, and for the A/B testing of search recipes we’re building toward.

The storefront pieces ship without !important rules, so your theme’s CSS can override anything. Useful hooks:

Results grid (.dynasort-search): the root element exposes CSS custom properties you can set from your own stylesheet:

.dynasort-search {
--ds-cols-desktop: 5; /* columns per breakpoint */
--ds-gap: 1.5em; /* grid gap */
--ds-radius: 12px; /* image corner radius */
--ds-aspect: 4 / 5; /* card image aspect ratio */
}

Element classes follow a consistent naming scheme: .dynasort-search__card, __media, __title, __price, __badges, __swatches, __pager, __summary, __empty.

Live search dropdown (.dynasort-predict-*): .dynasort-predict-panel (the container, solid white by default), .dynasort-predict-item, .dynasort-predict-thumb, .dynasort-predict-title, .dynasort-predict-price, .dynasort-predict-all.

  • Start with the seeded default recipe and watch the serving numbers for a week before tuning weights.
  • If your store is new and everything ties, that’s fine: the Shopify-relevance tie-breaker keeps results sensible until your data differentiates them.
  • Sold-out products can be hidden or shown per recipe; hiding them is usually the biggest single win for search conversion.