Ducted

Meta Product Catalog
feeds.

Facebook and Instagram catalogs.

Meta reads one product catalog for everything commerce: catalog ads, shops on Facebook and Instagram, product tagging. The catalog feed decides what can be advertised and what can be tagged, and Commerce Manager rejects quietly: a record that fails simply never appears.

Meta's rules are stricter than Google's in two places: brand is required on every product, and availability takes only in stock or out of stock. Ids are case-sensitive, so abc123 and ABC123 are two different products to Meta.

What the feed needs

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

63 fields: 9 required, 3 recommended, 51 optional. 6 fields change level with the market, the product or how the record is sent.

FieldLevelAccepted values / example
idrequired12345
titlerequiredBlue Cotton T-Shirt
descriptionrequired
availabilityrequiredin stock · out of stock
conditionrequirednew · refurbished · used
pricerequired9.99 USD
linkrequired
image_linkrequired
brandrequired
sizeoptional
recommended for clothing and shoes sold through Shops checkout in the US
google_product_categoryrecommended
mpnrecommended
recommended for products without a GTIN
MPN-12345
gtinrecommended4006381333931
origin_countryoptional
required for selling with Shops or on WhatsApp in India
US
importer_nameoptional
recommended for Indian sellers (Shops or WhatsApp) whose products are not made in India
Jasper's Market Inc.
importer_addressoptional
recommended for Indian sellers (Shops or WhatsApp) whose products are not made in India
{ street1: "1 Hacker Way", street2: "Building 18", city: "Menlo Park", region: "CA", postal_code: "94025", country: "US" }
manufacturer_infooptional
recommended for Shops sellers in India
The Manufacturer Co. - 1 Hacker Way, Menlo Park, CA 94025 USA

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

Also supported, always optional (46): quantity_to_sell_on_facebook, expiration_date, sale_price, sale_price_effective_date, item_group_id, status, color, gender, age_group, material, pattern, additional_image_link, product_type, internal_label, custom_label_0, custom_label_1, custom_label_2, custom_label_3, custom_label_4, custom_number_0, custom_number_1, custom_number_2, custom_number_3, custom_number_4, rich_text_description, fb_product_category, shipping, shipping_weight, vendor_id, additional_variant_attribute, unit_price, mobile_link, applink.ios_url, applink.ios_app_store_id, applink.ios_app_name, applink.android_url, applink.android_package, applink.android_app_name, applink.windows_phone_url, applink.windows_phone_app_id, applink.windows_phone_app_name, applink.ipad_url, applink.ipad_app_store_id, applink.ipad_app_name, disabled_capabilities, wa_compliance_category

Where Meta catalog feeds get rejected

Missing brand

brand is required on every product, with no identifier_exists exemption. A feed built for Google that leaves it empty for unbranded goods fails those records on Meta.

Availability outside in stock / out of stock

Meta takes exactly two values. preorder, backorder, or the underscored in_stock from a Google feed, all reject.

Description too short, title too long

Meta requires descriptions of 30 to 9,999 characters; a shorter one is flagged. Titles over 65 characters are not rejected but get truncated in the ad, so the health check recommends shortening them.

Condition outside the accepted list

new, refurbished and used are the accepted values. "Pre-owned", "like new" or an empty cell rejects the record, because condition is required.

Catalog IDs that do not match the pixel

Not a feed rejection but the most expensive miss: the catalog uploads cleanly and retargeting silently never fires.

Validate your Meta catalog 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 ShoppingTikTok CatalogPinterestMicrosoft ShoppingSnapchatRedditX ShoppingCriteoChatGPT Ads

One catalog for Facebook and Instagram.

Connect a source and serve Meta from the same project as every other channel, or check your current catalog feed free.

Create free accountCheck your Meta feed