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 &, <, եւ > 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Կամ 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.
| Դաշտ | Պարտադիր | Ֆորմատ | Օրինակ | Նշումներ |
|---|---|---|---|---|
id | Այո | string, max 100 chars | 404718 SKU | Unique content ID per item; use your SKU. Must match the Pixel/CAPI content_id for dynamic ads to work |
title | Այո | string, max 200 chars (65 recommended) | Women's Floral Midi Dress | Specific, relevant product name |
description | Այո | plain text, max 9,999 chars | 100% cotton midi dress with floral print... | No HTML and no all-caps text |
availability | Այո | թվարկել | Պահեստում | Միայն in stock or out of stock are supported values |
condition | Այո | թվարկել | նոր | Supported values: new, refurbished, used |
price | Այո | number + space + ISO 4217 currency code | 29.99 USD | Use a period for decimals; must match the price shown on your landing page |
link | Այո | URL | https://example.com/product/404718 | Must begin with http:// or https:// and point to that exact product's page |
image_link | Այո | URL, JPEG or PNG | https://example.com/images/404718.jpg | Minimum 500x500 pixels, up to 8 MB |
brand | Պայմանական | string, max 100 chars | գագաթնակետ | Required unless gtin or mpn is provided instead |
gtin | Պայմանական | 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 թվարկել 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.
| սխալ | Հավանական պատճառ | ուղղել |
|---|---|---|
| Missing required field | A required attribute like price, image_linkԿամ 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 | Ոչ մեկը brand, gtinԿամ 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 | Համոզվեք, որ յուրաքանչյուրը 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 | 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Կամ mpn for every item — this is a hard identifier requirement for ecommerce catalogs, not just a best practice.price և 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 և id արժեքներ:
Do I need both brand and GTIN?
No — Meta requires at least one of brand, gtinԿամ 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?
image_link image must be JPEG or PNG, at least 500x500 pixels, and no larger than 8 MB.