Meta's catalog powers Advantage+ catalog ads, Instagram shopping, collection ads and the shop surfaces. It reads a file the same way Google does: you publish a feed at a URL, register it in Commerce Manager as a data source, and choose how often Meta fetches it. The mechanics are familiar; the details differ enough to cost you products if you assume a Google feed will do.
What Meta needs from each item
The fields that must be present for a product to be usable:
| Field | Notes |
|---|---|
id |
Unique and stable. Your SKU is the right choice; the variant's SKU for variants. |
title |
The product name a shopper would recognise. |
description |
Plain text describing the product. Meta allows a long description, but the first sentence does the work. |
availability |
Meta's own wording — see below. |
condition |
new, refurbished or used. Required, unlike Google where it is conditional. |
price |
Number plus currency, e.g. 89.88 EUR. |
link |
The product page, matching the price and availability in the feed. |
image_link |
The main image; the clean product photo for shops, a designed image is fine in an ads-only catalog. |
brand |
Required for most categories. |
Recommended, and worth the effort: item_group_id, sale_price, additional_image_link, gtin, color, size,
google_product_category. Yes — Meta uses Google's product taxonomy for categorisation, which is convenient when
you have already mapped it.
Where Meta differs from Google
Availability wording. Meta expects values written with spaces — in stock, out of stock, preorder,
available for order, discontinued — where Google's specification uses in_stock and out_of_stock. Feeds that
were built for Google and re-used for Meta often import with every product marked unavailable for exactly this
reason.
Condition is required. Most shops sell new products, so this is a constant: set condition: new for
everything and override it for the categories where it differs. Meta additionally accepts more granular used
conditions for some catalogs.
Field names for variants. Colour and size belong in color and size, not only baked into the title. Meta
uses them to build variant pickers and to avoid showing four near-identical items in one carousel.
Longer titles are tolerated but not rewarded. Meta allows a longer title than Google. That is not an invitation to stuff it; the ad crops it.
Variants, done properly
Send each buyable combination as its own item, with its own id, price and availability, and give them all the
same item_group_id:
id,item_group_id,title,color,size,availability,price,link,image_link
SKU-1042,TRAIL-GTX,"Northwind Trail Runner GTX",Slate,42,in stock,89.88 EUR,https://…/slate-42,https://…/slate.jpg
SKU-1043,TRAIL-GTX,"Northwind Trail Runner GTX",Slate,43,in stock,89.88 EUR,https://…/slate-43,https://…/slate.jpg
SKU-1051,TRAIL-GTX,"Northwind Trail Runner GTX",Moss,42,out of stock,89.88 EUR,https://…/moss-42,https://…/moss.jpg
Two details that matter more than they look:
- The link should open the right variant. If every size links to the same generic product page, shoppers land on a page that does not match the ad, and conversion suffers even when nothing is technically wrong.
- The image should show the right colour. Sending the same photo for every colour makes the carousel look broken.
Choosing what belongs in the catalog
Not everything you sell should be in the catalog. Products with no image, products below a margin you are willing to advertise, spare parts, gift cards, bundles that cannot be fulfilled from stock — all of these are better filtered out than uploaded and then paused product by product.
A useful rule of thumb: the catalog should contain exactly the products you would be happy for Advantage+ to choose on your behalf. Meta's automation picks from what you supply; filtering the file is the most direct control you have.
Keeping it in sync
Set the fetch schedule in Commerce Manager, then make sure your side rebuilds at least as often. A catalog fetched hourly from a file that is rebuilt once a day is a catalog with hourly-fresh mistakes.
Beyond the schedule, three habits keep Meta catalogs healthy:
- Rebuild after stock and price changes, not only on the clock.
- Validate before publishing. Missing
condition, Google-style availability values, and prices without a currency are the three most common reasons items are dropped on import. - Watch the item count. The number of items Meta accepted should track the number your file contained. A sudden divergence is the earliest signal that something in the shop's export changed.
A practical set-up
If you are already publishing to Google, the shortest path to a working Meta catalog is:
- Build a second feed from the same catalog, using Meta's field names.
- Map availability to Meta's wording, set
condition, and make surebrandis filled. - Keep
item_group_id,colorandsizepopulated for variants. - Filter out anything you do not want Advantage+ to advertise.
- Publish it at its own URL and register it in Commerce Manager with an hourly or daily fetch.
That is all the file needs. Everything beyond it — labels for campaign structure, curated sets, seasonal exclusions — is built on the same catalog, and is easier to change once the data lives in one place instead of in a spreadsheet per channel.
Meta's own reference: the product data specification in the Meta Business Help Center lists every accepted field and value.
Frequently asked questions
Can I use my Google Shopping feed for Meta?
Often it will import, because the field names overlap, but the two accept different values for availability and condition and require different fields. Generating a Meta file from the same catalog costs nothing extra and avoids silently dropped products.
What image size does Meta want?
Square images of at least 500 × 500 pixels work everywhere, and 1024 × 1024 or larger is better for collection and carousel placements. A catalog that also feeds a Facebook or Instagram shop should carry the clean product photo; designed images with a price or discount belong in a separate catalog used only for ads.
How do I show sale prices on Meta?
Keep the regular price in price and put the discounted price in sale_price, with a sale window if the offer is time-limited. Replacing price with the discounted value loses the strike-through and can trigger price mismatch checks against your landing page.
How often does Meta fetch the feed?
You choose the schedule when you add the data source — hourly, daily or weekly. Pick a rebuild interval at least as often as the fetch, otherwise the catalog keeps re-reading the same file.
Publish this feed with FeedManager
Connect your store, shape the data with rules and let each channel fetch a valid file — the Free plan covers 500 products with no credit card.
Private beta — accounts by invitation.