
{"id":1683,"date":"2026-07-27T08:09:09","date_gmt":"2026-07-27T08:09:09","guid":{"rendered":"https:\/\/maxaeo.ai\/blog\/product-feed-ai-shopping\/"},"modified":"2026-07-27T08:09:09","modified_gmt":"2026-07-27T08:09:09","slug":"product-feed-ai-shopping","status":"publish","type":"post","link":"https:\/\/maxaeo.ai\/blog\/product-feed-ai-shopping\/","title":{"rendered":"Product Feed for AI Shopping: Which Fields Actually Get Quoted"},"content":{"rendered":"<p><strong>A product feed for AI shopping is the structured catalogue file \u2014 the same Google Shopping spec, plus platform-specific eligibility flags \u2014 that assistants read to name, price and describe your products inside a generated answer.<\/strong> It is not a new file format. It is the same feed, judged by a different consumer.<\/p>\n<p>Most merchants build one the way they built for Google Shopping in 2018: fill every column, chase 100% attribute completeness, celebrate a clean diagnostics dashboard. Then an assistant writes a four-sentence recommendation that repeats a price, half a title, one spec, and a star rating \u2014 and ignores the other fifty fields.<\/p>\n<p>That gap between <em>what merchants populate<\/em> and <em>what assistants repeat<\/em> is measurable. Over six weeks we captured 4,480 AI shopping answers and diffed every product mention against the merchant&#39;s underlying feed record. Nine fields carried 93% of everything the models actually quoted. Several fields that feed vendors sell as &quot;AI-critical&quot; were echoed zero times.<\/p>\n<p>Here is the field-by-field evidence, the framework we now use to read a feed, and the fixes that follow from it.<\/p>\n<h2>What &quot;getting quoted&quot; means in an AI shopping answer<\/h2>\n<p><strong>A field is <em>quoted<\/em> when its value appears in the generated prose the shopper reads \u2014 not in a card, not in a filter, not in a link.<\/strong> &quot;Runs $189 and ships free in two days&quot; quotes price and shipping. A product card showing an image quotes nothing; it renders.<\/p>\n<p>The distinction matters because the three behaviours have different owners. Rendered fields are controlled by the surface&#39;s UI. Filter fields decide whether you enter the candidate set at all. Quoted fields are the only ones that shape how a shopper hears about you \u2014 the sentence that makes them click or skip.<\/p>\n<p>Merchants optimise all three as if they were one job. They aren&#39;t.<\/p>\n<h2>How we tested: 4,480 answers across four surfaces<\/h2>\n<p>We ran 1,120 shopping-intent prompts between 22 April and 2 June 2026 across four surfaces: ChatGPT with shopping enabled, Google AI Mode, Perplexity, and Microsoft Copilot. Prompts spanned eight categories chosen for different attribute density \u2014 running shoes, standing desks, espresso machines, dog food, video-editing laptops, mattresses, vitamin C serums, and cordless drills.<\/p>\n<p>That produced <strong>4,480 captured answers containing 27,400 product mentions from 1,860 merchant domains<\/strong>. For 812 of those domains we could read the underlying feed record (public Google Shopping feed or client-supplied file), which left <strong>11,318 mentions where a field-level comparison was possible<\/strong>. Every rate below is calculated on those 11,318.<\/p>\n<p>Our matching rule: a field counts as echoed when a normalised version of its value appears in the answer text as a span of three or more consecutive tokens. We excluded matches where the value was trivially derivable from the brand name or the URL slug.<\/p>\n<p><strong>Two honest limits.<\/strong> First, we cannot always prove <em>provenance<\/em> \u2014 a price in an answer may have come from the feed, the page, or a retailer aggregator, and for shared values we can only observe co-occurrence. Second, this is one sample in one quarter; surface behaviour changes with model releases, and we have already seen Copilot&#39;s answer length shift twice. Treat the ranking of fields as robust and the exact percentages as a snapshot.<\/p>\n<figure class=\"wp-block-image size-large\"><img decoding=\"async\" style=\"max-width:100%;height:auto\" loading=\"lazy\"  src=\"https:\/\/maxaeo.ai\/blog\/wp-content\/uploads\/2026\/07\/1784738346992-6-46998-1.jpg\" alt=\"Field echo rates across a product feed for AI shopping, showing price and title quoted most often and GTIN never quoted\"><\/figure>\n<h2>The field echo table: what actually surfaced in answer text<\/h2>\n<p>Fields are sorted by echo rate. The &quot;job&quot; column is our classification, explained in the next section.<\/p>\n<table>\n<thead>\n<tr>\n<th>Feed field<\/th>\n<th>Echo rate<\/th>\n<th>Primary job<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td><code>price<\/code> \/ <code>sale_price<\/code><\/td>\n<td>88%<\/td>\n<td>Quote<\/td>\n<\/tr>\n<tr>\n<td><code>title<\/code> (3+ token span)<\/td>\n<td>84%<\/td>\n<td>Quote<\/td>\n<\/tr>\n<tr>\n<td><code>brand<\/code><\/td>\n<td>79%<\/td>\n<td>Quote<\/td>\n<\/tr>\n<tr>\n<td><code>description<\/code> (any span)<\/td>\n<td>61%<\/td>\n<td>Quote<\/td>\n<\/tr>\n<tr>\n<td><code>star_rating<\/code> + <code>review_count<\/code><\/td>\n<td>44%<\/td>\n<td>Quote<\/td>\n<\/tr>\n<tr>\n<td><code>availability<\/code><\/td>\n<td>33%<\/td>\n<td>Quote<\/td>\n<\/tr>\n<tr>\n<td><code>shipping<\/code> \/ delivery window<\/td>\n<td>27%<\/td>\n<td>Quote<\/td>\n<\/tr>\n<tr>\n<td><code>color<\/code> \/ <code>size<\/code> variant attributes<\/td>\n<td>22%<\/td>\n<td>Quote<\/td>\n<\/tr>\n<tr>\n<td><code>material<\/code><\/td>\n<td>16%<\/td>\n<td>Quote<\/td>\n<\/tr>\n<tr>\n<td><code>dimensions<\/code> \/ <code>weight<\/code><\/td>\n<td>13%<\/td>\n<td>Quote<\/td>\n<\/tr>\n<tr>\n<td><code>return_policy<\/code> \/ <code>return_deadline_in_days<\/code><\/td>\n<td>11%<\/td>\n<td>Quote<\/td>\n<\/tr>\n<tr>\n<td><code>q_and_a<\/code><\/td>\n<td>9% overall \u2014 31% where populated<\/td>\n<td>Quote<\/td>\n<\/tr>\n<tr>\n<td><code>unit_pricing_measure<\/code><\/td>\n<td>6% overall \u2014 38% in consumables<\/td>\n<td>Quote<\/td>\n<\/tr>\n<tr>\n<td><code>condition<\/code><\/td>\n<td>3%<\/td>\n<td>Filter<\/td>\n<\/tr>\n<tr>\n<td><code>age_group<\/code> \/ <code>gender<\/code><\/td>\n<td>2%<\/td>\n<td>Filter<\/td>\n<\/tr>\n<tr>\n<td><code>video_link<\/code><\/td>\n<td>0.4%<\/td>\n<td>Render<\/td>\n<\/tr>\n<tr>\n<td><code>gtin<\/code> \/ <code>mpn<\/code><\/td>\n<td>0.2%<\/td>\n<td>Gate<\/td>\n<\/tr>\n<tr>\n<td><code>image_link<\/code><\/td>\n<td>0% quoted, rendered in 51%<\/td>\n<td>Render<\/td>\n<\/tr>\n<tr>\n<td><code>product_category<\/code> (taxonomy)<\/td>\n<td>0%<\/td>\n<td>Filter<\/td>\n<\/tr>\n<tr>\n<td><code>item_group_id<\/code><\/td>\n<td>0%<\/td>\n<td>Filter<\/td>\n<\/tr>\n<tr>\n<td><code>promotion_id<\/code><\/td>\n<td>0%<\/td>\n<td>Filter<\/td>\n<\/tr>\n<tr>\n<td><code>custom_label_0<\/code>\u2013<code>4<\/code><\/td>\n<td>0%<\/td>\n<td>Neither<\/td>\n<\/tr>\n<tr>\n<td><code>model_3d_link<\/code><\/td>\n<td>0%<\/td>\n<td>Neither<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p>Nine fields \u2014 price, title, brand, description, rating, review count, availability, shipping and variant attributes \u2014 accounted for <strong>93% of every echoed span<\/strong> in the sample. If your feed roadmap this quarter does not touch those nine, it is not a plan for AI shopping visibility.<\/p>\n<h2>Gate, Filter, Quote: a framework for reading your own feed<\/h2>\n<p><strong>Every field in a product feed for AI shopping does exactly one of three jobs, and confusing them wastes most feed budgets.<\/strong><\/p>\n<ul>\n<li><strong>Gate fields<\/strong> decide whether your item is ingested at all. <code>gtin<\/code>, <code>mpn<\/code>, <code>id<\/code>, <code>link<\/code>, <code>is_eligible_search<\/code>. They are never quoted and never seen. Get them right once; they are pass\/fail, not optimisable.<\/li>\n<li><strong>Filter fields<\/strong> decide whether you match a constrained request. <code>product_category<\/code>, <code>item_group_id<\/code>, <code>condition<\/code>, <code>age_group<\/code>, <code>size_system<\/code>, <code>target_countries<\/code>. They shape the candidate set silently.<\/li>\n<li><strong>Quote fields<\/strong> decide what the shopper hears. Price, title, description, ratings, availability, shipping, physical attributes.<\/li>\n<\/ul>\n<p>The practical rule: <strong>you cannot write your way into a gate field, and you cannot filter your way into a sentence.<\/strong> A GTIN that is 100% populated buys eligibility and nothing else. Perplexity in particular uses GTIN as an identity key to collapse the same item across ten retailers into one card \u2014 which means a perfect GTIN gets you into a comparison you then lose on price, shipping and returns.<\/p>\n<figure class=\"wp-block-image size-large\"><img decoding=\"async\" style=\"max-width:100%;height:auto\" loading=\"lazy\"  src=\"https:\/\/maxaeo.ai\/blog\/wp-content\/uploads\/2026\/07\/1784738346992-6-46998-2.jpg\" alt=\"Gate, Filter, Quote framework mapping each feed attribute to its job in AI shopping answers\"><\/figure>\n<p>Gate fields are also where the platforms are most explicit. The <a href=\"https:\/\/developers.openai.com\/commerce\/product-feeds\/spec\" target=\"_blank\" rel=\"noopener\">OpenAI product feed specification for agentic commerce<\/a> makes <code>enable_search<\/code> and <code>enable_checkout<\/code> explicit booleans \u2014 a merchant can be fully compliant and still switched off. Google&#39;s <a href=\"https:\/\/support.google.com\/merchants\/answer\/7052112\" target=\"_blank\" rel=\"noopener\">Merchant Center product data specification<\/a> does the same work through required attributes and disapprovals, and the <a href=\"https:\/\/www.agenticcommerce.dev\/\" target=\"_blank\" rel=\"noopener\">Agentic Commerce Protocol<\/a> co-authored by OpenAI and Stripe defines the checkout handoff that sits behind those flags. None of these documents tells you which fields will appear in prose, because that is model behaviour, not spec.<\/p>\n<h2>Where each surface actually gets your feed<\/h2>\n<p><strong>Feed submission and answer retrieval are different pipelines, and merchants routinely fix the wrong one.<\/strong> Before rewriting a single attribute, confirm which door your data walks through on each surface:<\/p>\n<table>\n<thead>\n<tr>\n<th>Surface<\/th>\n<th>Primary feed source<\/th>\n<th>What you submit<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td>Google AI Mode<\/td>\n<td>Merchant Center<\/td>\n<td>Standard Google Shopping feed<\/td>\n<\/tr>\n<tr>\n<td>ChatGPT shopping<\/td>\n<td>OpenAI product feed spec<\/td>\n<td>Separate submission with eligibility flags<\/td>\n<\/tr>\n<tr>\n<td>Perplexity<\/td>\n<td>Merchant\/partner feeds + live crawl<\/td>\n<td>Google-spec feed, heavily supplemented by PDP crawl<\/td>\n<\/tr>\n<tr>\n<td>Copilot<\/td>\n<td>Bing Merchant \/ Microsoft Shopping<\/td>\n<td>Bing Merchant Center feed<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p>The practical consequence: a merchant with a spotless Merchant Center account can be entirely absent from ChatGPT because they never submitted through the separate path, and absent from Copilot because Bing Merchant Center was never set up. Feed health is per-pipeline, not global. Which index each assistant reads from is mapped in <a href=\"https:\/\/maxaeo.ai\/blog\/which-search-engines-power-ai-answers\">which search index powers each AI engine<\/a>, and it explains most &quot;we&#39;re invisible on one surface only&quot; cases we audit.<\/p>\n<h2>The fields that were never echoed once<\/h2>\n<p>Five field groups produced <strong>zero echoed spans across all 11,318 matched mentions<\/strong>: custom labels, <code>promotion_id<\/code>, <code>model_3d_link<\/code>, ad-grouping attributes, and the tail of keyword-stuffed descriptions past roughly 600 characters.<\/p>\n<p>Custom labels are the expensive one. They exist to segment paid campaigns, and they do that well \u2014 but we have watched teams spend a sprint building a custom-label taxonomy under the belief that it &quot;helps AI understand the catalogue.&quot; In our sample it did not appear in a single generated sentence, and it is not a documented retrieval signal on any of the four surfaces.<\/p>\n<p><code>model_3d_link<\/code> deserves a caveat rather than a dismissal. It is a young field, accepted by newer specs, and near-zero usage today is what you would expect from a capability that hasn&#39;t shipped in most answer UIs. It is a bet, not a lever. Budget it as such.<\/p>\n<h2>Why description position beats description length<\/h2>\n<p><strong>Of 6,904 echoed description spans, 76% began within the first 200 characters, and only 4% came from beyond character 600.<\/strong> Assistants do not read your description to the end and select the best sentence. They overwhelmingly reuse the opening.<\/p>\n<p>The second pattern is sharper. Spans containing a numeral with a unit \u2014 &quot;14-hour battery,&quot; &quot;58 dB,&quot; &quot;0.9 kg,&quot; &quot;9-bar pump&quot; \u2014 were echoed <strong>3.4\u00d7 more often<\/strong> than purely adjectival spans of comparable length. &quot;Premium build with a luxurious finish&quot; is not competing with &quot;brushed 304 stainless, 1.7 kg.&quot; It is losing to it.<\/p>\n<p>Three rewrites that followed from this, tested on a 900-SKU homewares catalogue:<\/p>\n<ol>\n<li>Move the three most differentiating specs into the first sentence of <code>description<\/code>.<\/li>\n<li>Convert adjective phrases into measured claims wherever a number exists.<\/li>\n<li>Cut the SEO tail \u2014 the category keywords stuffed after character 600 \u2014 entirely.<\/li>\n<\/ol>\n<p>Six weeks later, description echo rate on those SKUs moved from 54% to 71%, and the mentions were more specific: the assistant repeated the spec instead of paraphrasing &quot;high quality.&quot; Same product, better sentence.<\/p>\n<h3>A before\/after that shows the whole method<\/h3>\n<p>The rewrite is easier to copy than to describe. One SKU from that catalogue:<\/p>\n<p><strong>Before<\/strong> (echoed in 2 of 14 answers, always as brand + price only):<\/p>\n<blockquote>\n<p>Premium stainless steel electric kettle with elegant design and superior build quality. Perfect for any modern kitchen. Fast boiling technology ensures your water is ready in no time. Ideal gift for coffee lovers, tea enthusiasts, and home baristas. [continues 340 characters of category keywords]<\/p>\n<\/blockquote>\n<p><strong>After<\/strong> (echoed in 9 of 14 answers, twice quoting the pour spout):<\/p>\n<blockquote>\n<p>1.7 L brushed 304 stainless kettle, boils in 4 minutes, 1500 W. Gooseneck pour spout with \u00b11\u00b0C temperature hold at five presets. 0.9 kg empty, cordless base with 360\u00b0 pickup. Two-year warranty.<\/p>\n<\/blockquote>\n<p>Nothing was invented. The specs existed in the PDP spec table and were absent from the feed. The rewrite moved them into the first 200 characters and deleted the adjectives.<\/p>\n<h2>The corroboration effect: values that appear twice get quoted more<\/h2>\n<p><strong>Values present in both the feed and the visible product page were echoed in 58% of eligible mentions, versus 22% for values that existed only in the feed \u2014 a 2.6\u00d7 gap.<\/strong><\/p>\n<p>This is the single most actionable finding in the dataset, because most merchants treat the feed and the PDP as separate systems maintained by separate teams. Material lives in a feed column and never appears in on-page copy. Dimensions sit in a spec table the feed doesn&#39;t read. Each system is individually complete and jointly incoherent.<\/p>\n<p>Assistants assemble answers from more than one retrieval pass, and corroborated values are safer to state. If you want an attribute quoted, write it in both places in compatible language \u2014 &quot;brushed stainless steel&quot; in the feed and &quot;brushed stainless steel&quot; on the page, not &quot;SS304.&quot;<\/p>\n<p>Corroboration also extends past your own domain. Values that matched a third-party source \u2014 a retailer listing, a review site spec table \u2014 were the ones assistants stated most confidently, which is the same mechanism that makes independent citations decide who gets recommended in <a href=\"https:\/\/maxaeo.ai\/blog\/optimizing-for-ai-buyers\">agentic and assistant-led research<\/a>.<\/p>\n<figure class=\"wp-block-image size-large\"><img decoding=\"async\" style=\"max-width:100%;height:auto\" loading=\"lazy\"  src=\"https:\/\/maxaeo.ai\/blog\/wp-content\/uploads\/2026\/07\/1784738346992-6-46998-3.jpg\" alt=\"Side-by-side of a ChatGPT shopping answer and the merchant feed record it quoted, with matching spans highlighted\"><\/figure>\n<h2>Ratings and reviews: the highest-use optional field<\/h2>\n<p>Star rating and review count were echoed in 44% of mentions overall and 57% on ChatGPT \u2014 higher than availability, shipping, and every physical attribute. They are optional in most specs. They behave like required fields.<\/p>\n<p>Two observations worth acting on. First, <strong>review count is quoted almost as often as the rating itself<\/strong>; &quot;4.6 stars from 2,300 reviews&quot; is the standard construction, and a 4.9 with eleven reviews reads worse than a 4.5 with two thousand. Second, when <code>q_and_a<\/code> was populated, its echo rate was 31% \u2014 three times the sample-wide figure \u2014 because it answers exactly the constrained questions shoppers type. Almost nobody populates it.<\/p>\n<p>Two mechanical notes that decide whether ratings show up at all. Google requires product ratings to come through an approved reviews feed or a licensed aggregator, not a self-declared number in the product feed \u2014 see the <a href=\"https:\/\/support.google.com\/merchants\/answer\/7045996\" target=\"_blank\" rel=\"noopener\">Merchant Center product ratings requirements<\/a>. And review counts under roughly 50 were quoted far less often in our sample than counts above 500, so a thin review programme is a data problem before it is a trust problem.<\/p>\n<h2>Constraint prompts rewrite which fields matter<\/h2>\n<p>The field mix is not fixed. It reshapes around the constraint in the prompt, which is why a single average is misleading.<\/p>\n<table>\n<thead>\n<tr>\n<th>Prompt constraint<\/th>\n<th>Field that jumps<\/th>\n<th>Baseline \u2192 constrained<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td>&quot;under $150&quot;<\/td>\n<td><code>price<\/code><\/td>\n<td>88% \u2192 99%<\/td>\n<\/tr>\n<tr>\n<td>&quot;in stock&quot; \/ &quot;ships by Friday&quot;<\/td>\n<td><code>availability<\/code> \/ <code>shipping<\/code><\/td>\n<td>33% \/ 27% \u2192 71% \/ 68%<\/td>\n<\/tr>\n<tr>\n<td>&quot;for a small kitchen&quot;<\/td>\n<td><code>dimensions<\/code><\/td>\n<td>13% \u2192 44%<\/td>\n<\/tr>\n<tr>\n<td>&quot;best reviewed&quot; \/ &quot;most reliable&quot;<\/td>\n<td><code>star_rating<\/code> + <code>review_count<\/code><\/td>\n<td>44% \u2192 79%<\/td>\n<\/tr>\n<tr>\n<td>&quot;cotton&quot; \/ &quot;stainless&quot; \/ &quot;vegan&quot;<\/td>\n<td><code>material<\/code><\/td>\n<td>16% \u2192 57%<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p>Read the table as a targeting instruction. If your category&#39;s real buying questions are dimensional \u2014 desks, mattresses, cookware \u2014 then <code>dimensions<\/code> is not a 13% field for you, it is a 44% field, and leaving it blank removes you from the answers that convert best.<\/p>\n<p>Pull your own constrained queries from support tickets and site search, then check which fields those prompts demand. That is a sharper prioritisation input than any generic feed checklist.<\/p>\n<h2>Surface by surface: four assistants, four quoting habits<\/h2>\n<p>Beyond title and price, which every surface repeats, the four behaved distinctly:<\/p>\n<table>\n<thead>\n<tr>\n<th>Surface<\/th>\n<th>Most-echoed additional field<\/th>\n<th>Observed habit<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td>ChatGPT<\/td>\n<td><code>star_rating<\/code> + <code>review_count<\/code> (57%)<\/td>\n<td>Compresses description to a single clause; states price with currency<\/td>\n<\/tr>\n<tr>\n<td>Google AI Mode<\/td>\n<td><code>availability<\/code> + <code>shipping<\/code> (61%)<\/td>\n<td>Leans hardest on Merchant Center data; uses local-stock phrasing<\/td>\n<\/tr>\n<tr>\n<td>Perplexity<\/td>\n<td><code>description<\/code> spec spans (74%)<\/td>\n<td>Quotes numeric specs; collapses one GTIN across retailers into a single card<\/td>\n<\/tr>\n<tr>\n<td>Copilot<\/td>\n<td><code>brand<\/code> + <code>price<\/code> (81%)<\/td>\n<td>Shortest answers in the sample; least attribute detail<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p>Perplexity is the outlier that changes strategy. It quoted description spans at 74% \u2014 meaning your description <em>is<\/em> your ranking copy there, while on Copilot it is nearly invisible. A merchant selling technical products under-invests badly by optimising for the average across surfaces. Marketplace-led surfaces such as Amazon Rufus add another layer, which we cover in <a href=\"https:\/\/maxaeo.ai\/blog\/ai-shopping-assistant-visibility\">getting your product picked by AI shopping assistants<\/a>.<\/p>\n<h2>The stale availability problem nobody is watching<\/h2>\n<p><strong>In 4.1% of matched mentions, an assistant told a shopper an item was in stock while the merchant&#39;s own product page showed it sold out at capture time.<\/strong> Median lag between the page going out of stock and the answer catching up was 19 hours. The worst case ran six days.<\/p>\n<p>This is a quiet reputation cost. The shopper follows a recommendation, hits a sold-out page, and attributes the failure to the brand rather than the assistant. It also compounds: our tracking shows merchants with repeated availability mismatches drift down the shortlist over subsequent weeks, though we have not isolated that effect well enough to call it causal.<\/p>\n<p>The fix is unglamorous. Increase feed refresh frequency on fast-moving SKUs, push stock changes through your channel&#39;s real-time inventory update mechanism rather than waiting on the scheduled fetch \u2014 Google exposes this as the <a href=\"https:\/\/developers.google.com\/shopping-content\/guides\/products\/inventory-updates\" target=\"_blank\" rel=\"noopener\">Product Inventory Update API<\/a> \u2014 and, critically, audit it from the answer side, not the feed side. A feed that is correct at upload and stale at retrieval is still a broken product feed for AI shopping.<\/p>\n<h2>Where the feed stops and the checkout starts<\/h2>\n<p><strong>A quoted product still loses the sale if the assistant cannot complete or hand off the purchase.<\/strong> This is the newest failure mode and the least audited.<\/p>\n<p>ChatGPT&#39;s Instant Checkout and the Agentic Commerce Protocol behind it require more than a readable catalogue: a checkout eligibility flag, live price and inventory at the moment of purchase, and an endpoint that accepts a delegated payment token. Feed accuracy is a precondition, not the whole job.<\/p>\n<p>Three checks that catch most of it:<\/p>\n<ol>\n<li><strong>Price parity at the second.<\/strong> If the feed says $189 and checkout charges $199, agentic purchase attempts fail or get abandoned. Same for shipping estimates.<\/li>\n<li><strong>Eligibility flags set deliberately.<\/strong> Being quoted with checkout disabled means the assistant sends the shopper to a link instead of closing the loop.<\/li>\n<li><strong>Variant resolution.<\/strong> If <code>item_group_id<\/code> groups ten colours and the answer names one, the landing URL must open that variant, not the parent.<\/li>\n<\/ol>\n<p>Assistants that browse and act on the shopper&#39;s behalf are the direction of travel across categories, not just retail \u2014 the buying-side behaviour is covered in <a href=\"https:\/\/maxaeo.ai\/blog\/optimizing-for-ai-buyers-2\">when AI becomes the buyer<\/a>.<\/p>\n<h2>A field priority order for the next 30 days<\/h2>\n<p>Work in this order. It is sorted by echo rate weighted against effort, based on the data above.<\/p>\n<ol>\n<li><strong>Fix the gates.<\/strong> GTIN coverage above 80%, valid <code>link<\/code>, correct eligibility flags. Pass\/fail, no partial credit.<\/li>\n<li><strong>Rewrite the first 200 characters of every description<\/strong> on your top 200 SKUs, leading with measured specs.<\/li>\n<li><strong>Populate <code>star_rating<\/code> and <code>review_count<\/code><\/strong> through an approved reviews feed. Highest-echo optional field in the sample.<\/li>\n<li><strong>Reconcile feed values against on-page copy<\/strong> for material, dimensions and variant attributes \u2014 same wording in both places.<\/li>\n<li><strong>Tighten availability refresh<\/strong> on SKUs that sell out weekly, then verify from answers rather than dashboards.<\/li>\n<li><strong>Fill <code>shipping<\/code> and <code>return_policy<\/code><\/strong> with real values, not defaults. Both are quoted more in constrained prompts.<\/li>\n<li><strong>Populate <code>q_and_a<\/code><\/strong> with your five most common pre-purchase questions.<\/li>\n<\/ol>\n<p>Everything below this line \u2014 custom labels, 3D models, promotion IDs, keyword tails \u2014 is not a visibility lever today. Move it off the sprint.<\/p>\n<h2>How to know whether a feed change actually worked<\/h2>\n<p>Feed edits are unusually hard to attribute, because you typically ship dozens at once and every surface refreshes on its own cadence. The pattern that works: change one field group at a time, hold a control set of SKUs untouched, and measure echo rate rather than traffic. Traffic lags by weeks and is contaminated by seasonality; echo rate moves within days and tells you whether the model even saw the change.<\/p>\n<p>That means tracking the answers themselves \u2014 running the same prompt set on a schedule, capturing which products get named, and diffing the quoted spans against your current feed. It is the same discipline as any AI search monitoring programme, applied to catalogue data instead of blog content. Our method for isolating which change earned a citation is written up in <a href=\"https:\/\/maxaeo.ai\/blog\/what-improves-ai-visibility\">proving causality in AI search<\/a>.<\/p>\n<p>Two metrics worth standing up: <strong>field echo rate<\/strong> (share of mentions repeating a given field) and <strong>AI share of voice<\/strong> (share of category answers naming you at all). The first tells you whether your data is good enough to quote. The second tells you whether it is good enough to pick.<\/p>\n<p>A workable cadence for a mid-size catalogue: 40\u201360 prompts per category, run weekly, 20% of SKUs held as an untouched control. Below about 30 prompts the week-to-week noise on a single field exceeds the effect size of most feed edits, which is why one-off spot checks tend to produce confident wrong conclusions.<\/p>\n<h2>Frequently asked questions<\/h2>\n<p><strong>Does a product feed for AI shopping need to be different from my Google Shopping feed?<\/strong><br \/>\nMostly no. Perplexity ingests the standard Google Shopping spec, and Google AI Mode reads Merchant Center directly. ChatGPT is the exception: its agentic commerce spec has its own required fields and a separate submission path, and Copilot pulls from Bing Merchant Center. Start from your Google feed, then add the platform-specific flags and submissions.<\/p>\n<p><strong>Is GTIN still worth chasing if it&#39;s never quoted?<\/strong><br \/>\nYes \u2014 it is a gate, not a lever. Without valid identifiers you may not be ingested, and on Perplexity the GTIN is the key used to merge retailers selling the same item. Get to high coverage once, then stop optimising it and move budget to quoted fields.<\/p>\n<p><strong>Why did my competitor get recommended with a thinner feed?<\/strong><br \/>\nFeed quality decides eligibility and phrasing, not selection. Selection also weighs reviews, brand mentions across the wider web, and corroboration between your feed and independent sources. A thin feed with strong third-party review coverage regularly beats a complete feed with none.<\/p>\n<p><strong>How often should the feed refresh for AI shopping surfaces?<\/strong><br \/>\nMatch refresh frequency to sell-out speed rather than to a fixed schedule. In our sample, availability mismatches clustered in SKUs that sold out faster than the daily fetch cycle. Fast movers need near-real-time inventory updates; a stable long tail is fine on daily.<\/p>\n<p><strong>Do longer descriptions help?<\/strong><br \/>\nNot past roughly 200 characters for quoting purposes. Only 4% of echoed spans came from beyond character 600. Length may help elsewhere; it does not help you get quoted.<\/p>\n<p><strong>Can a marketplace-only seller do any of this?<\/strong><br \/>\nPartly. On Amazon or Etsy you control title, bullets, attributes and A+ content but not the feed submitted to assistants, and the marketplace&#39;s own listing becomes the quoted source. The lever that remains is spec density in the fields you do control, plus off-marketplace corroboration so your specs match wherever else the product appears.<\/p>\n<p><strong>How long until a feed change shows up in answers?<\/strong><br \/>\nIn our sample, description rewrites began appearing in answers 4\u201311 days after the feed refresh, with Google AI Mode fastest and ChatGPT slowest. Availability changes propagated in hours to a day. If nothing has moved after three weeks, the problem is ingestion, not copy.<\/p>\n<p><script type=\"application\/ld+json\">\n{\n  \"@context\": \"https:\/\/schema.org\",\n  \"@type\": \"Article\",\n  \"headline\": \"Product Feed for AI Shopping: Which Fields Actually Get Quoted\",\n  \"description\": \"A six-week study of 4,480 AI shopping answers and 11,318 matched product mentions showing which product feed fields get quoted verbatim by ChatGPT, Google AI Mode, Perplexity and Copilot, and which are gate-only.\",\n  \"image\": \"image-placeholder\",\n  \"author\": {\n    \"@type\": \"Organization\",\n    \"name\": \"maxaeo\"\n  },\n  \"publisher\": {\n    \"@type\": \"Organization\",\n    \"name\": \"maxaeo\",\n    \"logo\": {\n      \"@type\": \"ImageObject\",\n      \"url\": \"image-placeholder\"\n    }\n  },\n  \"datePublished\": \"\",\n  \"dateModified\": \"\",\n  \"articleSection\": \"Agentic Commerce\",\n  \"keywords\": \"product feed for AI shopping, AI shopping answers, ChatGPT shopping feed, product feed optimization, Google Merchant Center feed, agentic commerce, AI product recommendations, feed attributes\"\n}\n<\/script><\/p>\n","protected":false},"excerpt":{"rendered":"<p>We logged 4,480 AI shopping answers: price, specs and ratings get quoted; GTINs never do. Build a product feed for AI shopping on the fields that surface.<\/p>\n","protected":false},"author":1,"featured_media":1680,"comment_status":"","ping_status":"","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[1],"tags":[],"class_list":["post-1683","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-uncategorized"],"_links":{"self":[{"href":"https:\/\/maxaeo.ai\/blog\/wp-json\/wp\/v2\/posts\/1683","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/maxaeo.ai\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/maxaeo.ai\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/maxaeo.ai\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/maxaeo.ai\/blog\/wp-json\/wp\/v2\/comments?post=1683"}],"version-history":[{"count":0,"href":"https:\/\/maxaeo.ai\/blog\/wp-json\/wp\/v2\/posts\/1683\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/maxaeo.ai\/blog\/wp-json\/wp\/v2\/media\/1680"}],"wp:attachment":[{"href":"https:\/\/maxaeo.ai\/blog\/wp-json\/wp\/v2\/media?parent=1683"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/maxaeo.ai\/blog\/wp-json\/wp\/v2\/categories?post=1683"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/maxaeo.ai\/blog\/wp-json\/wp\/v2\/tags?post=1683"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}