Facebook Product Feed: Meta Catalog Specs, Template and Examples (2026)

Last updated
Read time
17 min
Facebook Product Feed: Meta Catalog Specs, Template and Examples (2026)

A Facebook product feed is a file of your products that Meta reads into a catalog in Commerce Manager, so they can show in your ads and shops on Facebook and Instagram. Each product needs nine fields: id, title, description, availability, condition, price, link, image_link and brand (plus size for clothing and shoes sold in Shops). Meta takes CSV, TSV, XLSX, Google Sheets or XML.

The template and examples on this page show what Meta expects the file to look like. If you run a WooCommerce store, don’t maintain that file as a sheet: generate the feed from your products with CTX Feed, which keeps it updated at a URL Meta fetches on a schedule. Below you’ll find Meta’s current limits field by field, the CTX Feed setup, CSV and XML examples, and a fix for each error Commerce Manager shows.

What changed in Meta’s spec recently, if your feed was built from an older guide:

  • availability now accepts only in stock and out of stock. Older guides, including the previous version of this page, listed five values.
  • There’s a new set of direct checkout fields, native_commerce and product_disclosures.
  • Meta now recommends internal_label instead of custom_label_0–4 for building product sets.
  • quantity_to_sell_on_facebook only matters for Shops on Facebook and Instagram.

What is a Facebook (Meta) product feed?

A catalog holds the products you advertise and sell across Meta’s apps, and a data feed is the file that fills it. Meta calls a feed “a file containing product data that you upload to your catalog”, either once or on a schedule.

One product catalog powers several things:

  • Advantage+ catalog ads show each person your most relevant products, based on their interests and actions.
  • Shops are a storefront on Facebook and Instagram, where you feature products or collections.
  • Product tags make your Instagram ads shoppable.
  • Collection and carousel ads can pull their products from the catalog.

So one feed covers Facebook and Instagram. You don’t build a separate Instagram feed.

Facebook product feed specifications (2026)

All field names, and some values, must be in US English. The tables below follow Meta’s Product data specifications for catalogs page, checked on 19 October 2026.

Required fields

FieldWhat Meta wantsLimit / values
idA unique ID per product, ideally the SKU. Case sensitive, and it must not match any item_group_id. For Advantage+ catalog ads, it must match the content ID your Meta Pixel sends for the same product.100 characters
titleA specific title, in title case.200 characters; under 65 recommended so it isn’t cut off
descriptionPlain text, different from the title, no links, not all capitals.9,999 characters
availabilityCurrent stock status.in stock, out of stock
conditionProduct condition.new, refurbished, used
priceA number, a space, then the ISO 4217 currency code. Use a period for decimals and no currency symbol.e.g. 9.99 USD
linkThe product page. To sell with Shops, it must be on a domain your business owns.Starts with http:// or https://
image_linkThe main product image.JPEG or PNG, at least 500 × 500 px, under 8 MB
brandThe brand name.100 characters
sizeRequired only for Shops, and only in some categories, such as clothing and shoes.200 characters

Out-of-stock products don’t show in your ads. They stay in your Facebook and Instagram shops for up to 56 days, marked “sold out”.

Prices: one currency per file. To sell in other currencies, upload a country feed.

Required fields for direct checkout

Meta lists two fields for selling through direct checkout (agentic commerce), which Meta says “is not available to everyone yet”.

  • native_commerce: true makes the product eligible for direct checkout. false, or leaving it blank, means it isn’t.
  • product_disclosures: compliance disclosures such as California Proposition 65 warnings or choking hazards. Each disclosure has subfields (content is required; title, symbol, jurisdictions and others are optional), numbered product_disclosures[0], [1]… up to 20 per product.

If direct checkout isn’t open to your account yet, leave both out.

Optional fields

Meta recommends sending as much relevant data as you can. These are the ones store owners use most:

