
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.

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.
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.
Setup
Live in five steps
From a bare Shopify store to a listed offer: the whole setup fits into one coffee break.
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.
Install Feedflock
Add Feedflock from the Shopify App Store. It reads your products, variants, stock and images directly through the Shopify API.
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.
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.
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
<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 & Accessories > Clothing > Shirts & Tops</g:google_product_category> <g:product_type>Men's shirts</g:product_type> <g:size>M</g:size> <g:gender>unisex</g:gender> <g:age_group>adult</g:age_group> </item>

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
How Pinterest ingests the feed
- A hosted data source is ingested once every 24 hours, and you can trigger an ingestion by hand
- The
URLmust start with http or https, carry no credentials and use port 80 or 443 - A hosted
URLnever 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.
Google's schema, Pinterest's rules
- Pinterest prefers Google Shopping's
RSS2.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
XMLor 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.
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 ' > '.
Identifiers, images and shipping
- brand, gtin and mpn help Pinterest show your products to the right people
- The
GTINis 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.
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
Get on every marketplace that matters this afternoon.
Install free, connect your first feed in minutes, and let Feedflock keep it fresh and validated.