Skip to content
Snapchat
Ad platforms

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.

01 · ShopifyProduct in the catalog
Linen shirt SandNordlin · Men's shirtsSKU-2048 · S–XL
Price
$59
In stock
0 pcs
When out of stock
02 · snapchat.tsvUpdated just now
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 out of stock 59.00 USD Nordlin 8594000123453 new Apparel & Accessories > Clothing > Shirts & Tops Men's shirts 8812345678901 M
Category mapping

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.

Full category path in the feed
One mapping per product type
Override per individual product
Shopify typeproducts
Channel category
Men's shirts
Catalog coverage79 %
−20% off compare-at
Productprice (regular)sale_​price
Linen shirt Sand$59.00$47.20
Mug Fjord 350 ml$18.00$14.40
Trail Pro$139.00$111.20
Backpack Ridge 28 l$69.00$55.20
Soy candle Les$14.00$11.20
$59.80saved across these products
5 / 5products with the sale overlay
Sale prices

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.

22 photos 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
In the feed
12
In the feed
13
In the feed
14
In the feed
15
In the feed
16
In the feed
17
In the feed
18
In the feed
19
In the feed
20
In the feed
21
No column
22
No column
20images in the feed
2without a column
Image gallery

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.

Feed health

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.

Feed quality · snapchat.tsv
76 / 100
To review: 4
No brand, GTIN or MPN on 6 productsSnapchat requires one of the three on every row: the identifier rule. brand comes from the Shopify vendor by default, so a product without a vendor has none.
Missing description on 7 productsdescription is required. A product without one is a per-product error in Catalog Diagnostics and is not uploaded.
No Google category on 9 productsgoogle_product_category is optional, but Snapchat recommends one at least three levels deep for every product, because it feeds their ranking models.
Missing image_link on 2 productsimage_link is required and the ad is built from it, so a product without one has nothing to show.

Setup

Live in five steps

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

  1. 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.

  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 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.

  4. 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.

  5. 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

snapchat.tsv
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									
Live preview
Linen shirt Sand

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

01

How the Snapchat data feed works

  • Set up Data Feed reads a hosted file from an HTTP, HTTPS, FTP or SFTP URL
  • Snapchat refreshes it hourly or daily, at a time of day you choose
  • CSV, TSV, TXT or XML (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.

02

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.

03

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.

04

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 JPEG and PNG
  • 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.

feedflock · mcp

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

Almost. Snapchat's vocabulary is Google's and it says feeds from other platforms work if they adhere to its specification. The differences to watch: availability is five spaced values with no backorder, any one of brand, GTIN or MPN is enough as an identifier, additional images cap at 20 instead of 10, and a Snapchat catalog has no shipping field at all. Feedflock's Snapchat template has all of it built in.
The one your Snap Pixel sends as item_id, because Dynamic Ads retargeting joins on it. The template defaults to the numeric Shopify variant ID, which is unique, stable and never reused. Whatever you choose, keep it consistent: a duplicate id can fail the whole catalog upload.
The row stays in the feed with availability out of stock, one of Snapchat's five values. Snapchat excludes out-of-stock products from serving automatically, so a sold-out item stops advertising without leaving the catalog.
No. Snapchat requires just one of brand, gtin or mpn, and brand comes from your Shopify vendor by default, which satisfies the rule on every row. Map an mpn only if your code really is the manufacturer's part number: the spec caps it at 50 numeric characters, which is why the template doesn't default it to your SKU.
For a data feed: CSV, TSV, TXT or XML in Google's RSS/ATOM shape, gzipped files included, zipped ones excluded, up to 10 million products. A manual upload is CSV only, up to 500 MB, recommended for catalogs under 50 products. Feedflock serves TSV, a format on the accepted list by name, on a hosted URL.
No, a Snapchat catalog has no shipping attribute at all. Checkout happens on your own site through the link column, and Snapchat never quotes a delivery cost on an ad, so your Shopify shipping rates simply have no destination in this feed.
Yes. Filter by collection, tag, price or stock level, or exclude individual variants, for example sizes you don't want to advertise.

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