> For the complete documentation index, see [llms.txt](https://docs.dinmo.io/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.dinmo.io/integrations/destination-platforms/chatgpt-ads/export-a-product-feed.md).

# Export a product feed

Publish a full product catalog snapshot from DinMo to ChatGPT Ads as a Google-compatible CSV feed over SFTP.

The **Export a product feed** destination writes a full product catalog snapshot to the SFTP feed configured in ChatGPT Ads Manager. DinMo produces a UTF-8 CSV with a header row and overwrites the same stable file on every successful full run.

{% hint style="info" %}
Create and configure the feed in ChatGPT Ads Manager before using DinMo. OpenAI does not currently expose a public API for creating the feed connection or uploading its catalog contents; DinMo transfers the file with the SFTP credentials shown in Ads Manager.
{% endhint %}

## Prerequisites

1. In ChatGPT Ads Manager, open **Feeds** and create an SFTP feed connection.
2. Copy the SFTP host, port, username, and password.
3. Edit the [ChatGPT Ads platform connection](/integrations/destination-platforms/chatgpt-ads.md) in DinMo and fill in all four optional product feed SFTP fields.
4. Prepare a DinMo product model containing the required product fields.

## Add the destination

1. Open the ChatGPT Ads platform connection in **Destinations**.
2. Select **Add destination**.
3. Choose **Export a product feed**.
4. Enter the remote SFTP folder, if the feed uses one.
5. Enter a stable file name without an extension. DinMo appends `.csv`.
6. Save the destination.

Product feeds use **Full only** runs and **Snapshot** synchronization. These settings ensure that every file represents the complete current catalog rather than a delta.

## Map product fields

The following fields are required:

| Field                | Expected value                                          |
| -------------------- | ------------------------------------------------------- |
| **Product ID**       | A stable identifier that remains the same across runs.  |
| **Title**            | Product title, up to 150 characters.                    |
| **Description**      | Product description, up to 5,000 characters.            |
| **Product page URL** | A valid absolute product URL.                           |
| **Image URL**        | A valid absolute image URL.                             |
| **Availability**     | `in_stock`, `out_of_stock`, `preorder`, or `backorder`. |
| **Price**            | Amount and ISO currency code, for example `89.00 EUR`.  |
| **Brand**            | Product brand, up to 70 characters.                     |

You can also map Google-compatible optional fields, including additional images, sale price and dates, GTIN, MPN, condition, product type and category, item group attributes, color, size, material, age group, gender, pattern, video and virtual model links, expiration date, and custom labels 0–4.

DinMo automatically adds `is_ads_eligible=true` to every valid exported row. Do not add or map this column in the source model.

## File limits and scheduling

Each activation writes one complete CSV file containing at most 500,000 products and no more than 500 MB. If the catalog exceeds either limit, reduce the exported model before retrying. Invalid product rows are reported as activation errors and are excluded from the file.

OpenAI recommends refreshing full product feeds daily. Choose a schedule that reflects how often price, availability, or other catalog attributes change.

## Troubleshooting

### SFTP authentication fails

Copy all four credentials again from the same feed connection in ChatGPT Ads Manager. Confirm that the port is a number and that the password has not been rotated.

### Products are rejected

Check the eight required mappings first. URLs must be absolute, availability must use one of the supported values, and price must include a currency code.

### The file is too large

Limit the model to 500,000 products and keep the generated CSV below 500 MB. Use a separate feed strategy for larger catalogs.

See OpenAI's [product feed overview](https://developers.openai.com/ads/product-feeds), [file upload overview](https://developers.openai.com/commerce/specs/file-upload/overview), and [product field specification](https://developers.openai.com/commerce/specs/file-upload/products) for the authoritative feed contract.


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter, and the optional `goal` query parameter:

```
GET https://docs.dinmo.io/integrations/destination-platforms/chatgpt-ads/export-a-product-feed.md?ask=<question>&goal=<endgoal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is optional and describes the broader end goal you are ultimately trying to accomplish on behalf of the user. GitBook uses it to tailor the answer towards what is most useful for that goal.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
