🇬🇧 EN
🇬🇧 EN

Cómo preparar el product feed de coches para ChatGPT Ads

Smiling young man with light hair, black and white photo.

Carlos Horno

13

min read

Portada artículo "Cómo preparar el product feed de coches para ChatGPT Ads"

Cómo preparar el product feed de coches para ChatGPT Ads

Smiling young man with light hair, black and white photo.

Carlos Horno

13

min read

Portada artículo "Cómo preparar el product feed de coches para ChatGPT Ads"

Contents

  1. What is a product feed and why it is the heart of the channel

  2. The three available upload methods

  3. Mandatory fields: what OpenAI needs to know about each car

  4. Optional fields that improve performance

  5. The availability field: the most critical of all

  6. How to write the title and description so the AI understands the car

  7. The two-week expiry: why the feed must be synchronised

  8. How to validate the feed before launching the campaign

  9. How to use ads_metadata to segment stock

  10. The most common mistake: advertising cars that no longer exist

  11. Dealcar and automatic feed generation

  12. Frequently asked questions


Banner

What is a product feed and why it is the heart of the channel

A product feed is a structured file containing data for all the products an advertiser wants to display in their ads. In e-commerce, the product feed is the file that powers Google Shopping, Meta Catalog, or Amazon Ads. In ChatGPT Ads, the product feed is the file that powers vehicle ads.

The advantage of the feed system is that you don't have to create each ad manually. The dealership uploads the feed with the data of all the cars in stock, and OpenAI automatically generates the ads for each vehicle: image, title, description, and link to the detail page. When a car's price changes, the feed is updated and the ad reflects the new price. When the car is sold, it is marked as unavailable in the feed and the ad stops showing.

This automation is especially valuable for a used car dealership because stock changes constantly: new cars coming in, prices being adjusted, cars being sold. Managing this manually with individual ads would be unfeasible starting from 10 or 15 cars in stock.

Check the complete guide to ChatGPT Ads for dealerships.

According to OpenAI, ads generated from feeds have historically been the top performers on their platform.

The three available upload methods

OpenAI offers three ways to upload the feed to the Ads Manager, each designed for a different technical profile.

The manual CSV or TXT is the entry point for anyone wanting to test the channel before building an integration. You prepare the file in Excel or Google Sheets, export it as a CSV, and upload it directly in the Ads Manager from the Tools tab. It is the simplest but least sustainable method: feed items expire after two weeks if they are not updated, requiring you to repeat the upload frequently if stock changes. For an initial test with 5 or 10 cars, it may be enough.

The hosted URL is the recommended method for most dealerships. The stock is published on a public URL in a structured format (CSV, JSON, or another compatible format) and OpenAI reads that URL periodically. When the car is sold, the inventory management system updates the URL and the feed reflects the change in OpenAI's next read. It does not require complex development: if the dealership's management system can export stock in a structured format to a public URL, the integration is complete.

Centralise stock publishing across all channels from dealcar.io/stock-coches-multipublicacion.

The SFTP connection is for technical teams wanting to automate server-to-server transfer. The OpenAI host is sftp.commerce.openai.com on port 443. The username follows the format oaiproductfeedprod.[feed-id]. The advantage of SFTP is that it allows scheduling automatic feed updates as frequently as the dealership needs, without relying on periodic URL reading.

Mandatory fields: what OpenAI needs to know about each car

OpenAI defines a feed specification with mandatory and optional fields. Mandatory fields are those the system needs to generate the ad and determine its eligibility.

The item_id is the unique identifier for each car in the feed. It must be stable: if the same car appears with different item_ids in different feed updates, the system treats it as different cars. The VIN (chassis number) is the most robust identifier for vehicles because it is unique, permanent, and verifiable. The registration plate also works if the dealership does not work with VINs.

The title is the text that appears as the ad headline. For vehicles, the most effective format includes make, model, version, year, and one or two relevant attributes: "Volkswagen Golf 1.6 TDI Advance 2019 automatic" is better than "Volkswagen Golf diesel". The character limit OpenAI recommends is sufficient to include this information.

