Skip to article
Product Recommendations2026-07-15 · 12 min read

Shopify Product Recommendations Not Working? Diagnose Empty, Irrelevant, or Missing Recommendations

Empty, missing, or irrelevant product recommendations usually have a specific owner. Find the broken layer before you replace the app or rewrite the recommendation strategy.

The short diagnosis: check theme support, product eligibility, recommendation intent, catalog signals, API or section output, card rendering, and tracking. Shopify documents the behavior, but your storefront test identifies which layer is failing.

7

layers to check before changing recommendation logic

Diagnostic framework

30 min

for a first-pass live storefront audit

Audit framework

2

documented Shopify intents: related and complementary

Shopify documentation

The diagnostic order

Do not tune relevance while the module is not eligible to render

The fastest path is to establish whether the problem is visibility, eligibility, candidate quality, presentation, or measurement.

Use the evidence to decide

1 Test it

Visible section

The theme includes the product recommendation section and places it on the intended template.

Next evidence

2 Test it

Eligible products

The anchor and candidates satisfy active, published, price, inventory, and cart rules.

Next evidence

3 Test it

Correct intent

Related and complementary requests answer different shopper jobs.

Next evidence

4 Test it

Useful output

The response reaches the card with the correct product, price, state, link, and tracking.

Next evidence

Reader takeaway: The first layer that fails is the first layer to fix. Do not use a candidate-quality explanation for a theme-rendering problem.

The direct answer

Shopify recommendations are usually broken by a path, not a single setting

A recommendation has to travel from a product context to a candidate source, through eligibility rules, into a theme or API response, through a product card, and finally into an analytics event. If any link fails, the shopper sees an empty row, the wrong products, no products, or a product that cannot be purchased.

That is why changing the heading or selecting more products rarely fixes the real problem. First ask whether the module is present. Then ask whether Shopify is allowed to return the candidate. Then ask whether the candidate answers the page’s question. Only after that should you tune ordering or presentation.

Pro Tip: test one known anchor and one known candidate

A small controlled example is easier to reason about than a random catalog page. Pick a product with a clear relationship, verify its status and inventory, and use that product for every layer of the diagnostic.

Layer 1

Check theme support and placement first

Shopify product recommendations do not appear on every product template automatically. Shopify documents that your theme needs the relevant product recommendation or complementary product section, and that the section needs to be added to the product page. If the section is absent, candidate quality is irrelevant because there is no visible surface.

Open the theme editor and inspect the exact product template used by the anchor. Stores often have more than one template. A recommendation section may exist on the default template but not on a custom template for bundles, wholesale products, landing pages, or seasonal products.

Expected path

Product template contains the section, the section is enabled, and the module appears after the primary product information.

Section exists → enabled → visible

Common failure

The section is only on one template, hidden by a condition, or placed inside a block that is not rendered for the current product.

Correct product → different template → empty page

If the module appears on one product and not another, compare templates before comparing products. If it appears nowhere, inspect theme support and section configuration before touching Search & Discovery.

For a custom storefront, confirm that the recommendation query runs after the anchor product is known, that the request uses a published product identifier, and that the response is inserted into the page.

Check Shopify’s recommendation requirements

Layer 2

Check product eligibility before judging relevance

Shopify applies product eligibility rules before a recommendation reaches the shopper. The candidate must be active, published to the Online Store channel, and priced above zero. It cannot be a gift card or an unlisted product. The inventory rule differs by intent: related products can have a documented exception when continue selling is active, while complementary products require inventory above zero.

The candidate also cannot already be in the visitor’s cart. This is easy to mistake for an algorithm problem. A shopper adds an accessory, revisits the product page, and the accessory disappears from the complementary row. That may be the correct behavior, not a missing recommendation.

Eligibility check

An eligible product passes every gate before it reaches the card

Use this sequence for one candidate. If the candidate fails a gate, record the reason instead of editing the relationship.

Follow the working path

1 Documented

Store status

