← All guides

Facebook & Instagram catalog: why products get rejected (and what Meta only pretends to require)

15 September 2026 · 7 min read

Meta's Commerce Manager is quieter about problems than Google Merchant Center. An item can sit in your catalog as Eligible while your ads show a blank tile, and a whole upload can “succeed” while half the fields landed in the wrong place. Below are the things that actually take products out of Facebook and Instagram ads, roughly in the order they happen to people.

1. The file was imported with the wrong format selected

When you add a data source, Commerce Manager asks “Which platform is your file formatted for?” and offers two answers: Commerce Manager and Google Merchant Center. The default is the first. If your feed is a Google Shopping XML or CSV — and most feeds exported from stores are — you have to pick the second, or the columns are read under the wrong names and products come in with missing prices, links or images. This is the single most common cause of “my feed looks fine but the catalog is empty”. Fix: delete the data source and add it again with the right format; there is no way to change it afterwards.

2. Availability written in words Meta doesn't know

Meta accepts a short list: in stock, out of stock, preorder, available for order, discontinued. Anything else — a translated word, yes, 1, a typo — is read as unavailable, and the item silently stops serving while your store still shows it in stock. This is the hardest problem to notice from the inside, because nothing is marked as an error. Fix: map your store's stock status to exactly those values, and check the catalog's Availability column after the next import.

3. Images that ads can't use

Meta wants at least 500 × 500 pixels for catalog ads and strongly prefers a square crop; smaller images are accepted into the catalog but rejected from ad placements, which is why a product can be eligible and still never appear. Image URLs must be public and direct: a link that redirects, needs a cookie, or points to a page rather than the file itself fails on fetch. Text overlays and watermarks are an ads-policy problem on top. Fix: give every product a clean square photo of 1000 × 1000 or larger, and make sure the feed carries the image's own URL.

4. Prices Meta can't reconcile

The price field needs a number and an ISO currency, 49.00 EUR, and a promotion goes in sale_price with its dates in sale_price_effective_date. If you run the Meta Pixel, Meta also compares the catalog price with what the pixel reports on the product page; a feed that drifts behind a price change earns a price-mismatch warning and, repeated, lower delivery. Fix: rebuild the feed whenever prices change, and never let a feed rule round or rewrite a price the page doesn't show.

5. Variants without a group

Every size and colour is its own item with its own id, and they only behave as one product when they share an item_group_id. Without it, Meta sees twelve near-identical items competing with each other, and dynamic ads pick one at random. With it, the ad shows the product and lets the shopper pick the variant. Fix: send the parent product's identifier as item_group_id on every variant row.

6. IDs that change between uploads

Meta identifies an item by its id, nothing else. If your export regenerates IDs — a new SKU scheme, a plugin update, a switch from product ID to variant ID — every product becomes a new item and the old ones drop out, taking their ad history and pixel matching with them. Fix: pick a stable identifier once (the variant ID your pixel already sends works best) and never change it.

7. The catalog is right and the ad still isn't

Rejections that don't come from the feed at all: the product page's domain isn't verified in Business Manager, the landing page redirects to the homepage, the title is in ALL CAPS or carries “FREE SHIPPING!!”, or the product falls under a restricted category. These show up as ad or item policy issues, not as feed errors, and the fix is in Business Manager or on the page.

What Meta enforces, and what it only lists

One honest note. Meta's specification lists description and image_link as required, but in practice a product missing either is imported and marked eligible — we have watched a 24-product feed with two imageless items come through with zero errors. Required in the spec doesn't mean rejected. It does mean the ad shows an empty tile or a title with nothing under it, which costs you the click just the same. Treat those fields as required anyway; just don't expect Commerce Manager to warn you.

How FeedRobin handles it

FeedRobin's Meta feed is the Google format Commerce Manager expects when you choose “Google Merchant Center” — verified in a real catalog, 24 of 24 items imported with zero errors and variants grouped correctly. Availability is written in the exact vocabulary each channel documents, every variant carries its item_group_id, IDs are the ones your store already uses, and the quality check flags missing descriptions and images before Meta ever sees them. The catalog re-imports hourly, so a price change on your store reaches the ad within the hour.

Read next

Product image errors in Google Shopping: too small, promotional overlay, missing imageThe three image disapprovals that block most catalogs, what Google actually checks, and how to fix each one in your store.
5 min
Price mismatch in Google Merchant Center: why it happens and how to fix it for goodGoogle suspends products when the feed price and the page price disagree. The usual causes — currency, sale prices, stale feeds — and the fixes.
7 min
What is a product feed — and why every store advertising online needs oneThe file behind every Google Shopping ad, Instagram product tag and price-comparator listing: what a product feed contains, who reads it, and what happens when it's wrong.
5 min
Not sure what's wrong with your feed?Paste your feed URL and FeedRobin checks every product for missing barcodes, images, descriptions and more — free, no account needed.
Check my feed — it's free