# Pinterest vs OpenAI: feed requirements compared

Pinterest and OpenAI are the two channels least like the Google baseline, in opposite directions. Pinterest asks for less than anyone and wants a separate feed per market; OpenAI asks for a different shape entirely, requires brand and seller_name, and takes delivery by SFTP push.

- **Canonical URL:** https://www.feedlab.io/knowledge/compare/pinterest-vs-openai
- **Last reviewed:** 18 September 2026
- **Source:** feedlab knowledge base
- **Licence:** free to quote and cite with attribution to feedlab


## Short answer

These two have little in common beyond describing the same products. A Pinterest feed is the weakest possible starting point for OpenAI, because the fields Pinterest let you leave optional are exactly the ones OpenAI requires. If you feed both, build from the Google-shaped mapping rather than from either of these.

## Attributes treated differently

| Attribute | Pinterest | OpenAI |
| --- | --- | --- |
| `brand` | Optional | Required |
| `id` | Required (`id`) | Required (`item_id`) |
| `image_link` | Required (`image_link`) | Required (`image_url`) |
| `item_group_id` | Optional (`item_group_id`) | Optional (`group_id`) |
| `link` | Required (`link`) | Required (`url`) |

## Every attribute, side by side

| Attribute | Pinterest | OpenAI |
| --- | --- | --- |
| `availability` | Required | Required |
| `brand` | Optional | Required |
| `condition` | Optional | Optional |
| `custom_label_0` | Not documented here | Optional |
| `description` | Required | Required |
| `google_product_category` | Not documented here | Optional |
| `gtin` | Optional | Optional |
| `id` | Required | Required |
| `identifier_exists` | Not documented here | Not supported |
| `image_link` | Required | Required |
| `item_group_id` | Optional | Optional |
| `link` | Required | Required |
| `mpn` | Optional | Optional |
| `price` | Required | Required |
| `sale_price` | Optional | Optional |
| `title` | Required | Required |


## Differences a table cannot show

### OpenAI requires what Pinterest made optional

Brand is optional on Pinterest and required on OpenAI. A catalogue fed only to Pinterest has never had to have complete brand data, so this is usually the largest piece of real work in the migration, and it is data work rather than mapping work.

### Four core fields change name

id becomes item_id, link becomes url, image_link becomes image_url and item_group_id becomes group_id. OpenAI also takes product_category and ads_metadata, neither of which exists in a Pinterest feed at all.

### Delivery and cadence are unrelated

Pinterest fetches one feed per market once every 24 hours at a time you choose. OpenAI expects full snapshots pushed to an SFTP endpoint at least daily, retained for up to 14 days. One is a pull you schedule, the other is a push you monitor.

### Price formatting differs

Pinterest follows the amount-plus-currency convention of the Google-derived specifications. OpenAI wants a decimal amount, a space and an uppercase ISO 4217 code in a single string, which has to be assembled at generation time from the two values Shopify holds separately.

### Market structure inverts

Pinterest wants a separate data source per country and language pair, so a multi-market store maintains several feeds. OpenAI expects a full catalogue snapshot. The pipeline shape you built for one is the wrong shape for the other.

### Variants are described rather than grouped

Pinterest treats item_group_id as optional and does little with it. OpenAI wants group_id, a listing_has_variations flag and a variant_dict mapping option names to values, so variants have to be described rather than merely tied together.




## Reusing one feed for the other channel

1. **Audit brand coverage before anything else** — Count the products with no usable brand value. Pinterest never forced the question, OpenAI will, and filling brand properly is data entry rather than configuration, so it sets the timeline.
2. **Build the snapshot and the push** — OpenAI wants the whole catalogue in one file pushed to its SFTP endpoint, not a per-market feed pulled from your server. Build that pipeline separately rather than adapting the Pinterest one.
3. **Rename the four shared fields and add the two new ones** — Map item_id, url, image_url and group_id from what you already produce, then add product_category and seller_name, neither of which exists in a Pinterest feed.
4. **Assemble the price string** — Join the decimal amount and the uppercase ISO currency code with a space, and do the same for sale prices. Pinterest never needed this, so there is no existing rule to extend.
5. **Describe the variants** — Set group_id from the Shopify product id, flag products with more than one variant, and build variant_dict from the option names and values. On Pinterest this relationship was optional and probably unmapped.
6. **Keep the Pinterest image choice for Pinterest** — If you mapped a portrait image to suit Pinterest, do not carry that decision across. OpenAI has no preference for vertical crops, so send the primary product image and keep the channel-specific choice where it belongs.







## Frequently asked questions

### Can I build an OpenAI feed from my Pinterest feed?

It is the weakest starting point of any channel here. Pinterest treats brand and the identifiers as optional, OpenAI requires brand, and the field names, price format, variant structure and delivery all differ.

### What does OpenAI need that Pinterest does not?

Brand on every item, seller_name as a store-level value, a price string with the currency code inside it, product_category, and a variant structure built from group_id, listing_has_variations and variant_dict.

### Do both channels need one feed per market?

No, and this is one of the sharper differences. Pinterest wants a separate data source for each country and language pair, while OpenAI expects a full catalogue snapshot pushed as one file.

### Which of the two keeps a catalogue more current?

Neither is fast. Pinterest fetches once every 24 hours at a time you pick; OpenAI expects a push at least daily and retains the last processed snapshot for up to 14 days. Both are structurally a day behind at worst.




## Primary sources

- [Pinterest: Data source ingestion and formatting](https://help.pinterest.com/en/business/article/data-source-ingestion)
- [OpenAI: Product feed required fields](https://developers.openai.com/commerce/specs/file-upload/products)



