
Snapchat catalog feed for Shopify
A Snapchat catalog powers Dynamic Ads, Product Catalog Ads, Collection Ads and catalog-powered Shopping Lenses: ads that show your products and send people to checkout on your own site. The vocabulary is Google's, but the rules are Snapchat's: five availability values, any one of brand, GTIN or MPN as the identifier, and no shipping field at all. Feedflock turns your Shopify catalog into the TSV Ads Manager expects and regenerates it every hour.

Your product types. The channel's categories.
The channel files offers under its own category tree. Feedflock suggests a category for each Shopify product type and you just confirm. One mapping covers every product of that type, including products you add later.
A sale is two prices, not one.
Snapchat carries a sale as the regular price in price and the discounted one in sale_price. Feedflock's template sends the Shopify compare-at price as price and the current price as sale_price, so the ad can show the markdown, and when you remove the compare-at price, the sale is over in the feed too. Both keep the same format, a number and an ISO currency code, and an optional sale_price_effective_date sets the window as an ISO 8601 start and end separated by a slash.
Twenty extra images per product. The twenty-first stays in Shopify.
Snapchat takes up to 20 additional images in additional_image_link (one comma-separated column, the main image excluded) or as one image[0].url column each. Feedflock fills the comma-separated form straight from your gallery, capped at twenty; anything beyond it has no column in the feed. And keep the gallery to JPEG or PNG: the field list allows WebP, but the diagnostics page lists JPEG and PNG as the supported formats.
Catch feed issues before Snapchat 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.
Create a catalog in Ads Manager
In Snapchat's Ads Manager, open Catalogs and create an Ecommerce catalog, which takes an Organization Admin. For Dynamic Ads for Web you attach a Snap Pixel to the catalog, which is what retargeting matches your products against.
Install Feedflock
Add Feedflock from the Shopify App Store. It reads your products, variants, stock and images directly through the Shopify API.
Pick the Snapchat template
Create a new feed and choose the Snapchat Catalog template. The whole required set comes mapped (id, title, description, link, image_link, availability and price), and brand from your Shopify vendor satisfies the one-of-three identifier rule. One row per variant.
Match id to your Snap Pixel
For Dynamic Ads retargeting, id must equal the item_ids your pixel sends. The template defaults to the numeric Shopify variant ID, which is unique and stable. Check it against your pixel setup before the first import.
Register the feed URL
In the catalog, choose Set up Data Feed: enter a name and the hosted URL, any credentials in their own form fields (never inside the URL) and a refresh schedule of hourly or daily. After the first run, check Catalog Diagnostics.
https://feedflock.appfleece.com/f/demo-snapchat/snapchat.tsv
The feed
What the channel receives
id title description link image_link availability price sale_price sale_price_effective_date brand gtin condition google_product_category product_type item_group_id color size gender age_group additional_image_link mobile_link custom_label_0 custom_label_1 custom_label_2 custom_label_3 custom_label_4 46012345678901 Linen shirt Sand Breathable linen shirt with a relaxed regular fit. https://shop.example/products/linen-shirt-sand?variant=46012345678901 https://cdn.shop.example/img/linen-shirt-sand.jpg in stock 59.00 USD Nordlin 8594000123453 new Apparel & Accessories > Clothing > Shirts & Tops Men's shirts 8812345678901 M

