Output feeds
Every store gets a set of feed files, rebuilt on every update. You add one of them to your catalog; the others are there when you need them.
The files
| File | What it holds | Use it for |
|---|---|---|
meta-full.xml | Every product in your feed with every field you sent, in Meta's RSS format. The image link points at our 1:1 image; the 4:5 and 9:16 images, when switched on, come first in the additional images, followed by your own. | A Meta catalog that runs on a scheduled feed: replace its URL with this one. |
meta-supp.csv | Only id, image_link and additional_image_link, for products that have one of our images. | A Meta catalog created by Shopify, Salla or a Zid app: add it as a supplementary feed. It changes images only, never prices or stock. |
snap-full.xml | The same products and fields as the full Meta feed, with the 1:1 image. | Your Snapchat catalog's scheduled feed. |
meta-lang-en.csv, meta-lang-ar.csv | Meta language feeds: the title, link and image in your second language for products that have a title in it. | Add as a language feed in Commerce Manager, so people using Facebook or Instagram in that language see that language's image. |
tiktok-full.csv, tiktok-full.xml | Every active, valid product TikTok accepts, with sku_id as the id, the 1:1 image and the 4:5 and 9:16 images as additional images. | TikTok Ads Manager, Assets, Catalogs: add products by data feed, schedule hourly, update method Replace. TikTok has no supplementary feed, so this is always the full feed. |
pinterest-full.xml, pinterest-full.csv | Every active, valid product Pinterest accepts, with the 2:3 image when you turn that size on (Rules, Sizes and language), otherwise your own photo. | Pinterest Ads, Catalogs: add a data source with this URL. Pinterest reads it once a day. |
snap-supp.csv, snap-supp.xml | The supplementary shape for Snapchat: ids and our 1:1 image. | A Snapchat catalog that a platform integration fills: add it as a supplementary feed. |
meta-full.csv, snap-full.csv, meta-supp.xml | The same files in the other format, CSV or XML. | A catalog that takes the other format, or if you prefer it. |
Products we could not draw, invalid rows and skipped products stay in the full feeds with their original image. See the Meta and Snapchat guides for where each file goes.
Design variants
On Growth and up, a store can set a design for variant B and for variant C. Each variant has every file above at the same URL with ?v=b or ?v=c added, for example meta-full.xml?v=b. A variant's files hold the same products, prices and fields as your main files; only the images differ. Put each variant into a catalog of its own (the same ids in one catalog would overwrite each other's images) and run it as its own ad set.
Country feeds
On Growth and up, a store that sells in other countries can add up to 10 markets, each with the feed columns that hold its price (for example price:US). Each market gets its own full feeds with the country code in the name: meta-full-us.xml, meta-full-us.csv, snap-full-us.xml, tiktok-full-us.csv, pinterest-full-us.xml and their twins. We never convert currencies: a product with no price for a market is left out of that market's files.
Product video
On Pro and Enterprise, with video switched on, the Meta files carry a link to each product's video in video[0].url (and the 9:16 video in video[1].url when you make that size), and the TikTok file carries it in video_link. A product gets the link only once its video exists; Snapchat, Pinterest and the language feeds carry no video.
Feed URLs
https://feeds.catalogbadge.com/{public_id}/{token}/{name}public_id is your store's random ID, token is a secret, and name is one of the files above. Your dashboard shows the full URLs on the store's overview.
Replacing the token
If a feed URL leaks, rotate the token from the store's overview in your dashboard. The new URLs work at once, and the old token keeps working for 7 days so you can update your catalogs without a gap.
How the feeds are served
- XML files are served as
application/rss+xmland CSV files astext/csv, both UTF-8. Cache-Control: no-store, with anETag: a request that sendsIf-None-Matchfor an unchanged file gets304 Not Modified.- A wrong ID, token or file name gets the same
404, so nothing reveals which part was wrong. - A paused store answers
503, so the ad platforms keep the last copy they fetched instead of emptying your catalog. - A store's feeds answer at most 60 requests a minute. The ad platforms fetch at most hourly, so this never limits them.
- A new file replaces the old one only after it passes our checks: written completely, at least 80% of the previous product count, and every image one we made for your store.