Skip to content
Home » Insight » AI Shopping Assistants: Why Your Products Get Skipped

AI Shopping Assistants: Why Your Products Get Skipped

Ask an AI shopping assistant for a cordless impact driver under two hundred pounds with a brushless motor, and it will give you five products. Your competitor is in that list. You are not. Nothing is broken on your site. Nobody has penalised you. The assistant simply could not establish that your product met the conditions, so it moved on. Here are the six reasons that happens, and what each one looks like inside a real catalogue.

How an AI shopping assistant actually picks a product

The failures only make sense against the mechanism, so start there.

There are two routes into an assistant’s answer. The first is a merchant feed. Google’s Shopping Graph is fed largely by Merchant Center. Sundar Pichai said in January 2026 that it holds over 50 billion listings. More than 2 billion of them are refreshed every hour. OpenAI takes merchant feeds through the Agentic Commerce Protocol, and Shopify and Etsy sellers are integrated already. Microsoft runs a Copilot Merchant Program on the same principle.

The second route is your product page. OpenAI describes shopping research in ChatGPT as organic and based on publicly available retail sites, reading product pages directly and citing sources. Google is blunter still. Its guidance says there are no additional requirements to appear in AI Overviews or AI Mode, and no special structured data you need to add.

Both routes end in the same operation. The assistant has to resolve which product this is. It has to check each condition in the request. Then it has to confirm the item is buyable at the stated price. Fail any of the three and you are not in the answer. That resolution step is where most of our applied AI work lands. It is a product data problem, not a marketing one.

1. You are not in a feed the AI shopping assistant reads

The most common reason is the least interesting. The product is not present on the surface at all.

This is rarely a decision anyone made. It is attrition. Products drop out of a feed when a required field is missing, and every feed has a different required set. OpenAI’s product feed spec requires item ID, title, description, URL, brand, image URL, availability and price on every item. It also requires explicit search and checkout eligibility flags. A product with no brand value is not a marginal listing. It is not a listing.

Trade-only and gated lines vanish for a different reason. So do products where the price sits behind a login. If your commercial model hides prices from anonymous visitors, you have chosen not to appear in price-conditional answers. That may be the right call. It should be a call, not an accident.

Then there is crawler access. OpenAI runs three agents and they do different jobs. GPTBot is for model training. ChatGPT-User handles user-initiated fetches. OAI-SearchBot powers search, and OpenAI states plainly that sites opting out of it will not be shown in ChatGPT search answers. Blocking GPTBot is a defensible content decision. Blocking OAI-SearchBot removes you from the answer.

What it looks like. Count sellable SKUs in a category. Count how many are in each outbound feed. The gap is usually between five and twenty per cent, and nobody in the business knows the figure.

2. The product has no stable identity

An assistant has to decide that your listing and the thing the shopper named are the same object. That is entity resolution, and it runs on identifiers.

GTIN is the primary key across most of these systems. Google recommends using the most specific GTIN that applies. OpenAI’s feed spec takes GTIN as an eight to fourteen digit value, with spaces and dashes stripped. MPN carries more weight in industrial and automotive catalogues, where the manufacturer’s part number is what a trade buyer actually says out loud.

Brand is the other half and it is worse. In most raw exports the brand column is free text. We routinely find four spellings of the same manufacturer inside one category. To a machine that is four brands, and none of them match cleanly against the name in the shopper’s question. Own-label products have the same problem in reverse. The retail brand is recorded and the legal manufacturer is not recorded anywhere.

What it looks like. Blank GTINs on sellable items. Identifiers reused across a discontinuation and a relaunch. A brand column with no controlled reference behind it.

3. The thing the shopper filtered on is not a field

This is the failure that costs the most and gets noticed the least.

“Brushless” was a condition in that opening question. If brushless exists in your catalogue only as a word in a paragraph of marketing prose, it is not a filter. It is a sentence. An AI shopping assistant cannot reliably confirm the condition. It prefers a product where the fact is stated as data.

Google has been explicit about the direction here. Merchant Center now accepts conversational attributes, described as helping AI systems and conversational agents understand a product’s specific nuances, including a question and answer attribute. It also has a product detail attribute for technical specifications. That is structured as section name, attribute name and attribute value, repeatable up to 100 times per product. Google’s own AI performance insights pilot reports on the wording of functional benefits shoppers prioritise in conversational searches. The examples it gives are maximum cushioning and arch support.

None of those fields populate themselves. They come out of your attribute schema. If the schema has forty attributes for a category that needs a hundred and twenty, no amount of copywriting closes the gap.

What it looks like. Take the top fifty queries for a category from Search Console. Count how many concepts exist as populated attributes. Half is a common answer. A third is not unusual.

4. Your variants are a dropdown, not a data structure

Ask an assistant whether a chair comes in oak. It needs to know that oak is a value on a variant axis. On many sites, oak is an option in a select element that changes an image.

Google’s product variant markup handles this with ProductGroup. The group carries a productGroupID, the variants sit in hasVariant or point back with inProductGroupWithID, and variesBy names the axes. Google supports six axes: colour, size, suggested age, suggested gender, material and pattern (schema.org spells several of those the American way). If your catalogue does not express a parent and its children, you cannot emit that markup, and no plugin will invent it for you.

