How products get into ChatGPT: it runs on a feed, not an agents.md file

“How do I get my store recommended by ChatGPT?” is the question I hear most from merchants right now. Search it and you will find a hundred near-identical checklists, and most of them open with the same instruction: drop an agents.md file, or an llms.txt file, at the root of your site and wait to be discovered. I run Elytron Labs and I build Pollen, a layer that prepares a store’s product data for exactly these AI surfaces, so I spend my days inside this plumbing. The text-file advice is not so much wrong as aimed at the wrong target. It answers a question you were not asking.
Because there are two different things a merchant can mean by “show up in ChatGPT,” and they run on two separate pipelines.
Recommended is not the same as cited
When ChatGPT surfaces a row of product cards as a shopper is comparing what to buy, that is a recommendation. When the assistant names your brand inside a written paragraph, that is a citation. They look similar in the chat window, but the machinery behind them is not the same, and the work that earns one does little for the other.
Recommendations come from a feed, and both platforms say so
Start with OpenAI’s own commerce documentation. On the key concepts page, the mechanism is stated plainly: “Merchants provide a secure, regularly refreshed feed (CSV or JSON),” and integration “involves sending an initial sample feed for validation, and daily snapshots.” Ranking is driven by feed attributes, not by anything crawled: OpenAI says recommended attributes like “rich media, reviews, and performance signals” improve “ranking, relevance, and user trust.” The document specifies feeds only. There is no mention of a crawler reading a file at your web root.
The product feed spec is even more concrete. You “upload a UTF-8, tab-delimited .txt or .tsv file, or a comma-delimited .csv file,” and every row must carry a fixed set of fields: id, title, description, link, image_link, availability, price, brand, plus an is_eligible_search flag. That is the whole gate. A product with those fields populated and valid can surface; a product missing them is quietly skipped.
Shopify tells the same story from the other side. Its help documentation states that “Shopify Catalog is the authoritative product data feed to your agentic channels,” and that once a merchant sets their data up, “that data is surfaced everywhere, including ChatGPT, Microsoft Copilot, Google AI Mode, and Gemini” (see ai commerce at scale and the agentic storefronts docs). The pipe that puts your products in the cards is a structured catalog, on both platforms.
So where does agents.md actually fit?
It is real, and on Shopify it is not even something you write by hand. Shopify auto-generates it, and calls “/agents.md … your canonical agent discovery URL, which is the source of truth.” But read the next line in the same document: “The agent discovery files are separate from Shopify Catalog, and they don’t replace any Shopify Catalog capabilities.” That is the platform that ships the file telling you it is not the product-data pipe. Its job is to be an operator’s manual for an agent: store name, policies, endpoints, the cart-to-checkout flow. Useful context. Not a ranking lever.
Which means the common move, hand-authoring an agents.md or llms.txt on a non-Shopify store and expecting to appear in the shopping cards, is doing work that no platform documents as an input to recommendations. It is a signpost, not a shelf.
The Google feed you thought was just for ads
One detail in the OpenAI spec is easy to miss and worth a lot: the ingester “selects appropriate parser (OpenAI or Google-compatible),” and the required fields above are the exact Google Merchant Center product attributes. Your Google product feed is load-bearing twice over. It is also why this week’s Content API sunset mattered beyond ads: a feed that silently stops updating does not just drop you from Google Shopping, it starves the same structured pipe these assistant surfaces read.
What to actually do
If you want to be recommended, the work is unglamorous and it is all in the data:
- Make the feed complete. Every required field on every product: a real description, a valid image link, price, availability, brand. Empty descriptions and missing images are the most common reasons a product is invisible.
- Make it eligible. In stock, valid product URL, the eligibility flags set. A feed can be present and still filter most of your catalog out.
- Make sure it reaches the channel. Shopify Catalog if you are on Shopify; the OpenAI merchant feed and a healthy Google Merchant Center feed if you are not.
- Then treat agents.md as polish. Fine to have. It will not move you up a shopping result.
Being recommended by ChatGPT is a data-quality job, not a text-file job. If you want to see which of your products are actually feed-ready, the free scan at pollen.elytron.in checks your structured product data the way these pipelines do, no signup required.