ChatGPT and Google read the same core facts from a product feed: a stable ID, title, description, product URL, image, price, availability and brand, plus GTINs and variant groups. They name those fields differently, and Google checks your feed against your live product page and disapproves items that don't match. Build one clean product record, map it to each spec, and keep it identical to the page.
Older feed guides miss two changes: OpenAI stepped back from in-chat checkout and renamed its fields, and Google added conversational attributes for AI Mode.
OpenAI's direct feeds, built on its Agentic Commerce Protocol, are "currently available to approved partners," per its getting started guide, and you apply on the ChatGPT merchants page. That page says Shopify and Etsy catalogs are already integrated and shopping is live in the US. OpenAI's help center says merchants are ranked on "availability, price, quality, and whether they are the maker or primary seller of that item."
In March 2026 OpenAI said merchants would use their own checkout while it focuses on discovery. Its merchants page says it's "moving away from a standalone Instant Checkout experience," though the help center still mentions Instant Checkout for some eligible products. Plan for the click to land on your site.
Google's Shopping Graph refreshes more than 2 billion listings every hour, per Sundar Pichai's NRF 2026 remarks. Your Merchant Center feed is the part of it you control. Google's guidance on AI features says there are "no additional requirements to appear in AI Overviews or AI Mode" and tells you to keep Merchant Center current and make structured data match the visible page.
Checkout in AI Mode and Gemini runs on the Universal Commerce Protocol, and merchants start by joining a waitlist. Each product you want in checkout needs native_commerce with checkout_eligibility set to true, and return policies must be set in Merchant Center, per Google's UCP setup guide.
Microsoft says its Merchant Center feeds "help inform organic Copilot results," and Google Import can bring your Google feed across. Copilot Checkout is open to "English-language merchants who sell to US buyers," and for UCP feeds in Merchant Center, Microsoft lists three extra attributes: native checkout eligibility, product warnings where needed, and a Merchant Item ID.
Shopify's agentic storefronts are "active by default for eligible stores" and reach ChatGPT, Google AI Mode and Gemini, Microsoft Copilot and Meta. Google surfaces get your data through the Google & YouTube channel or Merchant Center, the rest through Shopify Catalog. For ChatGPT, your store must sell to US customers, and legal disclosures belong in the first 6,000 characters of the description.
Names come from OpenAI's products spec and Google's product data specification. OpenAI marks fields required, conditionally required or optional, with no "recommended" tier.
| Data | OpenAI file feed | Google Merchant Center |
|---|---|---|
| Product ID | item_id (required) | id (required) |
| Variant group | group_id, listing_has_variations, variant_dict | item_group_id, item_group_title, variant_option |
| Title | title (required, aim for 150 characters max) | title or structured_title (150 max) |
| Description | description (required, plain text, aim for 5,000 max) | description or structured_description (5,000 max) |
| Product page | url (required) | link (required) |
| Main image | image_url (required) | image_link (required) |
| Price | price as 79.99 USD (required) | price (with VAT in most markets, without tax in the US and Canada) |
| Sale price | sale_price (must be below price) | sale_price, sale_price_effective_date |
| Stock | availability: in_stock, out_of_stock, pre_order, backorder, unknown | availability: in_stock, out_of_stock, preorder, backorder |
| Brand | brand (required on every row) | brand (required when a brand exists) |
| Identifiers | gtin (8, 12, 13 or 14 digits), mpn | gtin (recommended), mpn (required without a GTIN) |
| Condition | condition: new, refurbished, used | condition (required if used or refurbished) |
| Seller | seller_name (required) | Merchant Center business info |
| Returns | accepts_returns, return_deadline_in_days, return_policy | Return policy settings, return_policy_label |
| Extra detail | No equivalent fields | product_highlight, product_detail, question_and_answer |
id, item_group_id and enable_search. Its spec says "the enable_ flags win over their is_eligible_ names," so a leftover enable_search=true can override is_eligible_search=false. Send one name per value.pre_order in OpenAI's native format and preorder in Google's.variant_dict.structured_title, with digital_source_type set to trained_algorithmic_media. If you send both, Google uses title. Descriptions work the same way through structured_description.Sometimes. OpenAI's spec has a Google-compatible path, but says to "use this format only after OpenAI confirms it for your registered feed." It takes tab-delimited or comma-delimited files, not XML, and every row needs a nonempty id, title, description, link, image_link, availability, price and brand. Its accepted columns don't include structured_title, product_highlight, product_detail or the conversational attributes. If your Google feed puts AI-written titles in structured_title, the OpenAI version needs a plain title column.
question_and_answer, document_link, related_product, item_group_title, variant_option and popularity_rank, all optional.handling_cutoff_time, minimum_order_value, loyalty sub-attributes for shipping, and video_link, with videos eligible to serve from 30 June.image_link and additional_image_link need at least 500 x 500 pixels. Merchant Center has warned about it since 14 April.Google says products with missing or incorrect GTINs "may have limited visibility," and "when in doubt don't provide a GTIN." Skip the restricted prefixes 02, 04 and 2 and the coupon prefixes 05, 98 and 99. OpenAI wants 8, 12, 13 or 14 digits with a valid check digit and leading zeros intact, which spreadsheets like to strip. Without a GTIN, send brand plus the manufacturer's MPN, never one you made up. Set identifier_exists to no only for custom goods, handmade items and antiques.
Give every purchasable option its own row, ID and preselecting URL, plus a shared group ID. Google requires item_group_id for variants in free listings and, for Shopping ads, in markets including the US, UK, Germany and France. If you use item_group_title, every variant gets the same one. OpenAI wants a row per selection with a distinct item_id, the same group_id and a variant_dict. On the page, use ProductGroup markup with hasVariant and variesBy.
Google's image rules ban promotional overlays, watermarks, borders and placeholders, and recommend 1500 x 1500 pixels or larger. Keep image URLs free of parameters that change every feed run, allow Googlebot and Googlebot-image in robots.txt, and keep the IPTC DigitalSourceType tag on AI-generated images. OpenAI only asks for a direct image URL, so build to Google's rules.
Write for the question a shopper asks, not for a keyword list. Google's title and description guidance gives you the structure:
Google's product_highlight and product_detail both say not to list keywords or search terms, and question_and_answer should cover only the product, with no prices, dates or keyword lists. Google's spam policies count "repeating the same words or phrases so often that it sounds unnatural" as keyword stuffing. OpenAI's best practices ask for "concise, factual copy."
An illustration: for a two-person backpacking tent, "Best Ultralight Tent Camping Tent Hiking Tent SALE" gives a model nothing to use. "Acme Trail 2 Backpacking Tent, 2-Person, 3-Season, Freestanding, Green" says who it fits, when it works and which variant the row is. Open the description with packed weight, floor size and what's in the bag. Put the questions support hears most, like whether a wide sleeping pad fits, in question_and_answer for Google and in the description for ChatGPT.
Google crawls landing pages and compares feed price and availability with the page and its markup. Mismatched items are disapproved, and Google warns that price mismatches "may lead to an account suspension." Availability works the same way. Google's price mismatch page names the usual causes:
The price must match the landing page and checkout. For items sold in minimum quantities, submit the price of that minimum. Member prices go in loyalty_program, not price or sale_price, and Google says loyalty benefits can show in AI Mode and Gemini in the US. Automatic item updates, on by default, patch price, availability and condition from your markup, but they "aren't a replacement for regular updates" and may not work for items that change more than once a day.
For ChatGPT, OpenAI's file upload rules recommend a full snapshot over SFTP "at least daily," and its getting started guide adds API updates through the day. An omitted product keeps its last record for up to 14 days, so set is_eligible_search to false to pull one quickly. ChatGPT reads your pages too: sites that block OAI-SearchBot "will not be shown in ChatGPT search answers," per OpenAI's crawler docs.
The lasting fix is to generate the feed, the JSON-LD and the page from one product record. Merchant listing markup needs Product with an Offer carrying price and currency, and should add availability, gtin and brand. Put your return policy in Organization markup and in Merchant Center's return policy settings. For the page side, see what AI assistants need from your store, and for Magento, agentic SEO for Magento and Adobe Commerce.
brand or seller_name on an OpenAI row.enable_search overriding is_eligible_search, or a sale_price not below price.structured_title and structured_description.If you'd rather hand this off, our Agentic SEO audit looks at how findable and recommendable your products are in ChatGPT, Google AI Mode, Gemini, Copilot and Perplexity. It costs $1,500 and takes 2 to 3 weeks. Book a 30-minute call to talk it through first.
Facts checked on 4 October 2026.