Active product with the intended product template and no unlisted state.

2 Documented

Channel

Published to Online Store and available on the storefront.

3 Test it

Commercial data

Price is above zero with a usable title, image, and option state.

4 Documented

Inventory

Availability satisfies the recommendation intent and selling rules.

5 Test it

Session state

Candidate is not already in the cart and is not a duplicate.

Reader takeaway: A candidate that fails eligibility should be repaired or excluded. It should not be used as evidence that the relationship is weak.

Check the candidate in the admin and on the storefront. A product can be active in the admin and still be unpublished to the Online Store channel. A product can be published and still fail the card because its chosen variant is unavailable. Record the exact state you see.

Check the anchor too. The recommendation request can fail because the anchor product is not found, is not published, or is identified incorrectly in a custom integration. A missing anchor is not the same as an empty candidate set.

Layer 3

Identify whether the source is manual, automatic, or custom

A Shopify store can show recommendations from manual selections, automatic related-product logic, a theme or API implementation, or another app. Those sources can look identical to a shopper but behave differently when data changes.

Open Search & Discovery and inspect the anchor product. If you selected manual recommendations, verify that the list is still intentional. If you enabled automatic recommendations, understand that the output can change as product data, orders, and customer activity change. Shopify documents purchase history, product descriptions, and related collections as automatic recommendation inputs, with different availability depending on the store.

Source diagnosis
SourceUseful whenInspect first
ManualCompatibility, hero products, category exceptionsStale links, sold-out candidates, ownership
AutomaticBroad coverage and changing relationshipsCold start, thin data, wrong product types
CustomHeadless surfaces and custom rulesParameters, response, cache, tracking

The right source can vary by category. Use automatic relationships for a broad catalog with enough activity. Use manual relationships for parts, compatibility, bundles, and strategic launches. Use a hybrid approach when the store needs both coverage and exceptions.

Layer 4

Audit catalog data and cold-start conditions

Automatic recommendations need evidence. New products, low-volume products, imported orders, and sparse descriptions can produce thin or surprising relationships. This does not necessarily mean the system is broken. It means the store needs an intentional fallback while the product earns enough context.

Inspect the anchor and candidate titles, descriptions, product types, collections, tags, attributes, and compatibility fields. Ask whether a human can explain the relationship from the data. If the answer is no, automatic logic has less to work with and manual selection will be harder to govern too.

Cold-start fallback

When behavior is thin, use catalog context before showing an empty row

A new product still needs a useful discovery path. The fallback should be clear and honest about the relationship.

Follow the working path

1 Test it

New product

No meaningful purchase history or click pattern exists yet.

2 Test it

Category context

Use product type, collection, and attributes to find plausible neighbors.

3 Test it

Editorial review

Select the relationships the team can defend for this launch.

4 Test it

Automatic learning

Let behavior refine the set as evidence accumulates.

Reader takeaway: A fallback is not a failure. An unexplained empty state is the failure. Label the relationship and review it as the catalog changes.

Be careful with imported history. If order history came from another store or platform, it may not support the same recommendation behavior as new orders in the current store. For a new product, use the fields and relationships you know rather than assuming the system can infer a complete network from day one.

Then check the candidate card. A recommendation can be logically correct but look irrelevant because the title is generic, the image is misleading, or the variant detail is hidden. Data quality and presentation quality reinforce each other.

Layer 5

Trace the API response and card rendering separately

If the candidate set is correct but the storefront is wrong, inspect the boundary between data and presentation. Shopify’s Ajax Product Recommendations API can return product data or a rendered section. A custom theme or headless implementation can then alter, filter, cache, or replace that response before the shopper sees it.

Use the browser’s network panel or storefront logs. Confirm the request contains the correct product ID, limit, intent, locale, and section ID where relevant. Confirm the response contains the expected product. Then inspect the DOM and verify that the card reads the same product, price, availability, URL, and image.

Request checklist

