Skip to content
feedlab Request early access

Channel comparison

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.

Where the two specifications diverge

The 5 attributes one channel treats differently from the other. Everything else is identical and is listed further down.

Attributes treated differently by Pinterest and OpenAI
Attribute Pinterest OpenAI What that means
brand Optional Required Stricter on OpenAI.
id Required id Required item_id The field is named differently on each channel.
image_link Required image_link Required image_url The field is named differently on each channel.
item_group_id Optional item_group_id Optional group_id The field is named differently on each channel.
link Required link Required url The field is named differently on each channel.

Differences a table cannot show

Requirement levels are the easy part. These are the differences in values, structure and delivery that break a feed copied from one channel to the other.

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

What actually has to change, in the order it is worth doing.

  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.

Every attribute, side by side

All 16 attributes documented in this knowledge base, as Pinterest and OpenAI each treat them.

Full attribute comparison between Pinterest and OpenAI
Attribute Pinterest OpenAI
availability Required availability Required availability
brand Optional brand Required brand
condition Optional condition Optional condition
custom_label_0 Not documented here Optional ads_metadata
description Required description Required description
google_product_category Not documented here Optional product_category
gtin Optional gtin Optional gtin
id Required id Required item_id
identifier_exists Not documented here Not supported
image_link Required image_link Required image_url
item_group_id Optional item_group_id Optional group_id
link Required link Required url
mpn Optional mpn Optional mpn
price Required price Required price
sale_price Optional sale_price Optional sale_price
title Required title Required title

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.

Both specifications in full

Errors on either channel

Related concepts

Primary sources

Channel specifications change. These are the official documents this page is based on.

Last reviewed View as markdown