The commercial damage is specific. Price and stock attach to the variant, not the group. If the structure is missing, the assistant either quotes the cheapest variant’s price against the wrong item or declines to answer. Furniture, apparel and building products suffer worst, because the variant axes are the whole basis of the purchase decision.

What it looks like. A single product record with size and finish held as free text. Or a hundred flat records with no parent, so the assistant treats near-identical products as competitors to each other.

5. Price and availability disagree with each other

There are usually three versions of your price. The one in the feed, the one in the page’s structured data, and the one a human sees on the page. They are refreshed on different schedules by different systems.

Feeds go out on a cadence. OpenAI’s commerce documentation describes daily snapshots after an initial validation feed. Structured data updates when the page is generated, which may be from cache. The visible price updates when the customer loads the page. Under promotional pricing those three drift within hours.

Google’s structured data policies require markup to be a true representation of the page content. They also prohibit marking up content not visible to readers. Beyond the policy, there is a practical consequence. An assistant that has been contradicted once has a cheap way to protect the user, which is to prefer a merchant whose numbers agree.

Availability is worse than price, because it is binary and highly visible. OpenAI’s feed spec carries in stock, out of stock, pre-order, backorder and unknown. It requires an availability date for the pre-order and backorder cases. Sending “in stock” for a line you cannot ship is the fastest way to lose eligibility.

What it looks like. Pick twenty SKUs. Compare feed, markup and visible text on the same afternoon. Two out of three matching is a pass in most audits we run, which tells you how normal this failure is.

6. The specification only exists after JavaScript runs

The last one is purely technical and it is the easiest to test.

Vercel and MERJ published server-log analysis in December 2024 covering the major AI crawlers. They found that those crawlers fetch JavaScript files but do not execute them. Client-side rendered content is not readable to them. Googlebot renders, and Google’s Gemini uses Googlebot’s infrastructure, so the Google path is different. The others largely are not.

This matters because of where specifications live on a modern product page. The spec table is often a tab that populates on click. Stock is often a widget that calls an inventory API after paint. Reviews and Q and A blocks are usually third-party embeds. All of that can be invisible to the crawler that is deciding whether you meet the shopper’s conditions.

What it looks like. Save twenty product pages as raw HTML with JavaScript disabled. Not the rendered DOM, the source. If the spec table, the price and the stock status are missing, so is your answer.

The root cause: your catalogue was built for a human, not an AI shopping assistant

Line the six up and they share one ancestor. Every one of these catalogues assumed a person at a screen. Someone who would read the prose, use the dropdowns and interpret the pictures. That assumption held for twenty years and it is now only half true.

A person tolerates ambiguity. They read “brushless motor for longer life” and understand it as a specification. They see four spellings of a brand and know it is one company. They click the size dropdown without needing a data model behind it. A machine does none of that. It needs the fact stated once, in a field, with a unit, attached to an identifiable object.

This is also why the fix is not a content project. Rewriting descriptions on a catalogue with no identifiers, no variant structure and forty attributes per category is decorating a building with no foundations. We have watched clients spend six figures on copy and see nothing change, because the thing being tested was never the copy. Our note on product content performance covers what actually moves when you measure it properly.

What to do instead, in order

Sequence matters more than effort here. An AI shopping assistant fails at the first missing step, so work upwards. Do these in this order.

  1. Presence. Reconcile sellable SKUs against every outbound feed. Fix the required-field failures first, because they are cheap and they restore whole products.
  2. Access. Read your robots.txt with the retrieval agents in mind, not just the training ones. Make the opt-outs deliberate.
  3. Identity. GTIN and MPN coverage, no reuse, brand as a controlled record with the legal manufacturer behind it.
  4. Structure. Parent and child in the data, then ProductGroup and variesBy in the markup.
  5. Attributes. Take the top fifty queries per category and turn every recurring concept into a typed field with a unit. This is the long pole and it is where the value is.
  6. Agreement. Get feed, markup and visible page telling the same story about price and stock on the same day.
  7. Rendering. Move specifications, price and stock into the server-rendered HTML.

Copy comes eighth. It matters, but only once a machine can tell what it is reading. If you are on Shopify, our guide to Shopify product content covers where the platform helps and where it quietly does not.

Key takeaways

  • An AI shopping assistant skips products it cannot resolve, cannot verify or cannot buy. All three are data failures.
  • Feed presence is the most common cause and the least investigated. Count your coverage before anything else.
  • Identifiers and brand entities come before content. Without them the assistant cannot match your product to the question.
  • If the condition a shopper filters on is prose rather than a field, you lose to a competitor who structured it.
  • Variant structure decides whether price and stock attach to anything meaningful.
  • Most AI crawlers do not execute JavaScript, so client-side specifications are not read.

None of this is speculative work. It is the same attribute, identifier and variant discipline that made catalogues work for marketplaces and trade portals, applied to a new consumer. If you want to know where your catalogue sits, we run a fixed-scope diagnostic against a live category. You get the findings back with a remediation sequence. Book a thirty minute call. Or look at how we approach product content enrichment, and where applied AI pays back first.