The description is the descriptive text of the ad. There is more space here to communicate the value of the car: mileage, history, extras, sales conditions, emissions sticker. A well-written description helps the OpenAI system understand in which conversations that car is relevant.

The url is the link to the vehicle's detail page on the dealership's website. If the dealership does not have its own website with individual pages per car, they can use the URL of the listing on a portal, although they lose control over the landing experience and the ability to install the tracking pixel.

The image_url is the URL of the main photo of the car. It must be a publicly accessible image, in a standard format (JPG, PNG), and of good quality. Product ads display the image alongside the title and price, so a low-quality photo or a dirty background reduces CTR.

The price includes the amount and currency in the same field: "15900.00 EUR". If the car has a promotional price different from the regular price, the sale_price field allows both to be displayed.

The availability field indicates whether the car is available for sale. Valid values are "in_stock" (available), "out_of_stock" (sold or unavailable), and "preorder" (reserved). This field is the most critical in the feed and is explained in detail below.

The seller_name is the name of the dealership as it should appear in the ad. The seller_url is the URL of the dealership's main homepage.

Optional fields that improve performance

Beyond mandatory fields, there are optional fields that improve the quality of ads and the system's ability to show them in the correct conversations.

The brand field with the make of the vehicle helps the matching system associate the ad with conversations about that brand. For a multi-brand dealership, having the brand field correctly filled for each car improves contextual targeting.

The condition indicates whether the car is new or used: "new" or "used". For a second-hand dealership, this field is always "used" and helps the system avoid displaying the ad in conversations about new cars.

The ads_metadata field is the most strategic of the optional fields. It allows adding custom tags to each car in the feed, which are then used as filters in the Ads Manager to create different ad groups by segment. A dealership can tag cars by price range, body type, fuel type, or expected turnover, and then create different campaigns for each segment without having to upload separate feeds.

The availability field: the most critical of all

The availability field determines whether the car appears in ads or not. If a car is sold and the availability field is not updated to "out_of_stock", the ad remains active and buyers arrive at a page for a car that no longer exists.

This scenario has two negative consequences. The first is cost: the dealership pays for clicks from interested buyers arriving at a sold car. The second is experience: the buyer who clicks and finds the car sold gets a bad first impression of the dealership.

The solution is real-time or at least daily feed synchronisation with the dealership's management system. Every time a car is marked as sold in the DMS, the availability field in the feed must update to "out_of_stock" in the next synchronisation. With a hosted URL, this process can be automatic if the management system generates the feed dynamically from the current inventory.

Also read the stock quality control checklist in a dealership.

The availability field also helps manage reservations. A reserved but not yet delivered car can be temporarily marked as "out_of_stock" to stop generating leads until the transaction is confirmed or cancelled.

How to write the title and description so the AI understands the car

In Google VLA, the feed has specific fields for make, model, year, fuel type, mileage, and transmission. Google's system understands exactly what type of car it is without needing that information in the free text.

In ChatGPT Ads, the matching system uses the title and description as the primary source of information about the car. If the title just says "Volkswagen Golf" and the description is empty, the system has very little information to decide which conversations that ad is relevant to.

An effective title for the ChatGPT Ads feed includes make, model, version or trim, year, and one or two attributes relevant to the target buyer: fuel type, transmission, or a standout extra. "Seat Arona FR 1.0 TSI 2021 automatic, C-sticker" says much more than "Seat Arona".

An effective description completes the information that doesn't fit in the title: actual mileage, available service history, vehicle extras, condition of major wear-and-tear components, and sales conditions (whether it includes transfer, available warranty, possible financing). This description is what OpenAI's system uses to assess whether that car is relevant when a buyer describes their situation in a conversation.

See also how to write good descriptions for car ads.

The two-week expiry: why the feed must be synchronised

OpenAI has a clear rule published in its documentation: feed items expire if they are not updated within two weeks. A feed manually uploaded as a CSV that is not re-uploaded after 14 days stops being active.

This has important operational consequences for the dealership. If the feed is managed with the manual CSV method, a process must be established to update it at least weekly to avoid expiry. If the feed is managed with a hosted URL or SFTP, synchronisation can be automatic and expiry is not an issue because the feed is always up to date.

