Skip to content
Pinterest
Ad platforms

Pinterest catalog feed for Shopify

A Pinterest catalog turns every product you sell into a product Pin and gives your shopping ads something to show. Feedflock turns your Shopify catalog into the RSS 2.0 feed Pinterest prefers, with Google's g: schema and one item per variant, and keeps it on a hosted URL that Pinterest picks up every day.

01 · ShopifyProduct in the catalog
Linen shirt SandNordlin · Men's shirtsSKU-2048 · S–XL
Price
1 290 Kč
In stock
0 pcs
When out of stock
02 · pinterest.xmlUpdated just now
<item>
<g:id>SKU-2048</g:id>
<g:item_group_id>8812345678901</g:item_group_id>
<g:title>Linen shirt Sand</g:title>
<g:description>Soft linen shirt with a regular fit.</g:description>
<g:link>https://shop.example/products/linen-shirt-sand</g:link>
<g:image_link>https://cdn.shop.example/files/linen-shirt-sand.jpg?v=1718000000</g:image_link>
<g:price>1290.00 CZK</g:price>
<g:availability>out of stock</g:availability>
<g:condition>new</g:condition>
<g:brand>Nordlin</g:brand>
<g:mpn>SKU-2048</g:mpn>
<g:google_product_category>Apparel &amp; Accessories &gt; Clothing &gt; Shirts &amp; Tops</g:google_product_category>
<g:product_type>Men&apos;s shirts</g:product_type>
<g:size>M</g:size>
<g:gender>unisex</g:gender>
<g:age_group>adult</g:age_group>
</item>
12 images per product
1
In the feed
2
In the feed
3
In the feed
4
In the feed
5
In the feed
6
In the feed
7
In the feed
8
In the feed
9
In the feed
10
In the feed
11
Ignored
12
Ignored
10images in the feed
2ignored beyond the limit
Image gallery

Ten extra images. The eleventh is ignored.

Pinterest accepts up to ten additional_image_link images per item. Anything beyond the tenth never reaches the feed. Rich galleries pay off: Pinterest recommends images of at least 1000 × 1500 px for Pins.

Feed health

Catch feed issues before Pinterest does.

Before every generation Feedflock checks that every field the channel requires is filled, and, on templates verified against the channel's own spec, that the values fit its rules. Most problems are fixed with one click, without editing products in Shopify.

Feed quality · pinterest.xml
76 / 100
To review: 4
No link on 3 productsProducts that aren't published to your Online Store have no product URL. Pinterest does not publish an item without a link.
Missing image_link on 2 productsimage_link is one of the seven required fields. Items without it are not published.
No Google category on 11 productsPinterest warns about every item whose google_product_category is missing or shallower than three levels.
Empty description on 4 productsdescription is required, and Pinterest does not publish an item that has none.

Setup

Live in five steps

From a bare Shopify store to a listed offer: the whole setup fits into one coffee break.

  1. Set up a business account and claim your site

    Create a Pinterest business account and claim your store's domain. Every item link in the feed has to be on that verified domain, otherwise the whole data source fails.

  2. Install Feedflock

    Add Feedflock from the Shopify App Store. It reads your products, variants, stock and images directly through the Shopify API.

  3. Pick the Pinterest template

    Create a new feed and choose the Pinterest template. The seven required fields come mapped: id, title, description, link, image_link, price and availability, with one item per variant.

  4. Choose country, language and currency

    You set these when you create the data source, and country and language can't be changed afterwards. Pick the market the feed's prices and pages are for.

  5. Add the feed URL as a data source

    In Catalogs, add a data source by URL. Pinterest ingests it once every 24 hours, and you can trigger an ingestion by hand from the portal. Feedflock regenerates the file every hour, so each ingestion reads fresh data.

    https://feedflock.appfleece.com/f/demo-pinterest/pinterest.xml

The feed

What the channel receives

