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
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"idUnique product or variant identifier — stable across feed updates. Max 100 chars.
titleProduct name. Max 200 characters (FeedArc auto-truncates via TRUNCATE rule).
descriptionProduct description. Max 9999 characters (Meta allows ~5x more than Google).
availabilityOne of: in stock, out of stock, available for order, discontinued.
conditionOne of: new, refurbished, used.
pricePrice with ISO 4217 currency suffix, e.g. "139.00 USD". Include VAT for EU markets.
linkProduct landing-page URL. Must match a verified domain in Meta Business Manager.
image_linkPrimary image URL. Minimum 500×500 pixels (Meta rejects smaller). Square 1:1 ratio preferred for Instagram feed display.
title200 charactersdescription9999 charactersimage_linkmin 500×500 px (1:1 preferred)custom_label_0–4100 chars eachid100 charsMeta 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:
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.
`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`).
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.
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.
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 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.
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.
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.
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").
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 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).
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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`.
How AI is reshaping product feed management — from AI-generated titles in 7 languages to vision-based image quality, taxonomy mapping, GTIN validation, and POAS signals.
How to populate Google Shopping custom labels 0-4 from GA4 performance data — hero, bestseller and dead-stock segments that let you bid on what actually converts.
How to turn a valid product feed into one that wins clicks and sales: title structure, complete attributes, custom labels, and error fixes across every channel.
Meta rejects an entire feed row when one field is invalid — applink is the classic trigger. Diagnose Commerce Manager row-level validation and recover rejected products.
Import your products, optimize with AI, and generate a validated CSV feed — free to start.
Create free account