← All insights
Product data7 min read

How to prepare your product catalog for shopping agents

Agents read your product pages, feeds and policy pages, then check them against each other. A hands-on guide to building a catalog agents can verify, from product identifiers to return terms.

In our previous article, we explained that shopping agents choose a store based on five criteria: identity, price and stock consistency, delivery and return terms, evidence, and a transaction endpoint. This article covers the hands-on side: where does an agent read product information, and how do you make every source consistent with the others?

Agents read product information from three places

A shopping agent doesn't rely on a single source for your product. It gathers information from three layers and compares them:

  1. Product page. The text on the page and the structured data embedded in it (schema.org JSON-LD).
  2. Product feeds. The product lists you send to Google Merchant Center and to agent channels such as ChatGPT. For products to be discoverable in ChatGPT, OpenAI's product feed spec requires these fields: product ID, title, description, link, brand, seller name, image, availability and price.
  3. Policy and company pages. Shipping, returns, contact and company information.

Add your marketplace listings to that. To an agent, all of these are the same seller's word. If they don't match, the agent can't tell which one to trust. That's why the first rule of a good catalog is: every piece of information comes from one source and goes everywhere at the same time.

1. Identity: give every product one permanent number

An agent can only match the product on your site with the one in your feed and on the marketplace through a shared identifier.

  • GTIN. The global product number issued through the GS1 system. Numbers issued in Turkey usually start with 868 or 869. That prefix doesn't indicate where the product comes from, only which GS1 member organization issued the number. For products you resell, use the manufacturer's GTIN, and never make up a number.
  • MPN and brand. For products without a GTIN, the manufacturer part number, together with the brand field, identifies the product. OpenAI's feed spec also lists GTIN and MPN among the recommended fields that improve matching.
  • Persistent product ID. The product ID in your feed and the product URL shouldn't change from campaign to campaign. To an agent, a product whose ID changes is a new product with no history.
  • Variants. Every color and size is a separate product, with its own GTIN, its own price and its own stock status. Since February 2024, Google has supported grouping variants under ProductGroup with hasVariant, variesBy and productGroupID.

2. Price and stock: one source, everywhere at once

A price conflict alone is enough to get a product dropped. There are three common causes: marketplace listings updated by hand, feeds refreshed once a day, and pages that load the price later, in the browser.

  • Make sure every product's Offer in your structured data includes price, priceCurrency (such as TRY or EUR) and availability (InStock, OutOfStock, PreOrder).
  • Update your feed as soon as a promotion starts and as soon as it ends. OpenAI's spec asks for this explicitly: send the current price, and refresh the feed when a discount starts and when it ends.
  • Put price and stock information in the page's initial HTML response. According to Vercel's December 2024 analysis, the crawlers from OpenAI, Anthropic, Meta and Perplexity didn't execute JavaScript, so they never saw a price loaded later in the browser. That's still the safe assumption.

3. Shipping and returns: numbers, not "fast"

An agent can't compare "fast shipping" and "easy returns." It can compare "1-2 business days nationwide, free over €50" and "free returns within 30 days of delivery."

  • Site-wide policy. Google supports declaring a return policy that applies to all of a store's products with hasMerchantReturnPolicy under Organization. Since November 2025, a site-wide shipping policy can be defined the same way, with hasShippingService under Organization.
  • Product-specific exceptions. If a product has different terms (for example, no returns on hygiene products), add a separate MerchantReturnPolicy to that product's Offer.
  • Sources must agree. According to Google's documentation, return settings entered in Merchant Center or Search Console take precedence over the structured data on your site. If the dashboard says 14 days and the page says 30, what Google shows will contradict your page.
  • Agent feeds. In OpenAI's spec, the return policy link (return_policy), whether returns are accepted (accepts_returns) and the return window (return_deadline_in_days) are separate fields.
  • Policy page. Publish the policy as plain HTML, not PDF. Keep it short and specific, with real numbers, so an agent can understand it in a single read.

4. Product descriptions: answer the questions an agent will ask

An agent checks a product against the shopper's constraints: budget, size, compatibility, use case. If the description doesn't address those constraints, the product doesn't make it into the comparison.

  • State measurable attributes clearly in the text: dimensions, weight, material, capacity, compatible models, warranty length. Provide the same information in structured data as additionalProperty.
  • Adjectives like "best," "unmatched" and "premium" carry no information for an agent. "18-month warranty," "TSE-certified (Turkish Standards Institution)" and "compatible with iPhone 15 and 16" do.
  • Back up claims that need documentation (certifications, test results, warranties) with a link to the document. Claims that can't be verified are often ignored.
  • Say in one sentence who the product is for and in what situation: "Single-group machine for small kitchens, suited to 4-6 cups a day."

5. Access: don't shut the door by accident

Even the best-prepared catalog is useless if the agent can't reach it.

  • robots.txt. According to OpenAI's crawler documentation, sites that block OAI-SearchBot aren't shown in ChatGPT's search answers. This setting is independent of GPTBot, which is used for model training: you can opt out of training and still stay open to search.
  • Bot protection. Bot rules in your CDN and firewall can block agent crawlers without you meaning to. Check your server logs to see what responses these crawlers get.
  • llms.txt. Proposed by Jeremy Howard in September 2024, this file is a Markdown map that points language models to a site's most important content. It's a proposal, not a standard, and it's unclear which systems use it. It's cheap to create, but it comes after structured data and feeds in priority.

Where to start

Don't try to fix the whole catalog at once. Start with the products that drive most of your revenue:

  1. Pick your 50 best-selling products and complete their GTIN, MPN, brand and variant information.
  2. Lay out the price and stock information for these products from your site, feeds and marketplaces side by side, and find the source of every conflict.
  3. Rewrite your shipping and return policies with numbers, so your Merchant Center settings, site-wide structured data and policy page all say the same thing.
  4. Add measurable attributes and a "who it's for" sentence to your product descriptions.
  5. Check robots.txt and your bot rules, and confirm that price and stock information is in the initial HTML response.
  6. Measure the impact of your changes. We explain how to set up that measurement in our article on measuring the agent channel.

The bottom line

An agent-ready catalog isn't a new marketing project. It's a data discipline. When every product has one identity, prices come from a single source, policies are stated in numbers, descriptions are measurable and the door is open, an agent has no reason to drop you.

Specoria asks shopping agents about your store's products using real buyer tasks, traces each point where you get dropped back to its source, and ranks which fixes will have the most impact. Start with a free readiness report.


Sources