A catalog with a performance signal on every product.
Meta reads every catalog ad from your feed. Feedance sends a complete, valid catalog plus the signals Meta does not have on its own.
Meta AdsChannel · Facebook and Instagram catalogsFeedance builds your Commerce Manager catalog feed and adds product-level labels for score, 4T segment, price position and broken sizes, so Advantage+ catalog ads and dynamic ads can focus on what sells.
Meta reads every catalog ad from your feed. Feedance sends a complete, valid catalog plus the signals Meta does not have on its own.
Meta Ads, in the context of e-commerce, runs on top of Commerce Manager — Meta's catalog and shop-management tool for Facebook and Instagram. Instead of designing an ad creative for every product one at a time, you upload a product catalog feed once, and Meta pulls item data (title, price, image, availability) directly from it to build dynamic ads, Advantage+ catalog ads, and shoppable posts and tags automatically. The catalog is also the product database behind Facebook and Instagram Shops, so the same feed that powers your ads can power on-platform storefronts and checkout.
Connecting a feed unlocks catalog-based ad formats that a single static ad cannot replicate at scale: dynamic ads that automatically show a shopper the exact products they viewed or added to cart, Advantage+ catalog campaigns that let Meta's delivery system pick the best-performing items from your whole inventory, and shoppable tags on Instagram and Facebook posts. Because every one of these formats reads live from the catalog, feed accuracy has a direct line to ad performance — a stale price or an out-of-stock item still marked "in stock" gets served to a shopper who then bounces, and repeated mismatches between your feed and your landing pages is a documented cause of items being flagged or disapproved in Commerce Manager.
Dynamic ads work by connecting two data sources: your product catalog (which supplies images, titles, prices, and stock status) and the Meta Pixel or Conversions API (which reports what a visitor did on your site — viewed a product, added it to cart, started checkout). The link between the two is the id field: Meta matches the content_id reported by the Pixel/CAPI event to the id of the corresponding item in your catalog. If these values don't match exactly, Meta cannot connect a shopper's on-site behavior back to a specific product, and dynamic retargeting for that item simply won't fire — which is why the id field should be a stable identifier (Meta recommends using your own SKU) that never changes between feed updates.
Commerce Manager accepts a product feed in CSV, TSV, RSS XML, ATOM XML, or a Google Sheets link; for programmatic updates, Meta also offers the Catalog Batch API and Direct Upload API. You can add a feed to Commerce Manager three ways: paste a feed URL for Meta to fetch on a schedule, upload a file manually from your computer, or link a Google Sheet that Meta re-fetches at scheduled times. CSV and XML feeds must be UTF-8 encoded, and all field names (plus certain supported values) must be in US English regardless of your store's market. If you use XML, it should follow the RSS 2.0 format with the Google product namespace declared as xmlns:g="http://base.google.com/ns/1.0", and special characters such as &, <, and > must be entity-encoded (&, <, >) since they aren't otherwise valid inside XML tag content.
The table below uses Meta's own catalog field names exactly as documented, so they map one-to-one onto the columns or XML tags Commerce Manager expects. For ecommerce items, at least one of brand, gtin, or mpn must be present in addition to the fields marked required below — Meta treats a missing product identifier as its own error class, separate from a missing required field.
| Field | Required | Format | Example | Notes |
|---|---|---|---|---|
id | Yes | string, max 100 chars | 404718SKU | Unique content ID per item; use your SKU. Must match the Pixel/CAPI content_id for dynamic ads to work |
title | Yes | string, max 200 chars (65 recommended) | Women's Floral Midi Dress | Specific, relevant product name |
description | Yes | plain text, max 9,999 chars | 100% cotton midi dress with floral print... | No HTML and no all-caps text |
availability | Yes | enum | in stock | Only in stock or out of stock are supported values |
condition | Yes | enum | new | Supported values: new, refurbished, used |
price | Yes | number + space + ISO 4217 currency code | 29.99 USD | Use a period for decimals; must match the price shown on your landing page |
link | Yes | URL | https://example.com/product/404718 | Must begin with http:// or https:// and point to that exact product's page |
image_link | Yes | URL, JPEG or PNG | https://example.com/images/404718.jpg | Minimum 500x500 pixels, up to 8 MB |
brand | Conditional | string, max 100 chars | Acme | Required unless gtin or mpn is provided instead |
gtin | Conditional | 8-14 digit UPC/EAN/JAN/ISBN/ITF-14, no dashes or spaces | 0012345678905 | Required unless brand or mpn is provided instead |
price in the required "number + ISO 4217 code" format (e.g. 29.99 USD), your stock flag becomes the in stock/out of stock enum availability expects, and your category values get translated into the Google or Facebook product category taxonomy Meta requires for onsite checkout eligibility.xmlns:g namespace and entity-encoded special characters, or CSV/TSV — so you don't have to hand-encode ampersands or manage the Google product namespace yourself.Commerce Manager lets you schedule a feed URL to be re-fetched hourly, daily, or weekly, and scheduled feeds cannot run more often than once per hour — for faster updates you need the Catalog Batch API or Direct Upload API instead of a scheduled URL fetch. How often you should actually update depends on how fast your inventory and pricing move: a daily fetch is usually enough for slow-moving catalogs, while stores with frequent price changes, flash sales, or fast-turning stock benefit from hourly updates so that price and availability shown in ads stay aligned with what's actually on the landing page — a persistent mismatch between feed data and the live page is a documented cause of items being flagged as showing incorrect or outdated information.
| Error | Likely cause | Fix |
|---|---|---|
| Missing required field | A required attribute like price, image_link, or availability is empty or absent for one or more items | Check every required field is populated for every item, not just a sample, before re-uploading |
| Missing product identifier | None of brand, gtin, or mpn is present for an ecommerce item | Add at least one of the three identifier fields to every product |
| Duplicate item | The same content ID (id) appears in more than one data feed feeding the same catalog | Make sure each id is unique across all data sources attached to that catalog |
| Item not approved / disapproved | The item is missing required information, or it violates Meta's advertising or commerce policies | Review the specific reason in the catalog's Issues tab, correct the feed data, and request a review if you believe the disapproval is incorrect |
| Incorrect or outdated product information in ads or Shop | Meta's crawler compares your landing page to your feed data, and the feed (price, title, or availability) is stale relative to the live page | Increase your feed's fetch frequency so price/availability changes on your site are reflected before the next crawl |
| Landing page unreachable | The link URL returns an error, redirects away from the product, or is blocked from crawling (e.g. by robots.txt) | Confirm each product's link loads directly to that product and is not blocked to crawlers |
These are grounded directly in Meta's documented field behavior rather than general marketing advice:
id stable and identical to the content_id your Meta Pixel or Conversions API sends — this is what lets dynamic retargeting connect a site visit to the right product.google_product_category or fb_product_category as specifically as possible; a category is required for onsite checkout eligibility and helps Meta's delivery system match the item to the right audience.brand, gtin, or mpn for every item — this is a hard identifier requirement for ecommerce catalogs, not just a best practice.price and availability to your live landing page on every update; Meta's crawler checks for this and stale data is a documented trigger for flagged items.item_group_id to group size/color variants of the same product so Meta displays them as a single item with variant selection rather than as duplicate, competing listings.additional_image_link (up to 20 images) rather than relying on a single hero shot for image_link.Does Meta Ads accept the same feed formats as Google Shopping?
Largely yes — Meta accepts CSV, TSV, RSS XML, and ATOM XML, the same broad format families most Google Merchant feeds use, plus a Google Sheets link option that Google does not offer.
What happens if my Pixel's content_id doesn't match my feed's id?
Dynamic ads and retargeting for that item will not work, because Meta links on-site behavior to catalog items strictly through matching content_id and id values.
Do I need both brand and GTIN?
No — Meta requires at least one of brand, gtin, or mpn per ecommerce item, not all three.
How fast can I update prices or stock?
Scheduled feed fetches can run as often as hourly (the fastest scheduled interval Commerce Manager supports); for near-real-time changes you'd need the Catalog Batch or Direct Upload API instead of a scheduled URL fetch.
Why is Meta showing an old price in my ad?
Meta's crawler periodically compares your feed data to your live landing page; if your feed hasn't been re-fetched since your price changed, the ad and Shop listing will keep showing the outdated value until the next fetch.
Can I use one feed for both Facebook and Instagram?
Yes — a single catalog and feed powers both Facebook and Instagram Shops, tags, and dynamic ads; there's no separate Instagram-specific feed format.
What image size does Meta require?
The image_link image must be JPEG or PNG, at least 500x500 pixels, and no larger than 8 MB.
Meta Ads is the advertising system of Meta Platforms, the company behind Facebook, Instagram, Messenger and WhatsApp. For online stores, product advertising on Meta runs on catalogs managed in Commerce Manager, Meta's tool for catalogs and shops on Facebook and Instagram.
Instead of designing an ad for every product, a merchant connects a product catalog once and Meta builds ads from it: dynamic ads that show shoppers the products they viewed or added to cart, Advantage+ catalog ads that pick the best products from the whole range, and shoppable tags on posts. The same catalog also powers Facebook and Instagram Shops.
Catalogs can be filled from a CSV, TSV or XML feed, a Google Sheet or Meta's APIs, with feeds fetched on a schedule. For dynamic ads, Meta links catalog items to activity reported by the Meta Pixel or Conversions API through the product ID, so IDs must stay stable and match exactly.
Because every catalog ad reads from the feed, feed quality shows up directly in results. Stale prices, items wrongly marked in stock or mismatches between the feed and landing pages lead to wasted clicks and can get items flagged or rejected in Commerce Manager.
Dynamic ads connect two data sources: your catalog, which supplies images, titles, prices and stock, and the Meta Pixel or Conversions API, which reports what a visitor did on your site. Meta links them by matching the event's content_id to the catalog item's id.
If the values do not match exactly, retargeting for that product will not fire. Keep id stable between updates. Meta recommends your own SKU.
Field names follow Meta's catalog documentation. For e-commerce items, at least one of brand, gtin or mpn is needed on top of the required fields.
| Field | Required | Format | Notes |
|---|---|---|---|
| id | Yes | string, max 100 chars | Use your SKU. Must match the Pixel/CAPI content_id. |
| title | Yes | string, max 200 chars (65 recommended) | Specific, relevant product name. |
| description | Yes | plain text, max 9,999 chars | No HTML and no all-caps text. |
| availability | Yes | in stock / out of stock | Only these two values are supported. |
| condition | Yes | new / refurbished / used | |
| price | Yes | number + ISO 4217 code | e.g. 29.99 USD. Must match the landing page. |
| link | Yes | URL | Starts with http:// or https://, points to that product. |
| image_link | Yes | URL, JPEG or PNG | At least 500x500 px, up to 8 MB. |
| brand | Conditional | string, max 100 chars | Required unless gtin or mpn is given. |
| gtin | Conditional | 8 to 14 digits, no dashes or spaces | Required unless brand or mpn is given. |
| mpn | Conditional | string | Required unless brand or gtin is given. |
| item_group_id | Optional | string | Groups size and color variants into one item. |
| additional_image_link | Optional | URLs, up to 20 | Extra angles beyond the main image. |
| fb_product_category | Optional | category | Needed for onsite checkout; helps delivery. |
| custom_label_0 to 4 | Optional | string | Where Feedance writes score, 4T, Price War and Broken Size. |
Commerce Manager can fetch a feed URL hourly, daily or weekly. Scheduled fetches cannot run more often than once an hour; faster changes need Meta's Catalog Batch API or Direct Upload API.
| Error | Likely cause | Fix |
|---|---|---|
| Missing required field | A required attribute such as price, image_link or availability is empty for some items. | Check every required field for every item, not just a sample. |
| Missing product identifier | None of brand, gtin or mpn is present. | Add at least one of the three to every product. |
| Duplicate item | The same id appears in more than one data feed for the catalog. | Keep each id unique across all data sources. |
| Item disapproved | Missing information, or a policy issue. | Check the Issues tab, fix the feed and request a review. |
| Outdated product information | The feed is stale compared with the live landing page. | Fetch the feed more often so changes land before the next crawl. |
| Landing page unreachable | The link errors, redirects away or is blocked from crawling. | Make sure each link opens that product and is crawlable. |

