Guide
Facebook catalog feed: the complete guide
A Facebook catalog feed is the file that fills a Meta product catalog, the one catalog behind Advantage+ catalog ads, Facebook Shops and Instagram Shopping. Meta's spec asks for id, title, description, availability, condition, price, link, image_link and at least one of brand, gtin or mpn, each with its own format. Below is that spec with Meta's limits, the two ways to get a feed into a catalog, and the rules that turn a store export into a valid Meta product catalog.
We connect your store, build the feed and keep it in sync. Updated 2026-10-27.
At a glance
- Required by Meta: id (100 chars, unique), title (200 max, keep to 65 or fewer), description (9,999, plain text), availability, condition, price, link, image_link, and brand, gtin or mpn.
- Values differ from Google: availability is in stock or out of stock with a space; price is a number, a space and an ISO code (9.99 USD).
- Meta accepts CSV, TSV, RSS XML and ATOM XML feeds; scheduled feeds cannot update more often than once an hour.
- A duplicated id makes Meta ignore every copy of it; variants share item_group_id instead.
- We set up the feed in Textfinity from the Meta Ads channel template; it is published as CSV on a stable URL that Commerce Manager fetches as a scheduled data feed, registered with you.
Meta's required fields for a Facebook catalog feed
| Field | Meta's rule | Typical store source |
|---|---|---|
| id | Max 100 chars; unique, or all copies are ignored | Variant SKU |
| title | Max 200 chars; Meta advises 65 or fewer so it is not cut | Product title, shortened |
| description | Max 9,999 chars; plain text, no HTML, links or all caps | Description with HTML stripped |
| availability | in stock or out of stock | Stock quantity |
| condition | new, refurbished or used | Usually a static value |
| price | Number, space, ISO 4217 code: 9.99 USD; no symbols | Price plus currency suffix |
| link | Product page on your own domain, http:// or https:// | Product URL |
| image_link | JPEG or PNG, at least 500 x 500 px, up to 8 MB | Main image URL |
| brand / gtin / mpn | At least one; brand and mpn max 100 chars; gtin a valid UPC, EAN, JAN, ISBN-13 or ITF-14 | Vendor, barcode |
| google_product_category or fb_product_category | One of them; most specific category name or ID | Category mapping |
From Meta for Developers, Catalog fields for commerce, checked 2026-10-27.
Optional fields that change what the catalog can do
- item_group_id (100 chars): the same value on every variant of one product, so ads and Shops show one product with options.
- sale_price: lower than price, same format; pair it with sale_price_effective_date for a dated promotion.
- additional_image_link: up to 50 more images, 2,000 characters in total, comma-separated and quoted.
- color, size, gender (female, male, unisex), age_group (adult, all ages, teen, kids, toddler, infant, newborn): required for some categories such as clothing and shoes.
- custom_label_0 to custom_label_4 (100 chars each): your own values for building product sets, such as price band or season.
- quantity_to_sell_on_facebook and status (active or archived): for Shops checkout and for hiding items without deleting them.
Two ways to get the feed into a Meta product catalog
Scheduled data feed: in Commerce Manager you add a data source, paste the feed URL and choose how often Meta fetches it. Meta's feed reference lists CSV, TSV, RSS XML and ATOM XML, notes that CSV and TSV are the most common, and says scheduled feeds do not support uploads more often than once per hour. A replace schedule deletes items that are no longer in the file; an update-only schedule creates and updates but never deletes.
Platform connection: a store platform's own Meta channel (Shopify's Facebook & Instagram app, for example) writes products into a catalog without a file. It carries the store's data as it is, with no room for feed rules, and if a platform channel and a feed both write to one catalog, items collide on id. Textfinity uses the scheduled data feed route: we register the feed URL in Commerce Manager with you. Create the product (e-commerce) catalog in Commerce Manager first. Either way the item diagnostics live in Commerce Manager; Textfinity does not import them.
From a store export to a valid Facebook product feed
Most of the work is format, not content. Availability needs Meta's spelling, which a Google feed does not have (Google writes in_stock). Prices need the currency code after a space. Descriptions need HTML stripped. Titles need a short version: Meta's 65-character advice is much shorter than what a Google feed or Textfinity's AI titles (100 to 150 characters) produce, so build the Meta title with a combine of fewer fields or a regexp that trims it, and keep the long title for Google.
In Textfinity, each of those is one mapping rule we set up on the Meta Ads template, and the output is a comma-delimited CSV on a stable URL that is rebuilt whenever the store syncs. Products that should stay out of ads, such as gift cards or zero stock for prospecting, come out with a filter rule rather than a second export.
Meta Ads feed rules
availability <- if [stock] equals "0" then "out of stock" else "in stock"
price <- [price] + " EUR"
description <- remove from regexp <[^>]+>
condition <- static "new"
item_group_id <- rename [parent_sku]Examples
Worked examples, by situation
Four Meta catalogs built from four different stores and goals.
Reusing a Google feed as the Meta catalog
Before
availability: in_stock price: 59.00 EUR title: Women's Merino Crew Neck Sweater in Forest Green, Size M, Regular Fit
After
availability: in stock price: 59.00 EUR title: Merino Crew Neck Sweater, Forest Green
How we set it up
We read the Google-shaped XML feed URL as the source, map availability with replace from regexp _ with a space, and title as a combine of product type and color only, under 65 characters. Google keeps its long title in its own feed.
Price-band product sets with a custom label
Before
price: 1299.00 custom_label_0: (empty)
After
price: 1299.00 USD custom_label_0: over-1000
How we set it up
We give custom_label_0 conditional rules on the raw price: matches regexp ^\d{4,}(\.\d+)?$ gives over-1000, ^[3-9]\d{2}(\.\d+)?$ gives mid, else entry. In Commerce Manager, one product set per label feeds separate ad sets.
A small catalog kept in a spreadsheet
Before
name: Smoked Sea Salt 120 g price: 8.50 brand: (empty)
After
title: Smoked Sea Salt 120 g price: 8.50 USD brand: Saltworks Co. condition: new
How we set it up
We read the Google Sheet as the source, map title by rename from name, give price the suffix " USD", and give brand and condition static values, since every product is the shop's own brand and new.
Gallery images and a guard against small pictures
Before
images: https://shop.example/a.jpg|https://shop.example/b.jpg|https://shop.example/c.jpg image_link: https://shop.example/a-150x150.jpg
After
image_link: https://shop.example/a.jpg additional_image_link: https://shop.example/b.jpg|https://shop.example/c.jpg
How we set it up
We map image_link with remove from regexp \|.*$ on the gallery column, so the full-size first image replaces the 150 x 150 thumbnail, and additional_image_link with remove from regexp ^[^|]*\| on the same column (Meta accepts vertical bars as separators). An exclude filter, images is blank, reads the source column, not the mapped image_link.
Copy this plan
Plan: a working Facebook catalog feed today
Steps 1 and 6 happen in Meta's Commerce Manager; the rest in Textfinity.
01
Create the product catalog in Commerce Manager
Under your business portfolio, create an e-commerce (product) catalog before connecting anything. This is done in Meta's interface.
02
Send us your store
Shopify connects natively; other stores connect by a CSV or Google Shopping-shaped XML export URL, over HTTP or SFTP, or a Google Sheet.
What we set up: We connect the store, export URL or Google Sheet.03
Start from the Meta template
The template pre-fills Meta's required and recommended columns.
What we set up: We start from the Meta Ads (Facebook + Instagram catalog) channel template.04
Add the Meta-specific rules
Availability with a space, price with a currency code, stripped description, a short title, static condition, item_group_id for variants.
What we set up: We map availability with an advanced rule, add the currency suffix to price, strip description with remove from regexp and build title as a combine.05
Filter what should not advertise
Gift cards, samples, drafts; zero stock for prospecting catalogs if you prefer.
What we set up: We add exclude filters with includes and is less or equal to.06
Register the feed on the catalog
Add the feed URL in Commerce Manager as a scheduled data feed (hourly at most). Review item issues in Commerce Manager after the first fetch.
What we set up: We hand you the feed URL and register it with you: you give us access or we walk you through it.
Customization tips
Make it yours
One source per catalog
If a platform channel and a feed both write to one catalog, items collide on id. Give each catalog a single source; use a second catalog when ads need different data from Shops.
Replace or update-only
A replace schedule removes items missing from the file, which keeps the catalog clean but deletes products your filter dropped. Update-only never deletes, which is safer for partial feeds and messier over time.
Product sets beat extra feeds
Custom labels let you build product sets for price band, season or margin from one feed. Extra feeds double maintenance.
Use the Google category you already have
Meta accepts google_product_category in place of fb_product_category, so a store that already maps Google categories can reuse that column instead of learning a second taxonomy.
FAQ
Questions about facebook catalog feed
What fields does a Facebook catalog feed need?
Meta requires id, title, description, availability, condition, price, link and image_link, plus at least one of brand, gtin or mpn, and a category in google_product_category or fb_product_category. Availability is in stock or out of stock, and price is a number followed by a space and a currency code.
What file format does a Meta product catalog accept?
CSV, TSV, RSS XML and ATOM XML. Meta notes CSV and TSV are the most common. Textfinity publishes a comma-delimited CSV on a stable URL that Commerce Manager can fetch on a schedule.
How often can Meta update a catalog from a feed?
Scheduled feeds cannot update more often than once per hour. For faster changes Meta points to its Catalog Batch API; for most stores an hourly or daily schedule is enough.
Can I use my Google Shopping feed as a Facebook catalog feed?
Mostly. The fields overlap, but Meta writes availability with a space instead of an underscore, recommends much shorter titles, and has its own limits on ids and descriptions. Build a separate Meta feed from the same source with those rules applied.
Set up for you
Have your Meta product catalog filled from your store, rules included.
Send us your store and your catalog in Commerce Manager. We set up the Meta feed in Textfinity with the availability, price and title rules, and register its URL as a scheduled data feed with you.
Tell us your store and channels. We reply within 24 hours.