Skip to main content
GlobalCSVTemplate readyOAuth

Meta Catalog product feed

Meta Catalog is the single product layer powering Facebook Shops, Instagram Shopping, Marketplace listings, and Dynamic Ads across the Meta family. One feed reaches three billion-plus monthly active users without separate uploads per surface. FeedArc generates a Meta-compliant CSV feed with the exact column layout Commerce Manager expects, validates titles against Meta's 200-character limit and images against the 500×500 minimum, and supports the `custom_label_0`–`custom_label_4` fields you need for ad-set product segmentation. The same source catalog powering your Meta feed can also feed Google Shopping (RSS 2.0 XML), Amazon (TSV flat file), and TikTok Shop — FeedArc applies channel-specific transformations at export time, so a product update propagates everywhere within one refresh cycle.

Last updated

Feed format specification

Meta's default ingestion format is a CSV (UTF-8, comma-separated, header row) with one product per line. FeedArc generates this directly — no manual conversion. Meta also accepts the same XML schema Google uses, but CSV is the recommended primary path for Commerce Manager.

id,title,description,availability,condition,price,link,image_link,brand,google_product_category,gtin,custom_label_0
SKU-2087,"Adidas Ultraboost 22 Running Shoes — Mens","Lightweight performance running shoe with Boost cushioning.","in stock","new","139.00 USD","https://example.com/shoes/ultraboost-22","https://example.com/cdn/ultraboost-22.jpg","Adidas","187","4051043891234","high-margin"
SKU-2088,"Adidas Stan Smith Classic — Womens","Iconic minimalist tennis shoe in white leather.","in stock","new","85.00 USD","https://example.com/shoes/stan-smith","https://example.com/cdn/stan-smith.jpg","Adidas","187","4051043891241","evergreen"

Required fields

  • id

    Unique product or variant identifier — stable across feed updates. Max 100 chars.

  • title

    Product name. Max 200 characters (FeedArc auto-truncates via TRUNCATE rule).

  • description

    Product description. Max 9999 characters (Meta allows ~5x more than Google).

  • availability

    One of: in stock, out of stock, available for order, discontinued.

  • condition

    One of: new, refurbished, used.

  • price

    Price with ISO 4217 currency suffix, e.g. "139.00 USD". Include VAT for EU markets.

  • link

    Product landing-page URL. Must match a verified domain in Meta Business Manager.

  • image_link

    Primary image URL. Minimum 500×500 pixels (Meta rejects smaller). Square 1:1 ratio preferred for Instagram feed display.

Limits

  • title200 characters
  • description9999 characters
  • image_linkmin 500×500 px (1:1 preferred)
  • custom_label_0–4100 chars each
  • id100 chars

What makes Meta Catalog unique

Meta Catalog is not a single surface — it is the unified product layer powering every commerce-related placement across Meta's apps. The same feed reaches buyers on five distinct experiences from a single ingestion. Five capabilities make it strategically different from a marketplace channel:

Five surfaces, one feed

A single Meta Catalog powers Facebook Shops, Instagram Shopping (in-feed + Reels + Stories + Explore tabs), Facebook Marketplace listings, WhatsApp catalog links, and Dynamic Ads retargeting. One feed update propagates everywhere — no per-surface upload.

Cross-platform ad-set segmentation

`custom_label_0`–`custom_label_4` let you slice your catalog into ad sets directly: by margin tier, seasonality, stock urgency, supplier, or any business dimension. FeedArc lets you map these from any product attribute or computed rule (e.g. `custom_label_0 = "high-margin"` when `cost_of_goods_sold / price < 0.4`).

Dynamic Ads + Advantage+ Catalog

Meta's Advantage+ Catalog campaigns consume the same product feed as Shopping ads, applying machine-learning targeting across all five surfaces. No separate creative production — Meta generates carousel + single-image + video formats from your feed images automatically.

Conversions API integration

Catalog + Conversions API form the pair Meta needs for cookieless attribution after iOS 14.5 ATT. The catalog provides the product universe; CAPI sends server-side events (`AddToCart`, `Purchase`) that match against the catalog `id`. FeedArc keeps the `id` stable across feed regenerations so CAPI matching never breaks.

WhatsApp Business catalog inheritance

A Meta Catalog connected to a WhatsApp Business account exposes products inside chat conversations — customers can browse and add to cart without leaving WhatsApp. Same feed, no separate configuration.

FeedArc dashboard walkthrough