The recommended update frequency depends on stock turnover speed. For a dealership selling 20 or 30 cars a month, a daily feed update ensures ads always reflect actual stock. For one with lower turnover, every two days may be sufficient.

How to validate the feed before launching the campaign

OpenAI processes the feed when it is uploaded and displays the validation status in the Upload History section of the Ads Manager. The most common validation errors are empty mandatory fields, image URLs that are not publicly accessible, incorrect price formats, and item_ids changing between updates.

Before launching the first campaign, three things must be checked in the Ads Manager. First, that the number of validated products matches the number of cars in the feed: if the feed has 25 cars and only 18 are validated, there are 7 with errors that need correcting. Second, that the titles, descriptions, and images of the sample ads display correctly in the preview. Third, that the URL of each vehicle page is accessible and leads to the correct page.

Once the campaign is launched, the system can take up to seven hours to show performance data in the Products tab. If the tab is empty after this period, it does not necessarily mean the feed has errors: it may be that the campaign has not yet had enough delivery to generate report data.

How to use ads_metadata to segment stock

The ads_metadata field allows adding custom key-value pairs to each car in the feed. These pairs are then used in the Ads Manager as filters to define which cars enter each ad group.

A dealership with varied stock can use ads_metadata to create different campaigns without uploading separate feeds. Practical examples include: tagging cars by price range (low_range, mid_range, high_range) to create ad groups with different context hints and bids according to the average ticket; tagging by body type (suv, saloon, estate, compact) to create more specific context hints for each buyer profile; tagging by expected turnover (high_turnover, mid_turnover) to direct more investment to cars that historically sell faster.

The ads_metadata field accepts multiple key-value pairs per car, allowing you to combine targeting criteria in a single tag.

See also how to use ChatGPT Ads context hints to segment by buyer profile.


Banner

The most common mistake: advertising cars that no longer exist

The mistake that costs the most money in vehicle feed campaigns is continuing to show ads for cars that have already been sold. It is an error that does not generate any visible error message in the system: the ad works correctly from a technical point of view; the problem is that the car the buyer is taken to is no longer available.

The solution is technical: feed synchronisation must be automatic, and the availability field must update in real time or at least on the same day the car is sold. With a management system that generates the feed dynamically from the current inventory, this problem disappears. With a manual feed that someone updates only when they remember, the problem is recurring.

A second frequent mistake is having vehicle page URLs that return a 404 error because the car was removed from the website but the URL remains in the feed. OpenAI can detect inaccessible URLs during validation, but if the URL was accessible when the feed was uploaded and later fails, the ad may remain active with a broken link.

Also read the stock management mistakes that cost a dealership the most.

Dealcar and automatic feed generation

Dealcar generates the ChatGPT Ads product feed automatically from the dealership's inventory: when a car enters stock, it appears in the feed with all necessary fields; when it is sold, the availability field automatically updates to "out_of_stock". There is no need to prepare the feed manually or maintain a separate synchronisation.

You can see how it works at dealcar.io/dealcar-boost/chatgpt-para-concesionarios or request a demo at dealcar.io.

Frequently asked questions

How many cars do I need in the feed to start with ChatGPT Ads?

Independent tests have confirmed that feeds with 6 products work without errors. OpenAI mentions a minimum of 1,000 products in its documentation for scale feed campaigns, but in the current beta the system accepts smaller feeds. For an independent dealership with 15 or 20 cars in stock, the entire feed is enough to get started.

Is the ChatGPT Ads feed compatible with the Google VLA feed?

Not directly. Google VLA has specific fields for automotive (fuel type, mileage, year, transmission, condition) that ChatGPT Ads does not have in its current specification. The base inventory is the same, but two feeds must be generated with different formats adapted to each platform.

What happens if a car in the feed has a broken image URL?

OpenAI may reject that product during feed validation. If the image was accessible when uploaded and later becomes inaccessible, the ad may remain active but with a fallback image or no image, which reduces CTR. It is advisable to use stable image URLs hosted on the dealership's server or a CDN, not on external platforms that may delete or move the images.