recommendations/products.json
 product_id = anchor product
 intent = related or complementary
 limit = the number your card can display
 locale = the shopper’s storefront locale
 compare response → rendered product → clicked URL → analytics event

A 404 can mean the product does not exist or is not published to the Online Store channel. A 422 can mean a required parameter is missing or the intent is invalid. Shopify documents both response patterns in the Ajax API reference. Use the response code to choose the next owner instead of treating every empty module as a ranking issue.

Read the Product Recommendations API reference

Layer 6

Verify measurement before you call the fix a success

A recommendation can look fixed in the browser and still be invisible in analytics. Shopify documents recommendation click, add-to-cart, and purchase reporting, but the implementation needs to preserve the tracking path. A custom card that strips recommendation parameters can make the dashboard undercount or misattribute activity.

Test one anchor and one candidate. Open the module, click the candidate, add it to the cart, and complete a test purchase only if your environment allows it. At minimum, inspect the URL, event payload, product ID, recommendation intent, placement, and session ID. Record what you can prove.

Seen

Module renders

Clicked

Tracked URL survives

Added

Recommended item in cart

Purchased

Outcome reported

If the module is visible but the report is empty, fix measurement before changing candidates. If the report has clicks but the storefront test cannot reproduce them, check event scope, consent behavior, URL parameters, and whether another recommendation surface is mixed into the same report.

Layer 7

Run the 30-minute recovery audit

Use this sequence when a merchant report says “recommendations are not working.” It gives you evidence without requiring a complete implementation review.

1

Choose one anchor product

Pick a product with a clear relationship and one candidate you expect to see.

2

Inspect the product template

Confirm the recommendation or complementary section exists, is enabled, and appears on this template.

3

Check candidate eligibility

Verify active status, Online Store publication, price, inventory, product page, and cart state.

4

Identify the source

Record whether the row is manual, automatic, native API, theme code, or another app.

5

Compare response to card

Confirm the response contains the same product that the storefront card displays.

6

Test the click path

Open the candidate, add it if appropriate, and verify the tracking URL or event.

7

Assign the owner

Classify the failure as theme, eligibility, source, catalog, rendering, or measurement.

The output

Save one screenshot, one expected candidate, one observed result, one owner, and one next test. That is enough to stop random changes across several systems.

Frequently asked questions

Part of a bigger picture: this is the diagnostic spoke for the complete ecommerce product recommendations guide. Read the pillar for placement, relationship design, measurement, and software evaluation.

When Shopify recommendations do not work, resist the urge to add more products or change every setting. Prove whether the module exists, whether products are eligible, whether the relationship is correct, whether the card is rendered accurately, and whether the outcome is tracked.

Which layer will you test first: theme, eligibility, candidate source, rendering, or measurement?

Next step

Connect recommendation problems to product discovery

ParticleSearch helps you inspect the search and discovery path around the product recommendation, so you can fix the right layer first.

Merchant test bench

Turn this guide into three observable checks.

A useful article should leave you with evidence, not just advice. Run these checks on your storefront, record what happened, and make the smallest change that removes the observed failure.

1

Reproduce

one real shopper query

Run the query on mobile and desktop, then compare the first visible result or state with what you expected.

Record: Surface, query, result count, and first useful result.

2

Compare

same query, second surface

Repeat it in the dropdown, results page, or filtered collection so a surface mismatch does not hide behind a successful first impression.

Record: Surface pair, timestamp, and the exact mismatch.

3

Prioritize

highest-value failure

Choose the failure that affects the most intent or the clearest buying path. Do not optimize a low-volume edge case first.

Record: Volume, business impact, owner, and next test date.

The evidence rule

Keep the query, expected result, observed result, date, device, and next action together. A source can tell you what the platform documents. Only your own storefront and query log can tell you what is happening now.

Ready to test the fix?

Give your shoppers a clearer path to products.

Install ParticleSearch, run the query set from this guide, and compare the storefront behavior with your current baseline.

Install on Shopify