FieldWhat it doesNotes
sale_priceDiscounted price, same format as priceMust be lower than price. Meta hides a sale price that’s equal to or higher than the full price.
sale_price_effective_dateWhen the sale starts and endsFormat 2025-11-24T09:30-08:00/2025-11-30T23:59-08:00. Without it, the sale runs until you remove the sale price.
item_group_idGroups variants (sizes, colours, patterns) of one productSame value on every variant; must differ from every id
statusactive or archivedArchived products don’t show in ads or shops
additional_image_linkExtra imagesUp to 20 URLs
gtinBarcode: UPC, EAN, JAN, ISBN or ITF-14No dashes or spaces; only if you’re sure it’s correct
mpnManufacturer part numberUse it when there’s no GTIN; 100 characters
google_product_category / fb_product_categoryCategory from Google’s or Meta’s listThe category name or its ID number
quantity_to_sell_on_facebookStock you have to sellShops only; a whole number
color, materialColour in words (not a hex code), material200 characters each
patternPattern or print100 characters
genderfemale, male, unisex
age_groupadult, all ages, teen, kids, toddler, infant, newborn
rich_text_descriptionHTML description for ShopsTags <p>, <b>, <i>, <ul>, <li>; not used in ads; keep description too
video[0].url … video[19].urlProduct videos for Advantage+ catalog adsA direct file link, not a YouTube page; max 200 MB
shippingCountry:Region:Service:PriceEnables the “Free shipping” overlay (price 0.0)
shipping_weightWeight in lb, oz, g or kg
internal_labelLabels for product sets, visible only to youFormat ['summer','trending']. Recommended over custom labels: no policy review on change
custom_label_0–4Text for your ad creative100 characters
custom_number_0–4Whole numbers to filter product sets by range0 to 4294967295, no decimals

Meta for Developers lists more optional fields.

Clothing and other variant products

Meta’s spec only requires size, and only for Shops in categories such as clothing and shoes. color, gender and age_group are optional. For variants, give each one its own row and its own id, the same item_group_id, and the attributes that tell them apart (color, size, material, pattern, gender). Fill in the same attributes for every variant in the group.

Additional fields for selling in India

Meta adds these only for products you sell with Shops or on WhatsApp in India:

  • origin_country: two-letter ISO country code.
  • importer_name and importer_address, if the origin isn’t India. importer_address is a JSON structure with street1, city and country required.
  • manufacturer_info: required for Shops.
  • wa_compliance_category: WhatsApp only; COUNTRY_ORIGIN_EXEMPT for non-physical goods such as services.

CTX Feed writes importer_address as a JSON object. If you map plain text, it wraps the text as the street1 value.

Other catalog types

Hotels, flights, destinations, vehicles, real estate, streaming media, apps, publications, professional services and activities each have their own field lists. You pick the catalog type when you create the catalog, and you can’t switch it later.

Feed formats: CSV, TSV, XLSX, Google Sheets or XML

FormatGood forWatch out for
CSVSpreadsheet editing; most feed pluginsBuilt in a text editor or by code? Enclose fields that contain commas or spaces in double quotes.
TSVText with lots of commasSame header-row layout as CSV
XLSXSmall, rarely changing catalogs, filled in by hand from Meta’s templateDownload the template from Commerce Manager (below)
Google SheetsSmall, rarely changing catalogsOnly the first tab is read; share it as “Anyone with the link”
XML (RSS/ATOM)Generated feedsMust start with an <?xml declaration; one field per line

Limits for every format: 100 MB for a one-time upload, 4 GB for a scheduled feed, and 5 MB per line. Meta recommends up to 1 million items per feed; split bigger catalogs into several feeds.

For a store, the feed should be a file at a URL that Meta fetches on a schedule, hourly, daily or weekly, so the catalog follows your products. A sheet or XLSX file only changes when someone edits it.

CTX Feed generates the Facebook feed as XML, CSV or TXT (tab-separated, which is Meta’s TSV format), three of the formats Meta accepts.

How to create a Facebook product feed from WooCommerce with CTX Feed

CTX Feed builds the feed from your WooCommerce products and keeps it updated at a URL Meta can fetch.