Can I have more than one feed for the same dealership?

According to OpenAI documentation, each Ads Manager account has one feed connection. To segment stock into different campaigns, the recommended solution is to use the ads_metadata field within the same feed and filter by that field in each ad group.

Contents

  1. What is a product feed and why it is the heart of the channel

  2. The three available upload methods

  3. Mandatory fields: what OpenAI needs to know about each car

  4. Optional fields that improve performance

  5. The availability field: the most critical of all

  6. How to write the title and description so the AI understands the car

  7. The two-week expiry: why the feed must be synchronised

  8. How to validate the feed before launching the campaign

  9. How to use ads_metadata to segment stock

  10. The most common mistake: advertising cars that no longer exist

  11. Dealcar and automatic feed generation

  12. Frequently asked questions


Banner

What is a product feed and why it is the heart of the channel

A product feed is a structured file containing data for all the products an advertiser wants to display in their ads. In e-commerce, the product feed is the file that powers Google Shopping, Meta Catalog, or Amazon Ads. In ChatGPT Ads, the product feed is the file that powers vehicle ads.

The advantage of the feed system is that you don't have to create each ad manually. The dealership uploads the feed with the data of all the cars in stock, and OpenAI automatically generates the ads for each vehicle: image, title, description, and link to the detail page. When a car's price changes, the feed is updated and the ad reflects the new price. When the car is sold, it is marked as unavailable in the feed and the ad stops showing.

This automation is especially valuable for a used car dealership because stock changes constantly: new cars coming in, prices being adjusted, cars being sold. Managing this manually with individual ads would be unfeasible starting from 10 or 15 cars in stock.

Check the complete guide to ChatGPT Ads for dealerships.

According to OpenAI, ads generated from feeds have historically been the top performers on their platform.

The three available upload methods

OpenAI offers three ways to upload the feed to the Ads Manager, each designed for a different technical profile.

The manual CSV or TXT is the entry point for anyone wanting to test the channel before building an integration. You prepare the file in Excel or Google Sheets, export it as a CSV, and upload it directly in the Ads Manager from the Tools tab. It is the simplest but least sustainable method: feed items expire after two weeks if they are not updated, requiring you to repeat the upload frequently if stock changes. For an initial test with 5 or 10 cars, it may be enough.

The hosted URL is the recommended method for most dealerships. The stock is published on a public URL in a structured format (CSV, JSON, or another compatible format) and OpenAI reads that URL periodically. When the car is sold, the inventory management system updates the URL and the feed reflects the change in OpenAI's next read. It does not require complex development: if the dealership's management system can export stock in a structured format to a public URL, the integration is complete.

Centralise stock publishing across all channels from dealcar.io/stock-coches-multipublicacion.

The SFTP connection is for technical teams wanting to automate server-to-server transfer. The OpenAI host is sftp.commerce.openai.com on port 443. The username follows the format oaiproductfeedprod.[feed-id]. The advantage of SFTP is that it allows scheduling automatic feed updates as frequently as the dealership needs, without relying on periodic URL reading.

Mandatory fields: what OpenAI needs to know about each car

OpenAI defines a feed specification with mandatory and optional fields. Mandatory fields are those the system needs to generate the ad and determine its eligibility.

The item_id is the unique identifier for each car in the feed. It must be stable: if the same car appears with different item_ids in different feed updates, the system treats it as different cars. The VIN (chassis number) is the most robust identifier for vehicles because it is unique, permanent, and verifiable. The registration plate also works if the dealership does not work with VINs.

The title is the text that appears as the ad headline. For vehicles, the most effective format includes make, model, version, year, and one or two relevant attributes: "Volkswagen Golf 1.6 TDI Advance 2019 automatic" is better than "Volkswagen Golf diesel". The character limit OpenAI recommends is sufficient to include this information.

The description is the descriptive text of the ad. There is more space here to communicate the value of the car: mileage, history, extras, sales conditions, emissions sticker. A well-written description helps the OpenAI system understand in which conversations that car is relevant.