pinterest.xml
<item>
  <g:id>SKU-2048</g:id>
  <g:item_group_id>8812345678901</g:item_group_id>
  <g:title>Linen shirt Sand</g:title>
  <g:description>Soft linen shirt with a regular fit.</g:description>
  <g:link>https://shop.example/products/linen-shirt-sand</g:link>
  <g:image_link>https://cdn.shop.example/files/linen-shirt-sand.jpg?v=1718000000</g:image_link>
  <g:price>1290.00 CZK</g:price>
  <g:availability>in stock</g:availability>
  <g:condition>new</g:condition>
  <g:brand>Nordlin</g:brand>
  <g:mpn>SKU-2048</g:mpn>
  <g:google_product_category>Apparel &amp; Accessories &gt; Clothing &gt; Shirts &amp; Tops</g:google_product_category>
  <g:product_type>Men&apos;s shirts</g:product_type>
  <g:size>M</g:size>
  <g:gender>unisex</g:gender>
  <g:age_group>adult</g:age_group>
</item>
Live preview
Linen shirt Sand

Nordlin

Linen shirt Sand

1 290 Kč

Feed fields

g:id

SKU-2048

g:item_group_id

8812345678901

g:title

Linen shirt Sand

g:description

Soft linen shirt with a regular fit.

g:link

https://shop.example/products/linen-shirt-sand

g:price

1290.00 CZK

g:availability

in stock

g:condition

new

g:brand

Nordlin

g:mpn

SKU-2048

g:google_product_category

Apparel & Accessories > Clothing > Shirts & Tops

g:product_type

Men's shirts

g:size

M

g:gender

unisex

g:age_group

adult

The channel

Every product becomes a Pin

Pinterest creates a product Pin for every item in your catalog. Your whole range shows up where people browse for ideas, with no manual pinning.

Every extra image is another Pin

Pinterest makes a separate Pin for each additional image of an item, up to ten. A full Shopify gallery gives every product more ways to be found.

Organic Pins and ads from one catalog

The same catalog powers free product Pins and paid shopping ads, so a price or stock change reaches both with the next ingestion.

The feed

  • The Pinterest template renders Google's RSS 2.0 schema with the g: namespace and all seven required fields mapped
  • One item per variant grouped by g:item_group_id, with size, colour and material taken from your Shopify options
  • Prices carry the ISO currency code. A compare-at price splits into g:price and g:sale_price on its own
  • g:google_product_category comes from Feedflock's Google taxonomy mapping, not your shop's own product types, so items aren't flagged for an off-taxonomy category
  • The gallery goes out as up to ten g:additional_image_link elements, which is Pinterest's limit, and Pinterest's own free_shipping_label and free_shipping_limit fields are ready to fill
  • A readiness check flags products missing a required field or a category before Pinterest's next ingestion, and fetch tracking warns you if Pinterest stops picking up the feed

Deep dive

01

How Pinterest ingests the feed

  • A hosted data source is ingested once every 24 hours, and you can trigger an ingestion by hand
  • The URL must start with http or https, carry no credentials and use port 80 or 443
  • A hosted URL never goes stale. A file uploaded by hand stops being distributed organically after 7 days
  • Country, language and currency are set per data source. Country and language can't be changed later
Technical details

A data source is a file Pinterest reads from a URL once every 24 hours. There is no on-demand API, but you can trigger an ingestion by hand from the portal. The URL must start with http or https, carry no credentials and use port 80 or 443, and Feedflock's hosted URL meets all three. If nothing changed since the last run, Pinterest simply finishes early.

Hosting the file is what keeps your Pins alive. A source you upload by hand has to be refreshed every 7 days or it stops being distributed organically, and every 90 days for ads. A catalog holds up to 20 million products, and once your first data source is approved, a business account can add up to 50. Each source has its own country, language and currency, and country and language can't be changed afterwards.

02

Google's schema, Pinterest's rules

  • Pinterest prefers Google Shopping's RSS 2.0 layout: item elements with g:-prefixed fields
  • Seven fields are required: id, title, description, link, image_link, price and availability
  • Availability takes in stock, out of stock or preorder, in lowercase with spaces
  • An item missing a required value is not published. A file with malformed XML or links off your domain fails as a whole
Technical details