Why not keep a sheet by hand?

A spreadsheet feed works until your store changes. Then it fails in four ways:

  • Stale price and stock. For prices and availability, Meta suggests an hourly update schedule. A sheet is only as current as its last edit, so a product that sold out in WooCommerce stays in stock in your ads until someone fixes the row.
  • Re-uploads. A one-time upload changes nothing until you upload again. Even a scheduled feed only fetches what’s in the file, and Meta lists the upkeep of a data feed as “Update data file as needed”.
  • One row per variant. Every size and colour needs its own row, its own id and the shared item_group_id. A T-shirt in 4 colours and 5 sizes is 20 rows to keep in step.
  • Rejected items. One in_stock, one $24.00 or one unquoted comma gets products flagged or rows misaligned.

CTX Feed reads the same data from WooCommerce every time it rebuilds the file on your Update interval. It can write each variation as its own row, with the parent product’s ID in item_group_id, and it writes values in Meta’s format (see the table below).

Set up the feed

Here’s the short version; the full guide with screenshots has every setting.

  1. Go to CTX Feed → Manage Feeds and click Make Feed.
  2. In Feed settings, choose the Facebook Catalog / Instagram template, the Country you sell to (required; it sets currency and tax handling), a File type, and an Update interval.
CTX Feed Feed settings with the Facebook Catalog / Instagram template selected
CTX Feed Feed settings with the Facebook Catalog / Instagram template selected
  1. On the Config tab, Meta’s nine required fields are already mapped to WooCommerce data. Check two rows: condition is fixed to new, and brand is your site name, or Parent Brand if you use WooCommerce Brands.
  2. Barcodes: WooCommerce 9.2 and later has its own GTIN, UPC, EAN, or ISBN field on the product’s Inventory tab, which you can map to gtin. For MPN, turn on CTX Feed’s identifier fields under System → Settings → Product attributes → Product identifiers.
  3. Categories: build a mapping set under Data mapping → Category mapping with the Facebook taxonomy (you search Meta’s list as you type), then select it as the Value of your category row on the Config tab. Category mapping guide.
  4. Optional: on the Filters tab, Product status is free. Removing out-of-stock or no-image products, or limiting the feed to some categories, needs CTX Feed Pro.
  5. Click Save & generate. On Manage Feeds, click the Copy URL icon next to the feed’s URL and leave Auto Update on. Then add the URL to Commerce Manager.
CTX Feed Manage Feeds row with the Copy URL icon next to the feed URL
CTX Feed Manage Feeds row with the Copy URL icon next to the feed URL

What CTX Feed changes for Meta (and not for Google)

The Facebook template has its own field mapping, separate from the Google template. CTX Feed formats each value the way Meta’s spec asks:

In the feedWhat CTX Feed writes for Meta
AvailabilityMeta’s spaced values, in stock / out of stock, not Google’s in_stock.
Title / descriptionCut at Meta’s limits, 200 and 9,999 characters (Google: 150 / 5,000).
Variation descriptionsThe variation’s attributes are added to the end, e.g. “— Color: Red, Size: L”.
internal_labelMeta’s single-quoted list, ['summer','trending'].
VideoOne Video attribute, mapped once per video.
Field names (XML)Meta’s fields as g: tags (<g:id>, <g:title>, <g:link>…), like Meta’s sample. Meta-only fields such as fb_product_category have no prefix.
PriceA number, a space and the currency code, e.g. 24.00 USD, using the currency set on the feed’s price column.

All Meta attributes and the Facebook template are in the free version.

Upload your feed to Meta Commerce Manager

  1. In Commerce Manager, select your catalog, open the Catalog tab and go to Products or Data sources.
  2. Click + Add and select Data file. Leave Commerce Manager selected as the format your file follows.
  3. Choose Use a URL or Google Sheets and paste your CTX Feed URL.
  4. Name the feed and pick the default currency, used when a price has no currency code.
  5. Choose an hourly, daily or weekly schedule, then click Upload.