Nordlin
Linen shirt Sand
$59
Feed fields
id
46012345678901
title
Linen shirt Sand
description
Breathable linen shirt with a relaxed regular fit.
link
https://shop.example/products/linen-shirt-sand?variant=46012345678901
availability
in stock
price
59.00 USD
brand
Nordlin
gtin
8594000123453
condition
new
google_product_category
Apparel & Accessories › Clothing › Shirts & Tops
product_type
Men's shirts
item_group_id
8812345678901
size
M
The channel
Ads built straight from the catalog
One catalog feeds Dynamic Ads, Product Catalog Ads, Collection Ads and Shopping Lenses. Title and price are pulled onto the ad itself, so what your feed sends is what Snapchatters see.
Retargeting keyed by the pixel
Dynamic Ads show people the exact items they viewed on your site. It works by matching the item_id your Snap Pixel sends to the id in the feed. Get that pair right and the retargeting holds together.
One catalog for the world
There is one global product catalog, with no country sites to multiply your work. The currency travels with each price, so a single feed can serve every market you advertise in.
The feed
- The Snapchat template maps the whole required set (id, title, description, link, image_link, availability and price), and brand from your Shopify vendor satisfies the one-of-three identifier rule
- Google's vocabulary with Snapchat's differences built in: five availability values and no backorder, a gtin of up to 70 alphanumeric characters, one row per variant
- Variants share item_group_id from the Shopify product ID, with color and size read from the variant options
- A compare-at price becomes price plus sale_price: the regular price and the discounted one, always with the ISO currency code Snapchat expects
- The gallery goes out as one comma-separated additional_image_link, capped at Snapchat's 20 additional images
- The readiness check lists products with an empty required field or no Google category before the first upload, and fetch tracking warns you if Snapchat stops downloading the feed
Deep dive
How the Snapchat data feed works
- Set up Data Feed reads a hosted file from an
HTTP,HTTPS,FTPorSFTPURL - Snapchat refreshes it hourly or daily, at a time of day you choose
CSV,TSV,TXTorXML(RSS/ATOM); .gz accepted, .zip not; up to 10 million products- Credentials go into their own form fields, never into the feed
URL
Technical details
In Ads Manager, a catalog's data feed is a hosted file Snapchat fetches from a URL (HTTP, HTTPS, FTP or SFTP) on a refresh schedule of hourly or daily, at the time of day you pick. Accepted formats are CSV, TSV, TXT and XML in Google's RSS/ATOM shape; gzipped files are fine, zipped ones are not, and a file can hold up to 10 million products. If the file needs a login, the credentials go into their own form fields; Snapchat asks you never to put them in the URL.
Feedflock renders the TSV (a header row of Snapchat's column names, one tab-separated row per variant) and hosts it on a stable URL, regenerated every hour. You paste the URL once and never upload again. A manual CSV upload exists for small catalogs, up to 500 MB and recommended under 50 products, but a hosted feed is the way to keep a real catalog current.
Google's vocabulary, Snapchat's rules
- Required: id, title, description, link, image_link, availability, price, plus one of brand, gtin or mpn
- Availability is five values, from in stock to discontinued, with no backorder; sold-out items stay in the feed
- Price is a number and a currency code, “59.00
USD”; zero is a valid price - google_product_category is optional but recommended, at least three levels deep
Technical details
Snapchat says you can use a catalog file you already maintain for another platform, as long as it adheres to its specification, and the vocabulary is Google's. The differences are in the details. The required set is id, title, description, link, image_link, availability and price, plus any one of brand, gtin or mpn. Where Google wants a brand and a barcode, one identifier is enough here. Availability takes five values (in stock, out of stock, preorder, discontinued, available for order), and there is no backorder. Sold-out products stay in the feed: Snapchat excludes them from serving itself.
Price is lenient (“199 USD” or “USD 199”, zero allowed, the currency optional only when it's USD), and the template always appends the ISO code, the safe side of the rule. google_product_category is optional but recommended for every product, at least three levels deep, because it informs Snapchat's ranking models; every example in the spec is the English path, and that is what the template sends.
The pixel is the pairing key
- For Dynamic Ads retargeting, id must match the item_ids your Snap Pixel sends
- Matching on item_group_id works too; then it must equal the pixel's item_category
- Attaching a pixel is required for Dynamic Ads for Web
- Tracking parameters belong on the links before the feed is uploaded
Technical details
There is no product database to pair with on Snapchat; the pixel is the join. Dynamic Ads retargeting matches the item_id your Snap Pixel sends from product pages to the id column in the feed, or, if you match on groups, item_category to item_group_id. That makes the id choice a decision to make before the first import: the template's default, the numeric Shopify variant ID, is unique and stable, and a duplicate id can fail the whole catalog upload.
Two more things live outside the feed's columns. Attaching a pixel to the catalog is required for Dynamic Ads for Web. And URL parameters (your UTM tracking) must be included on the links in the catalog before upload; Feedflock appends them when the file is served, so the links the pixel sees and the links the ads use carry the same parameters.
Diagnostics, errors and images
- An error on a required field blocks that product; warnings on optional fields don't
- The downloadable report lists every feed error by id, but media failures are not in it
- Images at least 200 × 200 px and at most 5 MB; the diagnostics page lists
JPEGandPNG - Snapchat fetches images with its own user agent, so don't block it
Technical details
Catalog Diagnostics splits issues into errors (problems on required fields, which block the specific product) and warnings on optional fields, which don't. The downloadable report lists every feed error by id, so you can fix row by row. Media failures are the exception: a failed image never appears in the report, only on the diagnostics screen, so a product showing in ads without its photo is the telltale.
The image rules: at least 200 × 200 px, no larger than 5 MB, no GIFs. The field list allows WebP, JPEG and PNG, but the diagnostics page lists JPEG and PNG as the supported formats. Keep the gallery to those two and you are safe on both pages. And let Snapchat's fetcher through: it downloads images with its own user agent, and a blocked agent shows up as AUTH_ERROR or NOT_FOUND.
The takeaway
One URL, an hourly refresh and a TSV that speaks Google's vocabulary with Snapchat's rules, with IDs that match your pixel. Your Shopify catalog stays the single source of truth, and Snapchat advertises its current state.
Claude · ChatGPT
Or set up your Snapchat feed in chat
Connect Feedflock to Claude or ChatGPT and ask. It creates the feed as a draft, maps your categories to Snapchat's own tree and tells you what is still missing. You approve every change.
Create a Snapchat 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
Related feeds
Explore all 101 channelsGet on every marketplace that matters this afternoon.
Install free, connect your first feed in minutes, and let Feedflock keep it fresh and validated.