Skip to main content
OpenAI Ads is OpenAI’s advertising platform, where ads appear inside ChatGPT conversations and are managed in OpenAI Ads Manager. Product-feed campaigns advertise items from a merchant catalog linked to your ad account, and the Delta Feeds API lets you update that catalog incrementally — sending only the products that changed instead of re-uploading everything. This destination points that endpoint at a table in your Lakehouse, so the price and stock level your ads show follow the same numbers your business runs on. If you also want to read your OpenAI Ads campaign and delivery data into the Lakehouse, see OpenAI Ads as a data source.

1. Overview

Each row of your input table is one product variant to update. Rows are grouped by parent product before being sent, and a variant that appears twice in the same run is sent once, with the last row winning.

2. Important considerations

This destination updates existing variants only. It never creates products and never adds items that are not already in the feed. The initial catalog has to be uploaded to OpenAI first — see OpenAI’s Product Feeds guide.
  • Enabled per account. The product feed API is switched on by OpenAI for each ad account. If the destination reports that the feed API is unavailable, ask your OpenAI representative to enable it for the account.
  • Acceptance is not delivery. OpenAI acknowledges the update as accepted by feed processing; the change then propagates to serving asynchronously. Marking a product in stock does not by itself make it serve — the product, campaign, ad group and ad still have to meet the normal serving requirements.
  • Prices are integers. Every monetary value in OpenAI Ads is an integer in the currency’s minor unit: 8999 means R$ 89,99. If your column holds a decimal, add the to_minor_units transform to the mapping and Nekt converts it.

3. Configuring the destination

  1. In the Destinations tab, click the “Add destination” button at the top right of your screen. Then select the OpenAI Ads - Product Feed option from the list of connectors.
  2. Click Next and you’ll be prompted to add your access.
1

Open Ads Manager

Sign in at ads.openai.com with the ad account the feed is linked to.
2

Go to Settings

Open the Settings tab and issue an API key, then copy the value.
3

Find the feed ID

Take the ID of the product feed you want to keep up to date.
This is not the same credential as an OpenAI API key from platform.openai.com. The Ads API uses its own key, issued from Ads Manager, and each key is tied to a single ad account.
The following configurations are available:
  • Ads API key: the key you copied from Ads Manager.
  • Feed ID: the product feed to update. It must be linked to the same ad account as the key.
  • Default currency: the ISO 4217 currency code used for prices when your table has no currency column, such as BRL.
  • Continue on error: keep syncing the remaining rows after OpenAI refuses one. When off, the run stops at the first refused row.
  • Dry run: log what would be written without writing anything.
  1. Click Next.

4. Select your data to send

  1. Select the layer and then the table holding the products you want to keep up to date.
    Tip: The table can be found more easily by typing its name.
  2. Click Next.

5. Map your data to the destination

Map at least one of title, price_amount or availability. A row carrying only the identifiers has nothing for OpenAI to change and is skipped.
Once the fields are mapped, click Next.

6. Configure your OpenAI Ads Product Feed destination

  1. Describe your destination for easy identification within your organization. You can inform things like what data it brings, to which team it belongs, etc.
  2. To define your Trigger, consider how quickly a price change or a stockout has to reach your ads.
  3. Click Done.

Check your new destination!

  1. Once completed, you’ll receive confirmation that your new destination is set up.
  2. You can view it on the Destinations page and trigger the pipeline manually with the refresh icon. Use your normal feed and campaign monitoring in Ads Manager to confirm the change reached serving — the acceptance response carries no completion timestamp.
If you encounter any issues, reach out to us via Slack, and we’ll gladly assist you!