The url is the link to the vehicle's detail page on the dealership's website. If the dealership does not have its own website with individual pages per car, they can use the URL of the listing on a portal, although they lose control over the landing experience and the ability to install the tracking pixel.

The image_url is the URL of the main photo of the car. It must be a publicly accessible image, in a standard format (JPG, PNG), and of good quality. Product ads display the image alongside the title and price, so a low-quality photo or a dirty background reduces CTR.

The price includes the amount and currency in the same field: "15900.00 EUR". If the car has a promotional price different from the regular price, the sale_price field allows both to be displayed.

The availability field indicates whether the car is available for sale. Valid values are "in_stock" (available), "out_of_stock" (sold or unavailable), and "preorder" (reserved). This field is the most critical in the feed and is explained in detail below.

The seller_name is the name of the dealership as it should appear in the ad. The seller_url is the URL of the dealership's main homepage.

Optional fields that improve performance

Beyond mandatory fields, there are optional fields that improve the quality of ads and the system's ability to show them in the correct conversations.

The brand field with the make of the vehicle helps the matching system associate the ad with conversations about that brand. For a multi-brand dealership, having the brand field correctly filled for each car improves contextual targeting.

The condition indicates whether the car is new or used: "new" or "used". For a second-hand dealership, this field is always "used" and helps the system avoid displaying the ad in conversations about new cars.

The ads_metadata field is the most strategic of the optional fields. It allows adding custom tags to each car in the feed, which are then used as filters in the Ads Manager to create different ad groups by segment. A dealership can tag cars by price range, body type, fuel type, or expected turnover, and then create different campaigns for each segment without having to upload separate feeds.

The availability field: the most critical of all

The availability field determines whether the car appears in ads or not. If a car is sold and the availability field is not updated to "out_of_stock", the ad remains active and buyers arrive at a page for a car that no longer exists.

This scenario has two negative consequences. The first is cost: the dealership pays for clicks from interested buyers arriving at a sold car. The second is experience: the buyer who clicks and finds the car sold gets a bad first impression of the dealership.

The solution is real-time or at least daily feed synchronisation with the dealership's management system. Every time a car is marked as sold in the DMS, the availability field in the feed must update to "out_of_stock" in the next synchronisation. With a hosted URL, this process can be automatic if the management system generates the feed dynamically from the current inventory.

Also read the stock quality control checklist in a dealership.

The availability field also helps manage reservations. A reserved but not yet delivered car can be temporarily marked as "out_of_stock" to stop generating leads until the transaction is confirmed or cancelled.

How to write the title and description so the AI understands the car

In Google VLA, the feed has specific fields for make, model, year, fuel type, mileage, and transmission. Google's system understands exactly what type of car it is without needing that information in the free text.

In ChatGPT Ads, the matching system uses the title and description as the primary source of information about the car. If the title just says "Volkswagen Golf" and the description is empty, the system has very little information to decide which conversations that ad is relevant to.

An effective title for the ChatGPT Ads feed includes make, model, version or trim, year, and one or two attributes relevant to the target buyer: fuel type, transmission, or a standout extra. "Seat Arona FR 1.0 TSI 2021 automatic, C-sticker" says much more than "Seat Arona".

An effective description completes the information that doesn't fit in the title: actual mileage, available service history, vehicle extras, condition of major wear-and-tear components, and sales conditions (whether it includes transfer, available warranty, possible financing). This description is what OpenAI's system uses to assess whether that car is relevant when a buyer describes their situation in a conversation.

See also how to write good descriptions for car ads.

The two-week expiry: why the feed must be synchronised

OpenAI has a clear rule published in its documentation: feed items expire if they are not updated within two weeks. A feed manually uploaded as a CSV that is not re-uploaded after 14 days stops being active.

This has important operational consequences for the dealership. If the feed is managed with the manual CSV method, a process must be established to update it at least weekly to avoid expiry. If the feed is managed with a hosted URL or SFTP, synchronisation can be automatic and expiry is not an issue because the feed is always up to date.

The recommended update frequency depends on stock turnover speed. For a dealership selling 20 or 30 cars a month, a daily feed update ensures ads always reflect actual stock. For one with lower turnover, every two days may be sufficient.