A standard CTX Feed URL is public, so leave the username and password empty.

Replace or update? A Replace schedule (the default) adds, updates and deletes products to match your file. An Update schedule only adds and updates; products you drop from the file stay in the catalog.

Meta’s fetch schedule vs CTX Feed’s update interval

Two clocks run here: CTX Feed rebuilds the file, and Meta fetches it.

  • CTX Feed: every 1h, 6h, 12h, 24h or 1w in the free version, or every 5, 15, 30 or 45 minutes with CTX Feed Pro.
  • Meta: hourly, daily or weekly. Meta’s advice is to fetch shortly after your file updates, e.g. a 9:15 fetch for a file that updates at 9:00.

CTX Feed’s schedule starts from the moment you switch Auto Update on. To have a 24-hour feed rebuild at 02:00, toggle Auto Update off and on at 02:00, then set Meta’s daily fetch a little later.

What a Facebook feed file looks like: CSV template and XML example

These two files show the format Meta reads. They’re for reference: a store’s real feed should come from its products, as set up above.

Facebook product feed CSV template (example)

Here’s what the CSV looks like. The two T-shirt rows are variants of one product: they share an item_group_id and each has its own id. Only the first row is on sale, and its sale_price is lower than its price.

Facebook product feed template
Facebook product feed template
id,item_group_id,title,description,availability,condition,price,sale_price,link,image_link,brand,gtin,google_product_category,color,size,gender,age_group
"TSHIRT-BLU-M","TSHIRT-01","Organic Cotton T-Shirt, Blue, M","Relaxed-fit T-shirt in organic cotton. Cap sleeves.","in stock","new","24.00 USD","19.00 USD","https://example.com/product/organic-tshirt/?attribute_color=blue&attribute_size=m","https://example.com/images/tshirt-blue.jpg","Example Brand","","Apparel & Accessories > Clothing > Shirts & Tops","Blue","M","unisex","adult"
"TSHIRT-RED-L","TSHIRT-01","Organic Cotton T-Shirt, Red, L","Relaxed-fit T-shirt in organic cotton. Cap sleeves.","out of stock","new","24.00 USD","","https://example.com/product/organic-tshirt/?attribute_color=red&attribute_size=l","https://example.com/images/tshirt-red.jpg","Example Brand","","Apparel & Accessories > Clothing > Shirts & Tops","Red","L","unisex","adult"
"MUG-001","","Stoneware Coffee Mug","Hand-glazed stoneware mug, 350 ml. Dishwasher safe.","in stock","new","16.50 USD","","https://example.com/product/stoneware-mug/","https://example.com/images/mug.jpg","Example Brand","","Home & Garden > Kitchen & Dining > Tableware > Drinkware > Mugs","","","",""

Every value is in double quotes, so commas and spaces inside a value can’t shift the columns.

Template tips:

  • availability is exactly in stock or out of stock: lowercase, with a space.
  • price and sale_price are a number, a space and the currency code; no $.
  • Leave gtin empty unless you’re sure the barcode is right.
  • google_product_category takes the category name or its ID. Use a category from Google’s current list; the paths above are examples.
  • Keep the header names exactly as Meta spells them.

Copy it to see the format. For a live store, CTX Feed builds and updates this file from WooCommerce automatically.

Facebook product feed XML example

Meta’s own sample “Products” XML file is an RSS 2.0 feed that declares Google’s namespace (xmlns:g) and wraps each product in <item>. This example follows the same structure:

<?xml version="1.0" encoding="UTF-8"?>
<rss xmlns:g="http://base.google.com/ns/1.0" version="2.0">
<channel>
<title>Example Store</title>
<link>https://example.com</link>
<description>Example Store product feed</description>
<item>
<g:id>TSHIRT-BLU-M</g:id>
<g:item_group_id>TSHIRT-01</g:item_group_id>
<g:title>Organic Cotton T-Shirt, Blue, M</g:title>
<g:description>Relaxed-fit T-shirt in organic cotton. Cap sleeves.</g:description>
<g:link>https://example.com/product/organic-tshirt/?attribute_color=blue&amp;attribute_size=m</g:link>
<g:image_link>https://example.com/images/tshirt-blue.jpg</g:image_link>
<g:brand>Example Brand</g:brand>
<g:condition>new</g:condition>
<g:availability>in stock</g:availability>
<g:price>24.00 USD</g:price>
<g:sale_price>19.00 USD</g:sale_price>
<g:google_product_category>Apparel &amp; Accessories &gt; Clothing &gt; Shirts &amp; Tops</g:google_product_category>
<g:color>Blue</g:color>
<g:size>M</g:size>
</item>
</channel>
</rss>

XML notes:

  • Start with the <?xml declaration and put one field per line. A single line over 5 MB is rejected.
  • Escape &, < and > inside values (&amp;, &lt;, &gt;), as Meta’s sample does in its category path.
  • In XML, CTX Feed writes Meta’s fields with the same g: tags as Meta’s sample (<g:id>, <g:title>, <g:link>…). Meta-only fields such as fb_product_category are written without a prefix.

Copy it to see the format. For a live store, CTX Feed builds and updates this file from WooCommerce automatically.

Facebook Marketplace bulk upload template

We couldn’t find a Marketplace bulk upload template, or a Marketplace column list, in Meta’s Business Help Center (checked October 2026). For medium to large inventories, or products that change often, Meta lists a catalog data feed as one of the routes: a spreadsheet or XML file. The CSV example above shows the layout; for a WooCommerce store, generate the feed with CTX Feed.

How to download the official template from Commerce Manager

Meta’s template is a reference for the exact column names, or a starting point for a small catalog that rarely changes.

  1. Go to Commerce Manager and select your catalog.
  2. Open the Catalog tab and go to Products or Data sources.
  3. Click + Add in the top right and select Data file.
  4. Click Download template.
  5. Pick Excel (XLSX) or CSV for the standard template. For category-specific columns, click Custom template, select your product categories, then download it as .xlsx or .csv.

You need full control of the catalog to do this. Don’t rename the header row; delete the example rows and add one product per row.

A hand-filled template works for a handful of products. For a WooCommerce store, generate the file with CTX Feed instead, so price and stock changes reach Meta without anyone editing a spreadsheet.

Common Facebook feed errors and fixes

After each upload, the feed’s overview in Data sources lists the issues, and Download issue report gives you a sample. These are the errors Meta documents, with the fix on the WooCommerce side:

Error in Commerce ManagerWhat it meansFix
Your data feed file couldn’t be accessed / Failed to connect to server / Fetching feed from server failedMeta can’t reach the file.Open the feed URL in a private window. If it doesn’t load, regenerate the feed; a security or caching plugin may also block it. Make sure robots.txt doesn’t block facebookexternalhit/1.1.
HTML format isn’t supportedThe URL returns a web page, not a feed file.Use the feed file URL from Manage Feeds, not a page on your site.
Incorrect number of columnsRows don’t line up with the header row, for example because of unquoted commas.Let CTX Feed write the CSV, or quote fields that contain commas.
Invalid valuesA field has a value Meta doesn’t support, e.g. in_stock or preorder in availability.Send only the values in the spec tables above.
Missing or invalid price or currencyPrice missing, or written as $9.99 or 24,50 EUR.9.99 USD format. Keep sale_price lower than price.
IDs can’t be duplicated / ID conflicts with group IDTwo products share an id, or an id is also used as an item_group_id.Give every variant its own id and the parent product the shared item_group_id.
Universal IDs are missing / Invalid GTINNo brand, gtin or mpn, or a GTIN in the wrong format.Map brand; add real GTINs (step 4 above) or leave gtin empty.
Invalid Google or Facebook product categoryThe category isn’t on the list.Map store categories to the channel list (step 5 above).
Field can’t be all uppercase letterse.g. a description in capitals.Fix the product text, or add a data rule in Commerce Manager.
Line or row of text exceeds size limitA row over 5,242,880 characters, sometimes from very long links.Shorten the field; in XML, put one field per line.
Out of stockNot an error: the product is hidden from ads.If it’s actually available, fix the stock status in WooCommerce and regenerate.

