Meta Product Catalog Feed Specification
Meta (Facebook and Instagram) uses product catalogs to power dynamic ads, Instagram Shopping, Facebook Shops, and Marketplace listings. Catalogs are managed through Commerce Manager and accept product data via CSV/TSV feed files, the Catalog Batch API, or pixel/SDK events.
Required Fields
All products must include these fields. Products missing required fields are rejected from the catalog.
| Field | Format | Description | Example |
|---|---|---|---|
| id | String, max 100 chars | Unique product identifier. Maps to content_id in the Meta Pixel. Must remain stable across feed updates. | product_1234 |
| title | String, max 200 chars | Product name. Displayed in ads and shop listings. Include brand and key attributes for discoverability. | Nike Air Max 90 - Black/White |
| description | String, max 9999 chars | Product description. Plain text only, no HTML. Used in product detail pages and ad copy generation. | Classic Air Max 90 with visible Air cushioning unit... |
| availability | Enum: in stock, out of stock, available for order | Stock status. Note: uses spaces, not underscores (differs from Google). Must match landing page. | in stock |
| condition | Enum: new, refurbished, used | Product condition. Required for all catalog items. | new |
| price | Number + ISO 4217 currency code | Product price with currency. Format: "129.99 USD". Must match landing page price. | 129.99 USD |
| link | URL | Product page URL. Must link to a page where the product can be purchased. Verified domain required. | https://example.com/product/1234 |
| image_link | URL, min 500x500px recommended | Main product image. Square images (1:1) recommended. No text overlays, watermarks, or borders. | https://example.com/images/product-1234.jpg |
| brand | String, max 100 chars | Brand name. Required for branded products. Use store name for private-label items. | Nike |
content_id Mapping
The id field in the catalog feed must match the content_id parameter sent by the Meta Pixel or Conversions API. This mapping enables dynamic retargeting -- showing users the specific products they viewed or added to cart.
| Event Source | Parameter | Must Match |
|---|---|---|
| Meta Pixel (ViewContent, AddToCart, Purchase) | content_ids | Catalog feed id field |
| Conversions API | content_ids | Catalog feed id field |
| Facebook SDK (Mobile) | fb_content_id | Catalog feed id field |
Field Comparison: Meta vs Google Merchant
| Attribute | Google Merchant | Meta Catalog | Difference |
|---|---|---|---|
| Availability values | in_stock, out_of_stock | in stock, out of stock | Spaces vs underscores |
| Title length | 150 chars | 200 chars | Meta allows longer titles |
| Description length | 5,000 chars | 9,999 chars | Meta allows longer descriptions |
| ID length | 50 chars | 100 chars | Meta allows longer IDs |
| Image minimum size | 100x100 px | 500x500 px recommended | Meta needs larger images |
| Category field | google_product_category | google_product_category (accepted) or fb_product_category | Meta accepts Google taxonomy |
Catalog Batch API
The Catalog Batch API allows programmatic product updates without uploading a full feed file. Send individual product creates, updates, or deletes via HTTP POST requests.
POST /{catalog_id}/items_batch
{
"requests": [
{
"method": "UPDATE",
"retailer_id": "product_1234",
"data": {
"availability": "in stock",
"price": "129.99 USD",
"sale_price": "99.99 USD"
}
}
]
}Maximum 5,000 items per batch request. Rate limit: 100 requests per hour per catalog. Use the batch handle returned in the response to check processing status.