6-step pipeline that decides which products ChatGPT shows
and the one step that's yours to control
If you are thinking about Shopify's Catalog the way a search index works, it’s not the right direction. Your product is either in it or it isn't.
So what decides whether ChatGPT shows a shopper your product?
As of now, a shopper's question runs through 6 stages before anything is displayed, and 5 of those happen somewhere a merchant never sees.
I broke down the input side of this a few weeks back - the fields Shopify reads first. Read the full breakdown here →
This is what Kate Ragotte and Kyle Risley shared in the agentic commerce session at DotDev. (Ragotte runs product for Shopify. Risley leads SEO.)
Coming back to the 6-step pipeline that ChatGPT runs. Here's what happens to a query before your product ever gets compared to anyone else's.
1/ Query understanding
The shopper's query gets parsed before anything touches your catalog. Nothing about your product matters yet - this step is only about the question.
2/ Slot filling
Take a real query: wide leg denim pants. That sentence maps into three slots - silhouette: wide leg, material: denim, product type: pants.
Everything from here runs against those three slots, not against the query itself.
3/ Candidate generation
Also called the recall stage. This is where Shopify decides which products are even eligible to be shown. If your product doesn't make this list, nothing in the process matters.
4/ Filtering on hard constraints
Every candidate gets checked against each slot, pass or fail. Decision theory calls this a non-compensatory rule. A strength on one attribute can't cover a miss on another.
A well-written description can't make up for an empty field.
5/ Ranking
This step only looks at whichever brand survived step four. Reviews, social proof, search ranking, and shopper history - all decide the order they show up in from here.
6/ Entity resolution
Products cluster last, by something Shopify calls a Universal Product ID - a shared ID that tells Shopify when two listings are actually the same item.
The same product, sold by different merchants, collapses into one entry instead of splitting into separate listings that compete with each other.
What you actually control
One of the six steps is yours to control: candidate generation (step 3), the step that decides whether your product is even in the running.
Shopify's ML reads five fields to build your Catalog entry, ahead of any query: title, description, images, options, and tags.
Anything sitting in a custom metafield lives outside those five. The model won't reach it unless you point it there with the schema mapping tool.
Combined listings matter here too. They tell the model how your variants group, and that holds even if you never publish the parent product. Skip them, and near-identical listings split your signal on their own. An agent will end up picking randomly from your products instead of surfacing the one that actually fits.
How to read your own Catalog API response
1/ Open "Full catalog data" on your top result and you get exactly what an agent receives - material, dimensions, construction details - fields your category carries.
2/ Top Features and Selling Point are written from those fields - built entirely from what's structured above them. A thin record produces thin enrichment here.
3/ Highlighted words mark exactly where your record answered the query. You get a rough read on your match density against whoever's ranking above you.
4/ Run a few different queries against the same product and the gaps show up. In a real test on Gymshark, one product won 2 of 3 queries it should have owned. The third one’s target gender was blank - the kind of empty field that costs you outright.
Some fields will look filled in and still not help. Shopify's AI can infer details like fabric type or fit as plain text without ever making them filterable.
Right now, agents can only filter Shopify Catalog on color, size, and gender. That list is expected to grow, so it's still worth filling fields to be ahead.
What not to do
Two things that waste effort.
Don't put marketing copy in the description field. Shopify's ML is what reads that field, so write it to be extracted, not to sell. "Meticulously crafted" isn't a filterable fact.
Don't bother restructuring plain-English tags either. Blue and color:blue resolve to the same thing. The model already handles that translation on its own.
Run the test on the queries you should be ranking for: Check it out here →
If you'd rather have the fields filled through AI, try Atomz on Shopify.
- Ankit
If this was useful, the next one will be too.
Weekly. Free.
Unsubscribe with one click.
