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

FieldFormat and limitTemplate value
idUnique, max 128 characters; must match Pixel item_ids for retargetingSH-LIN-SND-M
titleMax 375 characters; about 40 recommendedMarlow Linen Shirt - Sand
descriptionMax 5,000 charactersMen's linen shirt in sand, relaxed fit.
linkhttp or https, max 2,000, URL-encodedhttps://shop.example.com/products/linen-shirt
image_linkWebP, JPEG or PNG, at least 200 x 200 px, no GIFhttps://shop.example.com/img/linen-shirt.jpg
availabilityIn stock, Out of stock, Preorder, Discontinued, Available for orderIn stock
price199 USD (USD 199 also accepted); can be 0.00, not empty59.00 USD
brand, gtin or mpnOne required; brand max 70, gtin max 70, mpn max 50Marlow

From Snapchat Business Help, Product Catalog Field List, checked 2026-10-27.

Optional fields worth filling

FieldFormatWhy fill it
item_group_idStringGroups sizes and colors; must match the Pixel's item_category if you retarget by group
sale_price, sale_price_effective_date199 USD; ISO 8601 start/end with a slashShows the markdown
conditionNew, Refurbished, UsedOptional; tells shoppers a used or refurbished item apart
google_product_categoryGoogle taxonomy, max 250Snap uses it in ranking; recommends depth 3 or more
product_typeYour own path, max 750Product set filters
additional_image_linkURL, up to 20 imagesMore creative for carousels
color, size, gender, age_group, material, patternStrings; gender Male, Female, UnisexApparel targeting and sets
custom_label_0 to 4Max 100; about 40 may showProduct sets by margin, season, bestseller
mobile_linkURL, max 2,000Used 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.

Fashion · Shopify · Dynamic Ads retargeting · 1,900 variants

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.

Beauty · CSV export · 300 SKUs

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.

Furniture · made to order · 600 SKUs

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.

Electronics · Shopify · sale prices

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.

  1. 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.
  2. 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.
  3. 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.
  4. 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.
  5. 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.

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

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.

Have us build this feedOr email support@textfinity.io

Tell us your store and channels. We reply within 24 hours.