How to validate the feed before launching the campaign

OpenAI processes the feed when it is uploaded and displays the validation status in the Upload History section of the Ads Manager. The most common validation errors are empty mandatory fields, image URLs that are not publicly accessible, incorrect price formats, and item_ids changing between updates.

Before launching the first campaign, three things must be checked in the Ads Manager. First, that the number of validated products matches the number of cars in the feed: if the feed has 25 cars and only 18 are validated, there are 7 with errors that need correcting. Second, that the titles, descriptions, and images of the sample ads display correctly in the preview. Third, that the URL of each vehicle page is accessible and leads to the correct page.

Once the campaign is launched, the system can take up to seven hours to show performance data in the Products tab. If the tab is empty after this period, it does not necessarily mean the feed has errors: it may be that the campaign has not yet had enough delivery to generate report data.

How to use ads_metadata to segment stock

The ads_metadata field allows adding custom key-value pairs to each car in the feed. These pairs are then used in the Ads Manager as filters to define which cars enter each ad group.

A dealership with varied stock can use ads_metadata to create different campaigns without uploading separate feeds. Practical examples include: tagging cars by price range (low_range, mid_range, high_range) to create ad groups with different context hints and bids according to the average ticket; tagging by body type (suv, saloon, estate, compact) to create more specific context hints for each buyer profile; tagging by expected turnover (high_turnover, mid_turnover) to direct more investment to cars that historically sell faster.

The ads_metadata field accepts multiple key-value pairs per car, allowing you to combine targeting criteria in a single tag.

See also how to use ChatGPT Ads context hints to segment by buyer profile.


Banner

The most common mistake: advertising cars that no longer exist

The mistake that costs the most money in vehicle feed campaigns is continuing to show ads for cars that have already been sold. It is an error that does not generate any visible error message in the system: the ad works correctly from a technical point of view; the problem is that the car the buyer is taken to is no longer available.

The solution is technical: feed synchronisation must be automatic, and the availability field must update in real time or at least on the same day the car is sold. With a management system that generates the feed dynamically from the current inventory, this problem disappears. With a manual feed that someone updates only when they remember, the problem is recurring.

A second frequent mistake is having vehicle page URLs that return a 404 error because the car was removed from the website but the URL remains in the feed. OpenAI can detect inaccessible URLs during validation, but if the URL was accessible when the feed was uploaded and later fails, the ad may remain active with a broken link.

Also read the stock management mistakes that cost a dealership the most.

Dealcar and automatic feed generation

Dealcar generates the ChatGPT Ads product feed automatically from the dealership's inventory: when a car enters stock, it appears in the feed with all necessary fields; when it is sold, the availability field automatically updates to "out_of_stock". There is no need to prepare the feed manually or maintain a separate synchronisation.

You can see how it works at dealcar.io/dealcar-boost/chatgpt-para-concesionarios or request a demo at dealcar.io.

Frequently asked questions

How many cars do I need in the feed to start with ChatGPT Ads?

Independent tests have confirmed that feeds with 6 products work without errors. OpenAI mentions a minimum of 1,000 products in its documentation for scale feed campaigns, but in the current beta the system accepts smaller feeds. For an independent dealership with 15 or 20 cars in stock, the entire feed is enough to get started.

Is the ChatGPT Ads feed compatible with the Google VLA feed?

Not directly. Google VLA has specific fields for automotive (fuel type, mileage, year, transmission, condition) that ChatGPT Ads does not have in its current specification. The base inventory is the same, but two feeds must be generated with different formats adapted to each platform.

What happens if a car in the feed has a broken image URL?

OpenAI may reject that product during feed validation. If the image was accessible when uploaded and later becomes inaccessible, the ad may remain active but with a fallback image or no image, which reduces CTR. It is advisable to use stable image URLs hosted on the dealership's server or a CDN, not on external platforms that may delete or move the images.

Can I have more than one feed for the same dealership?

According to OpenAI documentation, each Ads Manager account has one feed connection. To segment stock into different campaigns, the recommended solution is to use the ads_metadata field within the same feed and filter by that field in each ad group.

Continue reading

Related blogs