If a scheduled feed fails several times, Meta can pause the schedule. Resume it under the feed’s Settings → Schedules.

Products missing from the catalog altogether? See why WooCommerce products go missing from your Facebook catalog.

Facebook product feed vs Google Shopping feed

Meta catalog feedGoogle Merchant Center feed
Availability valuesin stock, out of stockin_stock, out_of_stock, preorder, backorder
Title limit200 characters150 characters
Description limit9,999 characters5,000 characters
Image minimum500 × 500 pxGoogle has announced 500 × 500 px for all product images, enforced from 31 January 2027
Categorygoogle_product_category or fb_product_category, optionalgoogle_product_category
Where it goesCommerce ManagerMerchant Center

Can Meta read your Google feed? Commerce Manager has a Google Merchant Center option for files formatted for Google. A separate Meta feed still lets you use Meta’s own limits and fields, such as fb_product_category and internal_label. In CTX Feed, the Google and Facebook templates format the same products differently (see the table above).

FAQ

What is a Facebook product feed?

A file of your products (CSV, TSV, XLSX, Google Sheets or XML) that Meta reads into a catalog in Commerce Manager, so the products can appear in your ads and shops on Facebook and Instagram.

What are the required fields in a Facebook product feed?

id, title, description, availability, condition, price, link, image_link and brand. size is also required for Shops in some categories, such as clothing and shoes.

What availability values does Facebook accept?

Only in stock and out of stock, lowercase with a space.

What fields does Meta require for direct checkout?

native_commerce (true to make a product eligible) and product_disclosures (compliance warnings). Direct checkout isn’t available to everyone yet.

What format should a Facebook product feed use?

Meta accepts five formats. For a WooCommerce store, use a generated CSV, TSV or XML file at a URL Meta fetches on a schedule; CTX Feed writes all three (pick TXT as the file type for TSV). XLSX and Google Sheets suit small catalogs that rarely change. Files can be up to 100 MB uploaded once, or 4 GB on a schedule.

How often does Facebook update the product feed?

As often as you schedule it: hourly, daily or weekly. Set your feed tool to rebuild the file just before Meta fetches it.

Can I use one feed for both Facebook and Instagram?

Yes. One catalog serves your ads and shops on both.

How do I fix “Your data feed file couldn’t be accessed”?

Open the feed URL in a private browser window. If it doesn’t load, regenerate the feed and check that no security plugin or robots.txt rule blocks Meta’s crawler, facebookexternalhit/1.1.

What is the difference between a Facebook product feed and a Google Shopping feed?

They use different values and limits. Meta accepts only in stock and out of stock and allows 200-character titles and 9,999-character descriptions; Google uses in_stock, out_of_stock, preorder and backorder, and caps titles at 150 and descriptions at 5,000 characters.

Wrap up

Get the nine required fields right, use Meta’s two availability values, keep sale_price lower than price, and let Meta fetch a URL instead of a file you upload by hand. CTX Feed does the formatting for Meta and keeps the file current. It’s free on WordPress.org; the Facebook catalog for WooCommerce page covers the full feature set.

Generate your Meta catalog feed from WooCommerce with CTX Feed (free on WordPress.org) → Get CTX Feed · Need 5-minute updates or Pro filters? See CTX Feed Pro

[CTA] Stop reading. Start fixing.
Fix your product feed with CTX Feed Pro.

Free version on WordPress.org. Every Pro licence includes a 30-day money-back guarantee.

[0] Comments
Join the discussion
Leave a comment →

Leave a comment.

[NEWSLETTER] Field Notes, monthly

One email a month.
Zero fluff.

Channel-spec changes, plugin releases, the occasional deep dive on something we broke.