{"id":2823,"date":"2026-08-19T03:49:35","date_gmt":"2026-08-19T03:49:35","guid":{"rendered":"https:\/\/dmarketertayeeb.com\/blog\/chatgpt-ads-product-feeds-setup\/"},"modified":"2026-08-19T03:49:35","modified_gmt":"2026-08-19T03:49:35","slug":"chatgpt-ads-product-feeds-setup","status":"publish","type":"post","link":"https:\/\/dmarketertayeeb.com\/blog\/chatgpt-ads-product-feeds-setup\/","title":{"rendered":"ChatGPT Ads Product Feeds: Setup, Schema and Delta Updates"},"content":{"rendered":"\n\n\n<p class=\"dek\">OpenAI now documents a product-feed campaign workflow for ChatGPT Ads. Retail advertisers can connect a catalog, select products with feed filters, build a product-ad template, and inspect product-level delivery. The practical catch is that feed acceptance is not the same as ad eligibility or serving, and the current documentation does not establish universal account or market access.<\/p>\n\n\n\n\n\n\n\n<p><strong>Short answer:<\/strong> use Ads Manager to create the feed connection, import a current catalog by file, hosted URL, or SFTP, mark intended products with <code>is_ads_eligible<\/code>, and create a campaign in <code>product_feed<\/code> mode. Validate the product count before launch, then monitor product-segmented reporting and catalog freshness. OpenAI&#8217;s <a href=\"https:\/\/help.openai.com\/en\/articles\/20001268-create-campaigns-from-product-feeds\">current product-feed campaign guide<\/a> says these products are eligible for ads during the beta and do not automatically appear in organic ChatGPT conversations.<\/p>\n\n\n\n\n\n\n\n<h2 class=\"wp-block-heading\">What is a ChatGPT Ads product feed?<\/h2>\n\n\n\n\n\n\n\n<p>A ChatGPT Ads product feed is a merchant catalog used to keep product titles, descriptions, prices, availability, images, destination URLs, and identifiers current. Instead of manually creating a separate fixed ad for every item, an eligible product can be selected from the feed when the campaign serves.<\/p>\n\n\n\n\n\n\n\n<p>The feed sits inside a four-part structure: the feed supplies catalog data; the campaign sets budget, schedule, targeting, and mode; the product set selects or filters eligible items; and the product-ad template controls how the chosen product appears. That makes this a narrower implementation task than DMT&#8217;s <a href=\"https:\/\/dmarketertayeeb.com\/blog\/chatgpt-cpc-ads-google-ai-max-what-marketers-must-do-now\/\">broader ChatGPT Ads buying and measurement guide<\/a>, which remains the parent page for access, CPM\/CPC\/oCPC, audience controls, age and privacy rules, and conversion setup.<\/p>\n\n\n\n\n\n\n\n<p>OpenAI says feed ads have been among the strongest-performing ads in its program. Treat that as a vendor observation, not a benchmark or a promise for your account. The documentation does not publish a representative sample, independent comparison, expected ROAS, or market-by-market delivery forecast.<\/p>\n\n\n\n\n\n\n\n<h2 class=\"wp-block-heading\">Choose the import path before you format the catalog<\/h2>\n\n\n\n\n\n\n\n<p>Ads Manager documents three practical import routes:<\/p>\n\n\n\n\n\n\n\n<ul class=\"wp-block-list\">\n  <li><strong>CSV or TXT upload:<\/strong> suitable for a small test or occasional manual update.<\/li>\n  <li><strong>Hosted HTTPS URL:<\/strong> suitable when the platform can fetch a stable catalog export.<\/li>\n  <li><strong>SFTP:<\/strong> suitable for an automated server-to-server feed process.<\/li>\n<\/ul>\n\n\n\n\n\n\n\n<p>The Help Center says items expire after two weeks and recommends a hosted URL or automated SFTP for ongoing updates. For a production catalog, a one-time manual upload is therefore not a maintenance plan. Assign an owner, set a refresh cadence, and alert on a missing or rejected snapshot.<\/p>\n\n\n\n\n\n\n\n<p>OpenAI&#8217;s separate <a href=\"https:\/\/developers.openai.com\/commerce\/specs\/file-upload\/overview\">file-upload overview<\/a> recommends a full-snapshot model and at least daily delivery. It also recommends stable filenames and small-sample validation before the first full feed. Those practices matter because a feed is a changing source of truth: stale stock or price data can become an ad-quality and customer-experience problem even when the campaign settings are correct.<\/p>\n\n\n\n\n\n\n\n<h2 class=\"wp-block-heading\">Use the correct schema and eligibility field<\/h2>\n\n\n\n\n\n\n\n<p>OpenAI publishes a stable flat-file specification and a Google-compatible path. The compatibility path is conditional: the documentation says to use it when OpenAI confirms that the registered feed supports that format. It does not mean every Merchant Center export, country, currency, program, or XML representation will be accepted unchanged.<\/p>\n\n\n\n\n\n\n\n<p>For the Google-compatible core profile, OpenAI lists <code>id<\/code>, <code>title<\/code>, <code>description<\/code>, <code>link<\/code>, <code>image_link<\/code>, <code>availability<\/code>, <code>price<\/code>, and <code>brand<\/code> on every row. It accepts delimited CSV, TXT, or TSV files and certain gzip-compressed variants. JSON, spreadsheets, XML, RSS, and Atom are not part of that compatibility path.<\/p>\n\n\n\n\n\n\n\n<p>The Ads-specific field is easy to get wrong. The <a href=\"https:\/\/developers.openai.com\/ads\/product-feeds\">OpenAI Ads product-feed documentation<\/a> says to set <code>is_ads_eligible<\/code> to <code>true<\/code> for each product that Ads should process. It accepts the legacy <code>is_eligible_ads<\/code> alias but says not to use <code>is_ads_enabled<\/code>. Even a valid eligibility field does not guarantee that the item will serve.<\/p>\n\n\n\n\n\n\n\n<p>Teams moving from Google catalog infrastructure should keep this separate from the <a href=\"https:\/\/dmarketertayeeb.com\/blog\/google-merchant-api-content-api-migration-2026\/\">Google Merchant API migration<\/a>. The source data may be reusable, but the destinations, eligibility field, access model, upload path, diagnostics, and serving rules are different.<\/p>\n\n\n\n\n\n\n\n<h2 class=\"wp-block-heading\">Build the campaign in a reversible sequence<\/h2>\n\n\n\n\n\n\n\n<p>A safe launch sequence is more useful than jumping straight to an active campaign:<\/p>\n\n\n\n\n\n\n\n<ol class=\"wp-block-list\">\n  <li><strong>Create the feed connection in Ads Manager.<\/strong> The public Advertiser API does not create the feed connection or upload the initial catalog; the documented initial transfer happens through Ads Manager and its supported import routes.<\/li>\n  <li><strong>Upload a small validation sample.<\/strong> Check required fields, product and variant IDs, URLs, image access, prices, currencies, availability, and the Ads eligibility field.<\/li>\n  <li><strong>Review Upload History.<\/strong> Processing can take from minutes to hours, depending on feed size. Resolve row errors before treating the catalog as ready.<\/li>\n  <li><strong>Create the campaign in <code>product_feed<\/code> mode.<\/strong> OpenAI says the mode cannot be changed after creation, so start paused when using the API.<\/li>\n  <li><strong>Create the product set.<\/strong> Use filters only when they map to a deliberate merchandising or bidding group. The API supports documented operators and requires filter values as strings.<\/li>\n  <li><strong>Create one product-ad template.<\/strong> The selected feed item supplies fields such as the image and destination URL. Preview several products, not just the first sample.<\/li>\n  <li><strong>Confirm measurement, budget, bid, targeting, and review state.<\/strong> Then activate the smallest useful test rather than the whole catalog.<\/li>\n<\/ol>\n\n\n\n\n\n\n\n<p>OpenAI documents conversion-optimized product-feed campaigns as an open beta. They use a linked feed and one active standard conversion event setting; billing remains per valid click in the documented setup. That relationship makes the event definition and deduplication work on the parent ChatGPT Ads page important. It does not establish that oCPC or product feeds are enabled in every account.<\/p>\n\n\n\n\n\n\n\n<h2 class=\"wp-block-heading\">Keep prices and availability current with Delta Feeds<\/h2>\n\n\n\n\n\n\n\n<p>The <a href=\"https:\/\/developers.openai.com\/ads\/delta-feeds\">Delta Feeds API<\/a> can update titles, prices, and availability for existing variants in a linked feed. It does not create feeds, upload a full catalog, or add products that are missing from the initial snapshot. Product and variant identifiers must already exist.<\/p>\n\n\n\n\n\n\n\n<p>Access is enabled per ad account. OpenAI documents <code>product_feed_api_disabled<\/code> and <code>product_feed_delta_api_disabled<\/code> as 403 error codes that require an account-access check; retrying an unchanged request will not fix a disabled feature. Keep this access question separate from a malformed payload, an invalid API key, or a feed linked to a different ad account.<\/p>\n\n\n\n\n\n\n\n<p>An <code>accepted: true<\/code> response means feed processing accepted the update. It does not confirm that downstream indexing, ad eligibility, or serving has completed, and the response does not contain a completion timestamp. The operator therefore needs both an API acceptance log and a later delivery\/availability check.<\/p>\n\n\n\n\n\n\n\n<h2 class=\"wp-block-heading\">Use the right signal when products appear missing<\/h2>\n\n\n\n\n\n\n\n<p>During setup, use the product count in the ad-group creation flow to confirm how many uploaded items pass the selected filters. The Products tab is a reporting view; it can be empty before the campaign has delivery data and may show fewer products than the feed contains. OpenAI says to allow up to seven hours for reporting to appear after delivery begins.<\/p>\n\n\n\n\n\n\n\n<p>That creates a useful diagnostic order:<\/p>\n\n\n\n\n\n\n\n<ul class=\"wp-block-list\">\n  <li>Confirm the latest feed upload processed and the intended products passed validation.<\/li>\n  <li>Check <code>is_ads_eligible<\/code>, product-set filters, IDs, prices, images, URLs, and availability.<\/li>\n  <li>Confirm the campaign, ad group, and template are eligible, reviewed, scheduled, and active.<\/li>\n  <li>Separate setup product counts from post-delivery Products-tab reporting.<\/li>\n  <li>Use product-segmented Insights to inspect product impressions and clicks once data exists.<\/li>\n<\/ul>\n\n\n\n\n\n\n\n<p>Do not interpret an empty Products tab as proof that the feed failed, and do not interpret an accepted delta as proof that the updated item can already serve. This is the same discipline used in <a href=\"https:\/\/dmarketertayeeb.com\/blog\/google-ads-target-bidding-changes-2026\/\">Google Ads rollout and bidding checks<\/a>: distinguish a platform&#8217;s documented state from account-level completion and performance.<\/p>\n\n\n\n\n\n\n\n<h2 class=\"wp-block-heading\">A marketer&#8217;s pre-launch checklist<\/h2>\n\n\n\n\n\n\n\n<ol class=\"wp-block-list\">\n  <li>Verify that the ad account can create product-feed campaigns and, if required, use the Ads and Delta Feeds APIs.<\/li>\n  <li>Record the feed owner, registered merchant name, source system, import method, cadence, and rollback path.<\/li>\n  <li>Test a small product set with representative identifiers, currencies, stock states, sale prices, images, and landing pages.<\/li>\n  <li>Validate the canonical Ads field <code>is_ads_eligible<\/code>; do not use the unsupported <code>is_ads_enabled<\/code> name.<\/li>\n  <li>Keep initial full-snapshot processing separate from later Delta Feeds updates.<\/li>\n  <li>Start paused, review filters and template previews, then activate a bounded campaign.<\/li>\n  <li>Reconcile feed acceptance, product counts, review state, delivery, and product-level reporting as separate checkpoints.<\/li>\n  <li>Define the business decision before reading results. DMT&#8217;s <a href=\"https:\/\/dmarketertayeeb.com\/blog\/customer-journey-mapping-digital-marketing-guide\/\">customer journey mapping template<\/a> can help connect the ad click and conversion event to the actual next step.<\/li>\n<\/ol>\n\n\n\n\n\n\n\n<h2 class=\"wp-block-heading\">What the official documentation does not prove<\/h2>\n\n\n\n\n\n\n\n<ul class=\"wp-block-list\">\n  <li>It does not prove that every advertiser, country, currency, catalog, or ad account is eligible.<\/li>\n  <li>It does not publish a universal launch date, product-feed price, minimum spend, expected volume, ROAS, or performance lift.<\/li>\n  <li>It does not make products from an Ads feed automatically eligible for organic ChatGPT surfaces.<\/li>\n  <li>It does not make a valid feed row or accepted delta automatically eligible to serve.<\/li>\n  <li>It does not make a Google-compatible export identical to Google Merchant Center or Merchant API behavior.<\/li>\n<\/ul>\n\n\n\n\n\n\n\n<p>For broader automation context, DMT&#8217;s <a href=\"https:\/\/dmarketertayeeb.com\/blog\/ai-for-google-ads-2026-guide\/\">AI for Google Ads guide<\/a> explains why platform automation still needs deliberate inputs, measurement, and review. The same principle applies here: a product feed makes catalog advertising scalable, but it also scales every stale field, bad filter, and weak measurement choice.<\/p>\n\n\n\n\n\n\n\n<h2 class=\"wp-block-heading\">FAQ<\/h2>\n\n\n\n\n\n\n\n<h3 class=\"wp-block-heading\">Can a Google Merchant Center feed be used for ChatGPT Ads?<\/h3>\n\n\n\n\n\n\n<p>OpenAI documents a Google-compatible delimited-feed path when it confirms that the registered feed supports that format. The compatibility profile does not cover every Google program, attribute, market, currency, or XML representation. Validate a sample against OpenAI&#8217;s current specification before relying on an existing export.<\/p>\n\n\n\n\n\n\n\n<h3 class=\"wp-block-heading\">Do product-feed items appear in organic ChatGPT results?<\/h3>\n\n\n\n\n\n\n<p>Not from the Ads feed by default in the documented beta. OpenAI&#8217;s Help Center says products uploaded through this workflow are eligible for ads and will not appear in organic ChatGPT conversations, although it says that could change in the future.<\/p>\n\n\n\n\n\n\n\n<h3 class=\"wp-block-heading\">Does an accepted Delta Feeds update mean the product can serve?<\/h3>\n\n\n\n\n\n\n<p>No. It means processing accepted the update. Downstream indexing and eligibility apply asynchronously, and normal product, campaign, ad-group, template, and serving requirements still apply.<\/p>\n\n\n\n\n\n\n\n<h3 class=\"wp-block-heading\">How often should a ChatGPT Ads product feed update?<\/h3>\n\n\n\n\n\n\n<p>OpenAI&#8217;s file-upload guidance recommends at least daily full snapshots, while the Help Center says feed items expire after two weeks and recommends hosted or automated SFTP updates. A faster cadence may be necessary when price or stock changes materially during the day; use Delta Feeds only where account access and the existing-variant requirement fit.<\/p>\n\n\n\n\n\n\n\n<h2 class=\"wp-block-heading\">About the author and evidence cutoff<\/h2>\n\n\n\n\n\n\n\n<p>Tayeeb Khan reviewed this guide against OpenAI&#8217;s Help Center and developer documentation on August 19, 2026. It is an editorial implementation checklist, not evidence of DMT account access or first-hand campaign performance. Account eligibility, supported markets, pricing, feed-serving volume, and performance remain unknown unless OpenAI documents them for a specific account or program.<\/p>\n\n\n\n\n\n\n\n<h2 class=\"wp-block-heading\">Official sources<\/h2>\n\n\n\n\n\n\n\n<ol class=\"sources wp-block-list\">\n  <li><a href=\"https:\/\/help.openai.com\/en\/articles\/20001268-create-campaigns-from-product-feeds\">OpenAI Help Center: Create Campaigns from Product Feeds<\/a> \u2014 displayed \u201cUpdated: 14 hours ago\u201d when checked at 09:09 IST on August 19, 2026.<\/li>\n  <li><a href=\"https:\/\/developers.openai.com\/ads\/product-feeds\">OpenAI Developers: Product Feeds<\/a> \u2014 Ads hierarchy, schema requirement, campaign mode, filters, templates, reporting, and API boundaries.<\/li>\n  <li><a href=\"https:\/\/developers.openai.com\/ads\/delta-feeds\">OpenAI Developers: Delta Feeds API<\/a> \u2014 account access, supported existing-variant updates, acceptance semantics, and documented errors.<\/li>\n  <li><a href=\"https:\/\/developers.openai.com\/commerce\/specs\/file-upload\/products\">OpenAI Developers: Product feed field specification<\/a> \u2014 stable schema and conditional Google-compatible profile.<\/li>\n  <li><a href=\"https:\/\/developers.openai.com\/commerce\/specs\/file-upload\/overview\">OpenAI Developers: File upload overview<\/a> \u2014 snapshot, cadence, file, and validation guidance.<\/li>\n  <li><a href=\"https:\/\/developers.openai.com\/ads\/conversion-optimized-campaigns\">OpenAI Developers: Conversion-Optimized Campaigns<\/a> \u2014 current oCPC prerequisites and campaign configuration.<\/li>\n<\/ol>\n\n\n","protected":false},"excerpt":{"rendered":"<p>OpenAI now documents ChatGPT Ads product-feed campaigns. Use this implementation guide to prepare the schema, import and validate a catalog, maintain it with Delta Feeds and diagnose product delivery.<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[180,177],"tags":[435,438,437,436,439],"class_list":["post-2823","post","type-post","status-publish","format-standard","hentry","category-ai-news","category-digital-marketing","tag-chatgpt-ads","tag-conversion-tracking","tag-ocpc","tag-openai-ads","tag-paid-media","no-featured-image"],"_links":{"self":[{"href":"https:\/\/dmarketertayeeb.com\/blog\/wp-json\/wp\/v2\/posts\/2823","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/dmarketertayeeb.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/dmarketertayeeb.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/dmarketertayeeb.com\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/dmarketertayeeb.com\/blog\/wp-json\/wp\/v2\/comments?post=2823"}],"version-history":[{"count":0,"href":"https:\/\/dmarketertayeeb.com\/blog\/wp-json\/wp\/v2\/posts\/2823\/revisions"}],"wp:attachment":[{"href":"https:\/\/dmarketertayeeb.com\/blog\/wp-json\/wp\/v2\/media?parent=2823"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/dmarketertayeeb.com\/blog\/wp-json\/wp\/v2\/categories?post=2823"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/dmarketertayeeb.com\/blog\/wp-json\/wp\/v2\/tags?post=2823"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}