Template
Snapchat product catalog template
A Snapchat product catalog is a file of your products that Ads Manager uses for Dynamic Ads and Product Catalog Ads. Snap requires eight fields per product: id, title, description, link, image_link, availability, price and one of brand, gtin or mpn. Below is the full field list from Snap's spec, a CSV template with three example rows, the Shopify mapping, and examples of what changes when a Google feed becomes a Snapchat catalog.
We connect your store, build the feed and keep it in sync. Updated 2026-10-27.
At a glance
- Required: id (max 128, must match the item IDs your Snap Pixel sends), title (max 375), description (max 5,000), link, image_link, availability, price, and one of brand, gtin or mpn.
- Availability uses Snap's own values: In stock, Out of stock, Preorder, Discontinued, Available for order. Out-of-stock products are excluded from ads automatically.
- Titles can show on up to three lines, and Snap recommends about 40 characters so they are not cut off; price is written as 199 USD.
- Create the catalog in Ads Manager by manual CSV upload or a scheduled data feed. We set up Textfinity's Snapchat Ads template, which publishes that CSV on a stable URL and rebuilds it on your sync schedule.
Snapchat product catalog template: required fields
| Field | Format and limit | Template value |
|---|---|---|
| id | Unique, max 128 characters; must match Pixel item_ids for retargeting | SH-LIN-SND-M |
| title | Max 375 characters; about 40 recommended | Marlow Linen Shirt - Sand |
| description | Max 5,000 characters | Men's linen shirt in sand, relaxed fit. |
| link | http or https, max 2,000, URL-encoded | https://shop.example.com/products/linen-shirt |
| image_link | WebP, JPEG or PNG, at least 200 x 200 px, no GIF | https://shop.example.com/img/linen-shirt.jpg |
| availability | In stock, Out of stock, Preorder, Discontinued, Available for order | In stock |
| price | 199 USD (USD 199 also accepted); can be 0.00, not empty | 59.00 USD |
| brand, gtin or mpn | One required; brand max 70, gtin max 70, mpn max 50 | Marlow |
From Snapchat Business Help, Product Catalog Field List, checked 2026-10-27.
Optional fields worth filling
| Field | Format | Why fill it |
|---|---|---|
| item_group_id | String | Groups sizes and colors; must match the Pixel's item_category if you retarget by group |
| sale_price, sale_price_effective_date | 199 USD; ISO 8601 start/end with a slash | Shows the markdown |
| condition | New, Refurbished, Used | Optional; tells shoppers a used or refurbished item apart |
| google_product_category | Google taxonomy, max 250 | Snap uses it in ranking; recommends depth 3 or more |
| product_type | Your own path, max 750 | Product set filters |
| additional_image_link | URL, up to 20 images | More creative for carousels |
| color, size, gender, age_group, material, pattern | Strings; gender Male, Female, Unisex | Apparel targeting and sets |
| custom_label_0 to 4 | Max 100; about 40 may show | Product sets by margin, season, bestseller |
| mobile_link | URL, max 2,000 | Used instead of link when present |
Shopify Snapchat catalog: app sync or feed
Snap lets advertisers connect a catalog directly from Shopify, which is the simplest route when the store data is already ad-ready and one catalog covers every campaign. A feed is the better route when the catalog needs different data from the store: short titles for Snap's three-line limit, sale prices shown as a separate field, a product set limited to one collection, a second catalog for another country, or brand and GTIN filled from a spreadsheet.
With a feed, Textfinity pulls products and variants from Shopify natively, the Snapchat Ads template pre-fills the column names, and Ads Manager fetches the CSV from the feed URL. There is no direct Snapchat API connection in Textfinity; the catalog is created and pointed at the URL in Ads Manager.
What changes between a Google feed and a Snapchat catalog
- Availability spelling: Google writes in_stock; Snap lists In stock. Map it explicitly instead of copying the Google column.
- Title length: Google rewards 150 characters, Snap recommends about 40. Keep a separate title column for Snap.
- Identifiers: Snap needs only one of brand, gtin or mpn, but item IDs must match what the Pixel sends, or retargeting cannot match products.
- Images: Snap accepts WebP, JPEG and PNG from 200 x 200 px, but not GIF.
Examples
Worked examples, by situation
Four stores, four problems turning store data into a Snapchat catalog.
Short titles that fit Snap's three lines
Before
title: Marlow Men's Linen Shirt, Relaxed Fit, Button-Down Collar, Sand
After
title: Marlow Men's Linen Shirt
How we set it up
We map title with replace from regexp ^([^,]{1,40}),.*$ to \1, with the condition title matches regexp .{41,} so only titles over 40 characters are cut, at the first comma; else rename. Color goes in its own column, where product sets and ads can use it.
Stock count to Snap's availability values
Before
stock: 0 stock: 14
After
availability: Out of stock availability: In stock
Advanced transform on availability
if [stock] is empty then "Out of stock"
else if calc{[stock]} > 0 then "In stock"
else "Out of stock"How we set it up
We map availability as an advanced rule with the expression above. Snap excludes out-of-stock products from ads on its own, so this keeps them in the catalog without spending on them.
Made-to-order items marked correctly
Before
lead_time: 6-8 weeks
After
availability: Available for order
How we set it up
We map availability as add static value "Available for order" with the condition lead_time is in list (the lead-time values used for made-to-order), else rename the stock-based column. Snap's Available for order value fits products you build after purchase.
Compare-at price into price and sale_price
Before
variant_price: 159.00 variant_compareAtPrice: 199.00
After
price: 199.00 USD sale_price: 159.00 USD
Advanced transform on price
if [variant_compareAtPrice] is empty
then [variant_price] + " USD"
else [variant_compareAtPrice] + " USD"How we set it up
We map price as the advanced rule above, and sale_price as advanced [variant_price] + " USD" with the condition variant_compareAtPrice matches regexp \d, else leave empty. Snap wants the currency in the price field when it is not USD, so change the suffix per catalog.
Copy this plan
Plan: a Snapchat catalog from your store today
Ads Manager steps are in Snap's interface; we set up the rest in Textfinity.
01
Connect the store
Shopify connects natively; other platforms connect with a CSV or Google-shaped XML export URL or a Google Sheet.
What we set up: We connect your Shopify store, or read the export URL or Google Sheet you send us.02
Start a Snapchat feed
The Snapchat Ads channel template pre-fills Snap's required and recommended columns.
What we set up: We create the feed from the Snapchat Ads channel template.03
Map the Snap-specific values
Availability in Snap's spelling, price with currency, a short title, brand or GTIN, item_group_id for variants.
What we set up: We write availability as an advanced rule, shorten title with replace from regexp, and add the currency to price as a suffix.04
Keep ID parity with the Pixel
Use the same id your Snap Pixel sends as item_ids (usually the variant SKU or variant ID) or retargeting will not match products.
What we set up: We map id as a rename of the field your Pixel sends, after checking a few events with you.05
Create the catalog in Ads Manager
Menu → Catalogs → Ecommerce → set up a data feed with the Textfinity feed URL, or upload the CSV manually for a one-off test. You need the Organization Admin role. This step happens in Snap's interface.
06
Build product sets
Filter by product_type, brand or custom labels into sets for Dynamic Ads. This step happens in Ads Manager.
Customization tips
Make it yours
Reuse your Google feed's data, not its values
Snap's docs allow catalog files from other platforms if they meet Snap's spec. A copy of the Google feed fails on availability spelling and title length, so build a second feed from the same source and change only what differs.
Labels for product sets
Snap's product sets filter with contains and matches conditions. A custom_label_0 of bestseller, high_margin or new_arrival makes sets one rule each instead of long lists of IDs.
Depth-3 Google categories
Snap recommends a google_product_category for every product at depth 3 or more, because it feeds Snap's ranking. If you already map categories for Google Shopping, reuse that column.
Downloads
Take the files
FAQ
Questions about snapchat product catalog template
What fields does a Snapchat product catalog need?
id, title, description, link, image_link, availability, price, and one of brand, gtin or mpn. Optional fields include item_group_id, sale_price, condition, google_product_category, product_type, additional_image_link, color, size and custom labels 0 to 4.
How do I connect my Shopify catalog to Snapchat?
Snap supports connecting a catalog directly from Shopify. If you need different titles, a filtered product set or a catalog per country, use a feed instead: Textfinity pulls the Shopify catalog, maps it to Snap's fields and publishes a CSV that Ads Manager fetches as a data feed.
What availability values does Snapchat accept?
In stock, Out of stock, Preorder, Discontinued and Available for order. Out-of-stock products are excluded from ads automatically.
How long can a Snapchat catalog title be?
Up to 375 characters, but titles show on up to three lines and Snap recommends about 40 characters so they are not truncated on the ad.
Set up for you
Have a Snapchat catalog set up from your store's live data.
Send us your store or export URL. We set up the feed in Textfinity from the Snapchat Ads template and help you add its URL in Ads Manager; the software rebuilds it on schedule.
Tell us your store and channels. We reply within 24 hours.