Products not showing in ChatGPT Shopping: find the cause and fix it
A product missing from ChatGPT Shopping has usually failed one of five checks that come before ranking: ChatGPT cannot read its page, the route that should carry it is off or ineligible, the record lacks a required field, the data is stale or contradicts itself, or it is eligible and loses to a better-described product. Run the checks in that order and the cause is normally the first one that fails.
By the Sighted team. Updated .
In short
- Five checks come before ranking: crawler access, the route's eligibility, the product's own fields, data that is fresh and consistent, and relevance against better-described products.
- OAI-SearchBot is the crawler that decides whether a site appears in ChatGPT's search answers; disallowing GPTBot does not touch search, and most product cards come from web crawl.
- On Shopify the admin names the failed rule under Sales channels, Agentic; a direct feed requires nine fields and rejects a row with an unrecognised availability value.
- Access comes first, because a page the crawler cannot reach has nothing to rank; attribute work follows on the products that pass.
How a product reaches ChatGPT in the first place
ChatGPT has three ways to learn about a product:
- Shopify stores reach it through Shopify Catalog, which OpenAI's help centre says is already integrated and needs no work from the merchant.
- Any merchant can apply to OpenAI for direct feed access and upload a product file in its feed format.
- OAI-SearchBot, OpenAI's search crawler, reads whatever product pages it is allowed to fetch.
The third route carries most of the weight. Profound's analysis of 812,190 product cards shown in ChatGPT between 18 and 25 June 2026 found 87.3 percent of them sourced from web crawl and 12.7 percent from direct merchant feeds. A store with no feed and no Shopify Catalog is relying entirely on what its pages say and on whether the crawler is allowed to read them. The requirements checklist collects the rules of all three routes.
Cause 1: OAI-SearchBot cannot read your product pages
OpenAI's crawler documentation is plain: sites opted out of OAI-SearchBot are not shown in ChatGPT search answers, though they can still appear as navigational links. Open your robots.txt and read it as the crawler does. A group headed User-agent: OAI-SearchBot governs it; with no group of its own it follows the rules under User-agent: *, so a blanket Disallow: / written years ago for scrapers blocks it too.
The two other OpenAI agents are separate controls. GPTBot gathers training data, and disallowing it does not touch search. ChatGPT-User fetches pages when a user asks for one and is not used to decide what appears in search. Firewalls and bot-management rules block crawlers that robots.txt allows; OpenAI publishes OAI-SearchBot's addresses at openai.com/searchbot.json so you can allow them. After a change, OpenAI says it can take about 24 hours for its systems to adjust.
This is the cause retailers skip, because it does not look like a product problem. A crawler that cannot reach a page, or cannot settle on which of two copies is the page, has nothing to rank.
In Sighted's pilot with Onboard Sportswear, the work took in the site as well as the records: Sighted consolidated duplicate URLs, submitted the site's first sitemap and addressed indexing gaps, alongside enriching the products. Over the pilot, AI citation coverage went from 0% to 33% of the tested responses, organic clicks rose 59% and impressions in Google's AI features rose 1,140%.
Cause 2: the Shopify route is off, or the store fails a rule
On Shopify the ChatGPT channel is on by default for eligible stores, so the question is whether yours is eligible. Shopify's help centre and Shopify Catalog's requirements set the store-level rules:
- The store sells to customers in the United States, though it can be based anywhere.
- Terms of service, privacy and return policies are complete under Settings, Policies.
- The merchant has agreed to the Agentic Storefronts supplemental terms.
- The store is on the Starter plan or higher, not in private mode, and not one that only serves business customers.
The admin tells you which rule failed. Under Sales channels, Agentic, the Shopify Catalog source shows either a product count or an Ineligible warning, and the warning opens to the reason. If someone turned the channel off, an opt-out takes up to seven days to stop data being shared, and Shopify says opting out never fully hides a product: ChatGPT can still find it by crawling the page.
Cause 3: the product itself fails Shopify Catalog's rules
A store can be eligible while individual products are not. Shopify Catalog's requirements list what each product needs: a title, at least one image, a price above zero (free products are left out), publication to the online store with an identifiable URL, a status other than Unlisted, and no setting that hides it from search engines.
It also excludes whole categories, among them alcohol, tobacco and vaping, weapons, prescription and medical products, adult content, event tickets, live animals, services and add-ons, and anything Shopify itself classifies as Uncategorized. Products sold only to business or wholesale customers are excluded when Shopify can detect it, and OpenAI applies its own prohibited list on top.
The Uncategorized rule is about Shopify's own classification, which it derives from the product's information and which can differ from the category set in the admin. Shopify's own advice is that complete and accurate product information is what gets a product classified correctly.
That problem is familiar from the other side of the feed. SO-ME, the consumer shopping platform Sighted powers, receives product feeds from retailers including ASOS, REVOLVE, Vinted, M&S, New Look, Debenhams and EGO, and the same kind of product arrives under different categories and with different attributes from one feed to the next. A classifier reading the product's own information, as Shopify's does, can only place what the record states.
Cause 4: a direct feed is rejecting the row
If you upload a feed to OpenAI, the row has to pass validation before eligibility is even considered. OpenAI's feed reference requires nine fields on every product: item_id, title, description, url, brand, seller_name, image_url, availability and price. The rules that reject or quietly change a row:
- An availability value that is missing, empty or not one OpenAI recognises rejects the whole row.
- Placeholders such as null, n/a or unknown are invalid in optional fields; leave the field out instead.
- A GTIN must be 8, 12, 13 or 14 digits with a valid check digit.
- OpenAI asks for titles of at most 150 characters and descriptions of at most 5,000.
- A sale price that is zero, higher than the price or in another currency is ignored rather than rejected, so the product shows at full price.
- Image and product URLs must be absolute and publicly reachable, and the image should show the variant it belongs to.
- The is_eligible_search field defaults to true; set it to false and checkout eligibility goes too.
OpenAI also says eligibility does not guarantee display, which is where cause five begins. The ChatGPT Shopping feed page walks the file field by field.
Cause 5: the data is stale or disagrees with itself
ChatGPT shows prices and availability it receives from providers, and OpenAI's help centre says updates to pricing or shipping terms can take time to appear. Shopify Catalog updates continuously. A direct feed updates when you send it, and OpenAI asks for a new file when a sale starts or ends and whenever stock changes, because the sale dates in the feed do not schedule anything.
The silent version of this cause is disagreement: one price on the page, another in the structured data, a third in the feed, or a product the page calls in stock that the feed calls sold out. OpenAI treats the merchant's availability and price as ranking factors, so a record that is wrong in one place is competing against its own copy elsewhere. Check the three sources against each other for your ten best sellers before anything else.
The product is eligible and loses to a better-described one
When every check passes, absence is a ranking outcome, and OpenAI describes two decisions. A product enters the carousel when ChatGPT perceives it relevant to the shopper's intent, weighing the request and its context against available options, price, reviews and ease of use, with a budget in the prompt pushing price up the order. Once a product is chosen, the merchants offering it are ranked on availability, price, quality and whether they are the maker or primary seller. OpenAI says plainly that not every available product is shown.
Profound's sample of June 2026 cards found rank-one cards carried a median of 787 reviews against 352 for cards at rank four and lower, a correlation rather than a rule. What you control is whether the page and feed state the facts a shopper's constraints turn on: material, fit, compatibility, dimensions, what is in the box. The ranking factors guide takes this apart signal by signal.
Questions retailers ask
Does blocking GPTBot hide products from ChatGPT Shopping?
No. GPTBot collects training data and OpenAI treats it as a separate control. OAI-SearchBot is the agent whose robots.txt rules decide whether a site appears in search answers.
Can a Shopify store based outside the United States appear?
Yes, provided it sells to customers in the United States. Shopify's rule is about the market the store serves, and it states that the store itself can be based anywhere.
How soon after a fix should the product show?
OpenAI gives one figure, about 24 hours for a robots.txt change to be picked up. Shopify says Catalog updates continuously. For feed and page changes OpenAI commits to no interval, only that updates can lag, so recheck after a day rather than an hour.
What to do next
- Fetch your robots.txt and confirm OAI-SearchBot is allowed, by its own group or by the wildcard rules, and that the firewall admits the ranges in openai.com/searchbot.json.
- On Shopify, open Sales channels, Agentic and read the Shopify Catalog source: a product count means the store is in; Ineligible opens to the reason.
- Check the product against Catalog's rules: title, image, price above zero, published, not Unlisted, not hidden from search engines, a Shopify classification that is neither Uncategorized nor an excluded category.
- If you send a direct feed, validate the nine required fields, the availability value and any GTIN before upload.
- Compare price and availability across the page, its structured data and the feed, and fix whichever is wrong.
- Test with the prompts a shopper would type, with no brand name in them, and note whether a carousel appears at all: OpenAI says ChatGPT can show product cards when the question suggests shopping intent, so a question without it may get none.
What Sighted checks for you
The free AI visibility audit runs the first check for the whole site and part of the fifth on every product page it finds:
- It reads robots.txt once and reports which AI crawlers are allowed, OAI-SearchBot among them; a blocked crawler is reported as a gap for the whole site, because it costs every product at once.
- On each page it reads the structured data, title, description, price, availability, variants and photos, and checks that a price is present both in the structured data and on the visible page.
- The readiness score inside the product goes further on the record's format: a price with a currency code, a recognised availability value, https links, a GTIN of 8, 12, 13 or 14 digits.
Inside the product, Sighted enriches the catalogue at scale: it writes the attributes a product's category needs from the merchant's own descriptions, options and photos, in the store's voice, for the merchant to approve. From the same records it builds the Google feed and, for approved OpenAI partners, the ChatGPT Shopping feed, with the seller name OpenAI requires and the store country and return policy its format can carry.
On Shopify, the approved attributes are written back to the store, so Shopify Catalog carries them too. The same technology powers SO-ME, which meets the same matching problems from the shopper's side.
See which of these checks your own product pages fail.