Best approach to override Shopify native product recommendations with custom app logic

Hi everyone,

I’m a Shopify app developer working on a external public shopify app called ShoppingIQ. I’d like some architectural guidance regarding product recommendations on Online Store 2.0 themes.

On a store, the product page uses Shopify’s native recommendations section. So currently, Shopify’s built-in recommendation engine determines which related products are shown.

What We’ve Built So Far

Our app:

  • Uses the official Shopify PHP API library

  • Handles OAuth and stores access tokens

  • Syncs products via products gql api

  • Stores product data in our own database

    Now the our client want us modify the current Shopify Related Products section on a product page or Could we show our own Related Products section in Shopify Store product page.

    I need help i already have Shopify app created with dev dashboard that uses shopify api php library now i want to know can we define our own rules in Shopify native system that renders the related products accordingly and i also want to now what logic shopify uses to show related products can we add custom logic if not can we create our own custom related product section.

    I want user to select the products and after that i want to show that product into the store as a top picks for you or may be recommended products. I have fetched the products from shopify in my platform now i want user to select products that we can to push to the store in a recommended products block.

Quick disclosure: I made Better Related Blog Posts which solves the same architectural problem on the article side, so I’m biased.

You can’t override Shopify’s native product-recommendations.json endpoint, the algorithm is closed. The pattern that works is to replace the native section with your own theme app extension app block, then either (a) render server-side from Liquid using merchant-curated metafields (list.product_reference works well for “user picks”), or (b) hydrate client-side from your app proxy using the Section Rendering API on /products/{handle}?section_id=your-section. App blocks let merchants drop your section into the OS 2.0 product template through the theme editor without code edits, which is the supported route post-2.0.

Native fallback: a metafield-driven block in main-product.liquid plus a Liquid loop is enough if the merchant only wants manual curation; you only need a backend when the rules are dynamic or AI-driven.