FeedArc connects to Meta via the Commerce API — no manual CSV uploads to Commerce Manager. Once authorised, your feed regenerates on your plan's schedule and Meta pulls it directly from the FeedArc-hosted URL.

1

Authorise Meta Commerce

In FeedArc Dashboard → Channels, click Connect on the Meta Catalog tile. You will be redirected to Meta's OAuth consent screen. FeedArc requests `catalog_management` + `business_management` scopes only — no access to user profiles, messages, or Page admin permissions.

2

Select Business Manager + Catalog

Choose which Business Manager account and which Catalog (you may have several per business — one per brand, one per language, etc.) receives the feed. FeedArc lists every catalog the connected user has admin access to. New catalogs can be created in Commerce Manager and refreshed in FeedArc.

3

Map products and apply rules

Choose which products to include (all, by category, by collection, or by custom filter). FeedArc applies the channel's pre-configured rules: title truncation to 200 chars, filter-out products with empty `image_link`, optional `condition` and `brand` enforcement. You can also map `custom_label_0` for ad-set segmentation (e.g. "high-margin", "seasonal", "clearance").

4

Preview and submit

FeedArc shows a live CSV preview with row-level validation: missing required fields, title overruns, broken image URLs, invalid availability values. Once approved, copy the FeedArc-hosted feed URL (`https://feedarc.com/api/feeds/{id}`) into Commerce Manager → Catalogs → Data Sources → Add data source → Scheduled feed.

End-to-end integration

End-to-end setup from a fresh Meta account to your first live catalog. Typical timeline: 30–60 minutes for steps 1–6, then 1–2 days for Meta's initial review and Commerce eligibility check (faster than Google Merchant Center in most regions).

1

Create or connect a Business Manager

Sign in at business.facebook.com with a personal Facebook account that will become the Business admin. Confirm a business name, primary country, and email. Without a Business Manager, no commerce features are available — the personal Page route was deprecated in 2023.

2

Verify your domain

In Business Manager → Brand Safety → Domains, add your store domain and verify via DNS TXT, HTML meta tag, or HTML file upload. Domain verification is required before any catalog with `link` fields pointing at that domain can pass Commerce review.

3

Create a Catalog in Commerce Manager

Go to business.facebook.com/commerce/catalogs and click Create Catalog. Choose category (typically `E-commerce`), pick the Business Manager, and name the catalog. Newly-created catalogs have zero products until a data source is connected.

4

Connect Meta Commerce in FeedArc

In your FeedArc dashboard, open Channels → Meta Catalog and click Connect. Authorise the `catalog_management` and `business_management` scopes. Select the target catalog from the dropdown — FeedArc only lists catalogs you have admin access to.

5

Configure feed source + apply rules

Choose your product source (Shopify, WooCommerce, Magento, CSV upload, or any FeedArc connector). Set currency, country, language. The META_CATALOG preset applies TRUNCATE title at 200 chars + FILTER out empty `image_link` automatically. Add custom_label_0 mapping if you plan to run segmented ad sets.

6

Submit feed URL in Commerce Manager

In Commerce Manager → Catalog → Data Sources → Add data source → Scheduled feed, paste the FeedArc-hosted URL (`https://feedarc.com/api/feeds/{your-feed-id}`). Choose a fetch schedule — start with daily, then increase frequency once your catalog stabilises. First fetch typically completes within 15 minutes.

7

Set up product sets + ad campaigns

After Commerce Manager confirms catalog ingestion (Products tab shows item count), create product sets in Ads Manager using `custom_label_0` values to segment your ad campaigns. Connect the catalog to a Facebook Shop or Instagram Shopping account to make products purchasable directly inside the apps.

Common errors and how FeedArc prevents them

The six most common Meta Catalog rejections — and how to prevent them. The first five correspond to real validation routines in our source code (see lib/feed-generators/validation.ts); the sixth is a Commerce Manager row-level rejection you avoid by construction. Passing ingestion is only step one: product feed optimization determines how often Advantage+ and Dynamic Ads actually surface your products once they are in the catalog.

Image too small (under 500×500 pixels)

Cause: Meta enforces a hard 500×500 minimum for primary catalog images. Many e-commerce stores serve thumbnails (200–400 px) on category pages and reuse them in the feed — Meta silently rejects every product with sub-spec images.

FeedArc solution: FeedArc batch-checks every `image_link` URL with HEAD requests during validation and surfaces dimension warnings before export. Use the AI image-upgrade rule to redirect `image_link` to the high-resolution variant your CDN produces.

Title exceeds 200 characters

