AI Product Offers on Shopify — Use Purchase History, Not a Guessing Engine

Why catalogue-based recommendations stall, how to build offers from real order history, and the guardrails that stop AI from suggesting a second pair of the same shoes.

Editorial illustration for AI Product Offers on Shopify — Use Purchase History, Not a Guessing Engine

Key takeaways

  • The only reliable training set for product offers is your own orders. Category-similarity engines recommend more of what is already in the cart.
  • Start with frequently bought together from order history, then let a model rank within that set. Do not let a model invent pairs you have never sold.
  • Exclude the parent product, its other variants, and anything already in the cart. Most "AI" failures are missing exclusions, not missing intelligence.
  • Show one or two offers. A model that returns twelve candidates is a merchandising problem, not a UI problem.

"AI offers" is a vague promise. The useful version is narrow: look at what people actually bought together, then show the next most likely SKU at the moment the shopper is about to buy.

The useless version is a generic similarity model pointed at your catalogue. That model will recommend another pair of running shoes to someone who just added running shoes, because they are similar. Similar is not complementary.

Order history is the feature

Co-occurrence is a boring statistic and a very good merchandiser. If 18% of orders that contain the ceramic mug also contain the 250g beans, that pair is an offer. You do not need a foundation model to notice it. You need a query and a place to put the result.

A model becomes useful one layer up: ranking which of several historically real pairs to show this shopper, given what is already in the cart, the market they are in, and the margin you will accept. Ranking is AI. Inventing pairs you have never sold is improvisation.

Guardrails that prevent the obvious failures

Before any model runs, exclude:

  • The product already on the page
  • Other variants of that product
  • Anything already in the cart
  • Out-of-stock SKUs
  • SKUs you have blacklisted (clearance you do not want attached to full-price heroes, or vice versa)

If your AI offer still looks stupid, the exclusions are incomplete. Fix those before you tune the model.

One slot, two products at most

The product page can support a single "complete this" block. Two products in that block is plenty. Twelve is a catalogue dump with nicer copy.

If the model returns a long tail of weak pairs, you do not need a carousel. You need a higher threshold: only show a pair that has actually occurred, at a rate you would defend to a merchandiser.

Measure the pair, not the click

Clicks on a recommendation are vanity. Attach rate and the margin of the attached SKU are the job. An AI that attaches a low-margin accessory at 8% is worse than a merchandiser who attaches a high-margin one at 5%.

Frequently asked questions

Do I need a lot of orders before AI offers work?

You need enough co-occurrence. For a catalogue of a few hundred SKUs, a few thousand orders with two or more line items is usually enough to beat a manual merchandiser. Below that, curate the pairs yourself and keep the AI off.

Can AI replace a merchandiser?

It can replace the spreadsheet of "what goes with what" once the data exists. It cannot replace a decision about what you are willing to discount, or which products you refuse to attach to which.

Why does my AI keep recommending the same product?

Because the cart already contains something in that category and the model is doing category similarity. Switch the source to order co-occurrence and add an exclusion for the parent and its variants.

Should AI offers be on the product page or in the cart?

Both, with different jobs. On the product page, complete this product. In the cart, complete this order. Do not show the same pair in both places in the same session.

Ninety9 Team

We build 5 conversion apps used by Shopify merchants in Bulgaria and beyond. Everything we write here comes out of what we see in real store data.

Keep reading

Related articles

Editorial illustration for Cross-Sell vs Upsell on the Shopify Product Page
Bundles & Upsells Addly

Cross-Sell vs Upsell on the Shopify Product Page

The difference between selling more and selling up, which one belongs next to the buy box, and why mixing them in one widget makes both worse.

1 min read
Editorial illustration for Where to Place Bundles on a Shopify Product Page
Bundles & Upsells Addly

Where to Place Bundles on a Shopify Product Page

Above the fold, in the buy box, or below the description — the three placements for a bundle offer and the one that consistently gets the add.

1 min read