“Feedance allowed us to instantly add key purchasing triggers, like price and campaign details, directly onto our visuals. This enabled us to create branded, scroll-stopping creatives that truly resonated with our customers.”
Feed formats, matching and update timing.
Largely, yes. Meta accepts CSV, TSV, RSS XML and ATOM XML, the same format families most Google Merchant feeds use, plus a Google Sheets link.
Meta cannot link the visitor's activity to that catalog item, so retargeting for that product will not fire. Keep id stable between updates and identical to the content_id your Pixel or Conversions API sends.
No. For e-commerce items Meta needs at least one of brand, gtin or mpn on top of the required fields. Any one of the three meets the requirement.
Commerce Manager can fetch a feed URL hourly, daily or weekly, and scheduled fetches cannot run more often than once an hour. Faster changes need Meta's Catalog Batch API or Direct Upload API.
The feed is stale compared with the live landing page. Fetch the feed more often so price changes land before the next crawl, and keep price and availability matched to the landing page on every update.
Yes. The Commerce Manager catalog serves catalog ads on both Facebook and Instagram, so one Feedance feed covers both.
image_link must be a JPEG or PNG of at least 500x500 px and up to 8 MB. You can add up to 20 extra angles with additional_image_link.
No. Feedance builds the catalog feed and writes its labels into it. Bids, budgets and product sets stay in your Meta account.
Connect your feed and GA4. We show Product Score, 4T, Price War and Broken Size on your own catalog.