Cause: Stores with SEO-stuffed titles (e.g. "Adidas Ultraboost 22 Mens Running Shoe Lightweight Cushioned Boost Performance Athletic Trainer …") routinely exceed 200 chars. Meta truncates these mid-word in the UI, hurting CTR.

FeedArc solution: FeedArc applies a TRUNCATE rule to title at 200 chars by default (configured in the META_CATALOG preset). Use AI Optimization to rewrite titles to a target length instead of truncating mid-word — Meta favours readable, brand-first titles for ad ranking.

Missing brand field

Cause: While not strictly required by Meta's spec, Commerce Manager flags products without `brand` for review and excludes them from several ad placements (Shopping ads, Brand-suitability targeting). Many imported catalogues lack a populated brand column.

FeedArc solution: FeedArc warns on missing `brand` per the META_CATALOG recommended field list. Use a SET rule with your store brand as the default, or use AI Categorization to infer brand from title.

Image URL returns 4xx, redirects, or requires authentication

Cause: Meta fetches every `image_link` during feed processing. CDN hot-link protection, signed URLs that expire, CORS-restricted images, or HTTP→HTTPS redirects all cause silent product suppression.

FeedArc solution: FeedArc validates every image URL with a HEAD request, follows up to one redirect, and warns on 4xx/5xx + on signed URLs that look short-lived. Pair with an image-CDN rewrite rule if your store uses a separate CDN domain.

Invalid `availability` value

Cause: Meta accepts only four values: `in stock`, `out of stock`, `available for order`, `discontinued`. Common imports use Shopify's `active`/`draft` or WooCommerce's `instock`/`outofstock` — these get rejected at parse time.

FeedArc solution: FeedArc auto-normalises availability values via a MAP rule applied to every Meta feed by default. Your store can emit any string format; FeedArc rewrites to Meta's accepted vocabulary before export.

Invalid `applink` field blocks the entire row (row-level validation)

Cause: Meta's row-level validation rejects the whole product row when any single field is malformed — `applink` is the classic trigger. The `applink` deep-link columns (`applink.ios_url`, `applink.android_url`, `applink.android_package`, `applink.ipad_url`, …) are optional, but once present they must be valid: Android requires `applink.android_package`, every other platform requires a valid URL. A stale app-store ID or an empty `applink.ios_url` column inherited from an old feed template invalidates every row that carries it — Commerce Manager reports "invalid field" and the products silently drop from the catalog.

FeedArc solution: Feeds generated by FeedArc contain no `applink` columns unless you explicitly map them, so this rejection cannot originate from a FeedArc export. If you are migrating from a feed that carried `applink` data, dropping the columns is safe: per Meta's catalog reference, deep links are picked up automatically from App Links metadata on your product pages, and feed-level `applink` values only take precedence when you actively need to override them. Keep deep links in your page markup, keep the feed lean.

Country and regulatory specifics

Meta enforces different policies depending on the country your catalog targets. The following requirements are documented in Meta's Commerce Eligibility Requirements and apply at the product level.

European Union (RO, DE, FR, IT, ES, NL, PL, CZ, SE, BE, AT, etc.)

Price must include VAT — `price` is the final consumer price the buyer pays. Digital Services Act compliance requires a verified business address and trader status disclosure in Commerce Manager before catalogs go live for EU shoppers.

United States

Price excludes sales tax — tax is calculated at checkout per state nexus. California Prop 65 chemical warnings must be surfaced via a custom field or product page link for affected categories.

United Kingdom (post-Brexit)

GB Catalog is separate from EU — currency in GBP, VAT in price, EORI number on customs declarations. UK Online Safety Act applies to user-facing product descriptions.

GTIN-recommended markets

While Meta does not strictly enforce GTIN like Google does, branded products without `gtin` are excluded from several Shopping ad inventory pools. FeedArc warns on missing `gtin` when `brand` is populated.

Restricted product categories

Alcohol, tobacco, weapons, healthcare, financial services, and adult products face stricter review — many are categorically banned from Marketplace + Instagram Shopping even if technically present in the catalog. Verify product eligibility in Meta's Commerce Policies before submitting.

Age-gated and regulated SKUs

For markets where specific SKUs are restricted, use a FILTER rule to exclude them from country-specific feeds. Meta does not currently support a per-product geographic exclusion field analogous to Google's `shopping_ads_excluded_country`.

Frequently asked questions

Start exporting to Meta Catalog

Import your products, optimize with AI, and generate a validated CSV feed — free to start.

Create free account