Pinterest's preferred format is the Google Shopping RSS 2.0 layout: a channel of item elements whose fields carry the g: prefix and Google's names. It reads more than it documents, too. Its own sample feed carries g:ean and g:identifier_exists. Feedflock sends price as a number, a space and an ISO currency code, which is Pinterest's canonical form.

Seven fields are required: id, title, description, link, image_link, price and availability. Availability takes in stock, out of stock or preorder. Pinterest reports problems on three levels. A malformed file or item links off your verified domain fail the whole data source. An item without a required value is not published. A weak GTIN or category only produces a warning.

03

Variants and categories

  • Each variant is its own item, and all variants share g:item_group_id
  • id must be stable, unique and at most 127 characters
  • g:google_product_category takes Google's taxonomy, at least three levels deep
  • Your shop's own category path belongs in g:product_type, up to five levels
Technical details

Each variant is its own item sharing g:item_group_id, and colour, size, material, pattern, gender and age group tell the variants apart. The id must be stable, unique and at most 127 characters. A duplicate is an error for the rows that share it.

Pinterest warns per item when g:google_product_category is missing, has only one or two levels, or isn't from Google's taxonomy. These warnings cost reach without ever rejecting the item, so nobody else will point them out. Feedflock maps your products onto Google's tree, and your shop's own category path goes to g:product_type, up to five levels separated by ' > '.

04

Identifiers, images and shipping

  • brand, gtin and mpn help Pinterest show your products to the right people
  • The GTIN is 8, 12, 13 or 14 digits with no dashes. Anything else is a warning, not a rejection
  • image_link should be at least 1000 × 1500 px, and up to ten more images go out as g:additional_image_link
  • 'Free above X' has its own fields: free_shipping_label and free_shipping_limit
Technical details

Pinterest doesn't match your items against a product database, because the feed is the catalog. brand, gtin and mpn help it show your products to the right people. The GTIN is 8, 12, 13 or 14 digits with no dashes. Anything else is a row-level warning, not a rejection.

The main image should be at least 1000 × 1500 px, and up to ten more go out as separate g:additional_image_link elements, each becoming a Pin of its own. Pinterest only refetches an image when its URL changes, and Shopify's versioned image URLs take care of that. Free shipping above an order value goes in free_shipping_label and free_shipping_limit, which are fields Pinterest has and Google doesn't.

The takeaway

One URL, an hourly refresh and a template that already speaks Pinterest's Google-flavoured XML. Your Shopify catalog stays the single source of truth, and every daily ingestion reads its current state.

Claude · ChatGPT

Or set up your Pinterest feed in chat

Connect Feedflock to Claude or ChatGPT and ask. It creates the feed as a draft, maps your categories to Pinterest's own tree and tells you what is still missing. You approve every change.

feedflock · mcp

Create a Pinterest feed for my store and map my categories.

I'll create it as a draft and show you each change before I make it.

FAQ

Pinterest accepts both, with the same field names, but its preferred format is Google's RSS 2.0 XML with the g: namespace. That's what Feedflock's Pinterest template renders.
Pinterest ingests a hosted data source once every 24 hours, and you can trigger an ingestion by hand from the portal. Feedflock regenerates the file every hour, so each ingestion reads current prices and stock.
Seven: id, title, description, link, image_link, price and availability. An item missing one of them is not published. brand, gtin and a Google category are optional but worth sending, because Pinterest flags their absence as warnings.
No. A hosted feed reaches Pinterest directly as a data source, without the sales channel, and the Shopify-specific errors that Pinterest's own integration reports don't apply to it. Just don't load the same products into one catalog twice. Item IDs that already exist in another data source show up as errors.
Yes. Once your first data source is approved, a business account can have up to 50. Country, language and currency are set per data source and country and language are locked once created, so plan your markets before you add the URLs.
The item stays in the feed with availability out of stock, which Pinterest accepts, and switches back to in stock when you restock. Only an item with no availability value at all goes unpublished.

Get on every marketplace that matters this afternoon.

Install free, connect your first feed in minutes, and let Feedflock keep it fresh and validated.

.myshopify.com