Ducted

Snapchat Product Catalog
feeds.

Dynamic product ads on Snapchat.

Snapchat's catalog spec is strict on pairs: seven fields are required, then at least one of brand, gtin or mpn, and a location-aware product needs both an address and an availability radius or neither.

Prices are read as 199 USD or USD 199; a bare number is taken to be US dollars, so any other currency has to carry its ISO code. Out of stock products are excluded from ads automatically, which makes availability the field that quietly decides your reach.

What the feed needs

Generated from the Ducted Snapchat Product Catalog template, the same field rules your mapping is validated against.

43 fields: 7 required, 1 recommended, 35 optional.

FieldLevelAccepted values / example
idrequired12345
titlerequiredBlue Cotton T-Shirt
descriptionrequired
linkrequired
image_linkrequired
availabilityrequiredin stock · out of stock · preorder · discontinued · available for order
pricerequired199 USD
google_product_categoryrecommendedApparel & Accessories > Clothing > Activewear

Field rules from the official spec, verified 2026-10-02.

Also supported, always optional (35): condition, brand, gtin, mpn, age_group, color, gender, item_group_id, product_type, adult, custom_label_0, custom_label_1, custom_label_2, custom_label_3, custom_label_4, size, additional_image_link, sale_price, sale_price_effective_date, address, availability_radius, mobile_link, icon_media_url, ios_app_name, ios_app_store_id, ios_url, android_app_name, android_package, android_url, material, pattern, display_size, size_system, size_type, offer_details

Where Snapchat catalog feeds get rejected

No brand, GTIN or MPN

Snapchat requires at least one of the three on every product. A feed of unbranded goods with no identifiers fails at the first record.

Address without a radius, radius without an address

Location-aware products carry address (a JSON latitude / longitude pair) and availability_radius in kilometres together. One without the other is an error.

Duplicate ids

Every product needs a unique id, and the ids must match what the Snap Pixel sends back. A catalog with duplicates may fail to upload entirely.

Currency read as dollars

199 and USD 199 are the same price to Snapchat, so a bare number passes the health check and a European store sending 199 advertises in US dollars; the ISO code has to be in the cell. A sale_price equal to or above price is flagged.

Validate your product feed for free →

From source to a live feed URL

  1. Connect the source. A Shopify, WooCommerce, Teemill, Spring, Printify Pop-Up, Bonfire or Fourthwall store address, a file, a feed URL or a REST API. No source at all? Website Indexing builds one from the store itself.
  2. AutoMap the fields. Every source column is scored against the channel template and the best match is pre-filled. You confirm or tweak.
  3. Transform what needs it. Casing, currency and number formats, conditional values, fallbacks for fields the source sometimes leaves empty.
  4. Validate before you send. The health check names the field, counts the affected records and shows example rows from your own data.
  5. Serve a permanent URL. The platform fetches your feed on a schedule; feed pull tracking shows when it last did.

The rest of the shopping stack

One mapped catalog serves every channel; each page covers what that platform's feed needs.

E-commerce feedsGoogle ShoppingMeta CatalogTikTok CatalogPinterestMicrosoft ShoppingRedditX ShoppingCriteoChatGPT Ads

Snapchat from the catalog you already mapped.

Add a Snapchat output to an existing project, or start free and map your first.

Create free accountCheck an existing feed