Meta Product Feed Optimization (2027)

How to optimize a Meta catalog product feed: titles, images, descriptions, attributes, GTIN and feed freshness that power Advantage+ catalog ads.

Updated March 2027 · Likit Sae Lee, CTO

Meta Product Feed Optimization (2027)
Quick answer

To optimize a Meta product feed, treat the feed data as the creative: write front-loaded titles (up to 200 characters), supply clean square images (Meta recommends 1080 x 1080 pixels), fill in GTIN, brand and MPN so Meta can match and dedupe products, and refresh price and availability on a scheduled fetch (hourly for fast-moving stores). A complete, accurate, frequently updated feed is what makes Advantage+ catalog ads and dynamic product ads deliver, because those formats build every ad from your feed rather than from a designed creative. Meta's AI ad tools, including the Advantage+ suite, passed a $60 billion annual revenue run rate in 2025, and your feed is the raw material they optimize against.

Your catalog is connected and your Advantage+ catalog ads are running, but the results are uneven: some products never get shown, others advertise a price that no longer matches your site, and a few keep selling after they sold out. Almost every one of those problems traces back to the feed, not the campaign. In a catalog ad you do not design each creative; Meta assembles it from your product data, so the title, image, price and availability in your feed are the ad. This guide covers how to optimize that feed field by field, so the automation has clean data to work with.

In a catalog ad, the feed is the creative

Most advice on how to run a Facebook ad is about the creative: the hook, the video, the headline. Catalog ads work differently, and it trips up teams who arrive expecting to design each ad. In an Advantage+ catalog ad or a dynamic product ad, you do not build the individual creative at all. Meta assembles it in real time from your product feed, pulling the title, the image, the price and the availability straight out of your catalog and dropping them into a template for whichever shopper it decides to show it to. The feed is the creative. The row of data is the ad.

That single fact reorders your priorities. When the ad is generated from data, the quality of that data becomes the quality of the ad. A blurry image, a truncated title, a stale price, a missing identifier: each one is a defect in a creative that will run thousands of times before you notice. And because these formats scale across your whole catalog, a systemic feed problem does not hurt one ad, it hurts every ad. The upside is symmetrical. Fixing the feed lifts every product at once, without touching a single campaign setting.

This guide is about optimizing that feed data itself, not about creating the catalog and not about setting up the ad type. It walks the fields Meta reads, how to write titles and pick images that perform, why identifiers like GTIN decide whether a product even gets matched, and why feed freshness quietly makes or breaks a campaign. The stakes are real money: the blended Meta CPM sat near $8.19 in 2025 per Gupta Media, so every impression spent on a product that is out of stock, or wrongly priced, or unshowable, is budget you do not get back.

The fields Meta actually reads

A Meta catalog feed is a table. Each row is a product, and each column is a field with a name Meta recognizes. Some fields are required, and an item that is missing one usually fails to import at all. Others are optional but do a lot of quiet work, and skipping them is the most common reason a technically valid feed still underperforms.

The eight required fields are the non-negotiable core. Get their formats exactly right (US English field names and enum values, HTTPS URLs, an ISO currency code on the price) or the row bounces.

FieldRequired?Format or limitWhy it matters
idRequiredUp to 100 chars, unique and stableTies the feed row to the content_id fired by your pixel
titleRequiredUp to 200 charactersThe product name shoppers read and the system matches on
descriptionRequiredUp to 9,999 charactersContext for relevance, filtering and Shops
availabilityRequiredin stock / out of stock / preorderDecides whether the item can be shown at all
conditionRequirednew / refurbished / usedEligibility and buyer trust
priceRequiredNumber plus ISO currency (e.g. 29.99 USD)Shown in the ad and must match your site
linkRequiredHTTPS product URLThe destination, and it has to resolve
image_linkRequiredHTTPS image URLThe creative itself
brandRecommendedTextMatching, dedupe and Shops eligibility
gtin / mpnRecommendedValid identifierProduct matching and duplicate prevention

The recommended fields are where good feeds pull ahead. Beyond brand and the identifiers covered later, the ones worth filling in are sale_price and sale_price_effective_date (so a promotion shows a strike-through price rather than a manually edited base price), additional_image_link (extra angles the dynamic formats can rotate in), color, size, gender, age_group and material (attributes that power filtering and matching), product_type and google_product_category (which help Meta understand what the item is), and custom_label_0 through custom_label_4 (your own tags for building product sets and controlling bidding). None of these is mandatory. Each of them gives the automation another handle to grab.

One field deserves special care because it is invisible and permanent: id. It must be unique per item and, critically, stable over time. If your platform regenerates product IDs on a re-sync, the catalog treats every item as brand new, loses its learning and its match history, and breaks the link to the content_id your pixel reports. Pick an ID that never changes (the SKU is usually safe) and leave it alone.

Product titles: front-load what shoppers and the algorithm scan

The title field allows up to 200 characters, but that number is a trap. In almost every placement, only the first line shows before the text truncates, and the shopper is scanning a grid at speed. So the real job of a title is to say what the thing is in the first handful of words. Front-load it.

A pattern that holds up across categories is brand, then product type, then the one attribute a shopper actually filters on. Compare these two titles for the same item:

  • Weak: "Beautiful Comfortable Everyday Essential Top for Women, Perfect Gift, Limited Stock, Shop Now"
  • Strong: "Brand Organic Cotton Crew Tee, Women's, Sage Green"

The weak title leads with adjectives and promotional filler, buries the fact that it is a t-shirt, and never names the brand or the color. The strong one front-loads the brand, states the product type, and includes the two attributes that matter (fit and color) inside the visible span. It reads like a product name, which is exactly what it is.

Three rules keep titles clean. First, no promotional language in the title. "SALE", "FREE SHIPPING", "50% OFF", exclamation marks and emoji all belong elsewhere: discounts go in sale_price, and Meta can read that as low-quality or spammy text in a title. Second, do not keyword-stuff. Repeating "shoes shoes running shoes trainers sneakers" does not help matching and reads as noise. Third, keep titles consistent across the catalog, because a feed where every title follows the same brand-product-attribute shape looks coherent in a grid and gives the matching system a predictable structure to learn from.

There is a matching dimension here too. The text in your titles and descriptions is part of what Meta uses to understand and dedupe a product, so a specific, accurate title is not just for the shopper, it is a signal that helps the right item surface for the right query and prevents two listings of the same product from competing with each other.

Images: the single biggest lever on a catalog ad

If the feed is the creative, the image is the hero of that creative, and it is the field where sloppy data is most visible. Meta lists a minimum image size of 600 x 600 pixels for catalog products and recommends 1080 x 1080 for the cleanest rendering across Facebook and Instagram. Serve images over HTTPS, in JPG or PNG, and use a square 1:1 ratio so items sit evenly in a carousel or collection grid.

Beyond the specs, a few disciplines separate images that convert from images that get skipped:

  • One product, plainly shown. A catalog image should show the item on a clean, consistent background. Lifestyle shots have their place, but the primary image is a product shot, and a cluttered or busy frame reads poorly at thumbnail size.
  • No baked-in text or badges. Promotional overlays, price stickers, "SALE" flashes and watermarks pressed into the image can look like spam and, on some surfaces, keep the item from displaying. Let the ad template carry the price and any offer; keep the image itself clean.
  • Consistency across the feed. Mixed backgrounds, wildly different crops and inconsistent lighting make a carousel look like a jumble of listings from different stores. A consistent visual system across the whole catalog is itself an optimization.
  • Extra angles via additional_image_link. Supplying more images gives the dynamic formats material to rotate through, and Meta has moved toward pulling richer media (multiple images and video) into catalog ads automatically, so a feed that only offers one flat image leaves that capability unused.

Image problems are also silent. A product with a 400-pixel image or a broken image URL will not throw an obvious error in your campaign dashboard; it simply underperforms or fails to show, and you find out only if you audit the feed. Treat the image column as a first-class part of the feed, not an afterthought that inherits whatever your store platform happened to export.

GTIN, MPN and brand: the identifiers that decide matching

Product identifiers are the least glamorous fields in the feed and among the most important. They are how Meta recognizes that your "Brand Organic Cotton Crew Tee" is a specific, known product rather than an anonymous listing, which in turn drives matching, deduplication and eligibility across shopping surfaces. Meta strongly recommends supplying them.

There are three that work together:

IdentifierWhat it is
GTINGlobal Trade Item Number, the umbrella for standard barcodes: UPC (12 digits, North America), EAN (13 digits, Europe), JAN (Japan) and ISBN (books)
MPNManufacturer Part Number, used to identify a product when no GTIN exists
brandThe maker's brand name, which pairs with GTIN or MPN to identify the item

For a product that carries a manufacturer barcode, supply the GTIN. Meta's own guidance is that unique identifiers (GTIN, part numbers, distinct titles and descriptions) help prevent duplicate records and improve delivery, because a matched product can be resolved against a known catalog and will not fragment into competing listings. For an item that genuinely has no barcode (handmade goods, your own-label products, custom items), you should not invent a number. Instead, provide brand and MPN and set the identifier_exists field to false, which tells Meta the missing GTIN is expected rather than an error.

The identifiers also connect to tracking. For Advantage+ catalog ads and dynamic product ads to retarget correctly, the content_id your Meta Pixel sends on a ViewContent, AddToCart or Purchase event has to match the id of the corresponding item in your feed. If those IDs drift apart, the events cannot be tied back to products, the retargeting audience thins out, and delivery suffers even though nothing looks wrong in the campaign. Keeping IDs aligned and identifiers populated is what lets the automation see a product, a shopper and an intent as one connected thing.

Descriptions and attributes: the metadata that widens reach

The description field allows a generous 9,999 characters, but length is not the goal. A useful product description runs a few hundred characters and, like the title, front-loads the information a shopper needs: what the product is, what it is made of, and why it fits their need. Write for a person first. The description contributes to how Meta understands and categorizes the product, so accurate, specific copy helps relevance, but stuffing it with repeated keywords helps nobody and can read as low quality.

The attributes around the description are where a lot of quiet optimization lives, because they turn a flat list of products into a structured catalog the system can slice. Filling in color, size, material, gender and age_group lets Meta match variants correctly and lets shoppers see the right version. Setting product_type (your own category path) and google_product_category (a standard taxonomy) tells the system what shelf the item belongs on. And the five custom_label fields are yours to define: many teams use them to tag margin tier, bestseller status, season, price band or stock level, then build product sets on those labels to control which items an ad set promotes and how aggressively.

That is the practical payoff of good attributes. A well-attributed feed lets you carve the catalog into product sets (say, high-margin bestsellers, or clearance stock, or a seasonal range) and point different campaigns at different sets, all without editing a single creative. A feed with no attributes forces you to advertise the whole catalog as one undifferentiated blob. The metadata is what gives you control.

Feed freshness: the silent killer of catalog performance

A feed is not a one-time upload; it is a living mirror of your inventory, and the moment it drifts out of sync with your store it starts costing money. Prices change, items sell out, new products launch, and the feed has to keep up. Meta gives you several ways to keep it current: a scheduled fetch of a hosted file (CSV, TSV, XLSX, Google Sheet or XML) that Meta pulls on a set cadence, the Catalog Batch API for pushing changes as they happen, or a partner platform integration that syncs automatically.

For a scheduled feed, Meta lets you choose hourly, daily or weekly, and recommends fetching hourly if your prices or stock change often. For a store with real-time changes, the Batch API pushes updates immediately. The floor for any active catalog is daily. Weekly is only safe for a genuinely static catalog, which most stores are not.

Here is why the cadence is not a detail. Consider two concrete failures a stale feed produces:

  • Selling what you do not have. Suppose an item sells out on your site but the feed still reports it as in stock because it last refreshed twelve hours ago. Your Advantage+ catalog ad keeps serving that product, and at a blended CPM near $8.19 you are paying for impressions on something no one can buy, and sending clickers to an out-of-stock page. Multiply that across a fast-moving catalog during a sale and the waste is not trivial.
  • Price mismatch. If your site drops a price for a promotion but the feed still carries the old one, the ad shows a price that disagrees with the landing page. Meta treats a persistent price mismatch between the ad and the destination as grounds for disapproval, so the item can stop delivering entirely until the feed catches up.

The fix is boring and effective: schedule the feed to fetch at least as often as your data changes, and check the feed's status after each fetch. Commerce Manager reports how many items imported, how many were updated, and which rows errored or were flagged, and that report is the single most useful health check you have. A feed that silently drops a chunk of its rows on every fetch is a feed quietly shrinking the catalog you can advertise.

How a clean feed powers Advantage+ catalog ads and dynamic product ads

Everything above converges on one point. Advantage+ catalog ads and dynamic product ads are retrieval-and-match systems: they look at a shopper's signals, decide which products from your catalog that person is most likely to buy, and generate an ad for those items on the spot. The automation is powerful, and Meta has leaned into it hard. Its AI-powered ad tools, including the Advantage+ suite, passed a $60 billion annual revenue run rate in 2025, according to figures reported around Meta's Q3 2025 earnings. But that machinery can only choose from what is in your feed, and it can only present each item as well as the data allows.

So the division of labor is clean. Meta owns the matching (which product, which person, which moment). You own the inputs (what each product is, how it looks, what it costs, and whether it is actually available). A rich feed gives the system more to match on: identifiers to resolve the product, attributes to build tight product sets, multiple images and clean titles to render an ad worth tapping. A thin feed starves it. This is also why the feed matters more under automation, not less: there is no design step to compensate for weak data, so the data is the whole creative.

That reframes conversion expectations too. Retail conversion rates are modest to begin with, near 3.7% on desktop and 2.0% on mobile per Contentsquare's 2026 benchmark, so you cannot afford to lose shoppers to a fixable feed defect on top of the normal drop-off. A price that does not match, an image that will not load, a bestseller stuck out of stock: each one leaks conversions the automation has no way to recover.

A practical audit rhythm keeps a feed healthy without much effort. Once a week, open Commerce Manager and read the feed diagnostics: how many items are active, how many errored, and what the flagged issues are. Fix the recurring errors at the source (usually a field your store platform exports wrong), not row by row. Spot-check a handful of live products against your site to confirm price and availability agree. Confirm the scheduled fetch is running on the cadence your inventory needs. Once the feed is clean and fresh, the leverage moves back to the creative layer that sits on top of catalog ads (the copy, the framing, the offer, and the collection or storefront experience), where testing and on-brand production, in a platform like AdPlay.ai or any workflow you prefer, compound the gains a good feed unlocks. But the order matters: the feed comes first, because in a catalog ad, it is the ad.

By the numbers

200 characters
Maximum product title length in a Meta catalog
Meta, 2026
9,999 characters
Maximum product description length
Meta, 2026
1080 x 1080 px
Recommended catalog image resolution
Meta, 2026
600 x 600 px
Recommended catalog image minimum
Meta, 2026
Hourly
Recommended feed refresh for fast-moving inventory
Meta, 2026
$60B+
Meta AI ad tools (incl. Advantage+) annual revenue run rate
Marketing Dive, 2025
$8.19
Blended Meta (Facebook and Instagram) CPM
Gupta Media, 2025
3.7% / 2.0%
Retail ecommerce conversion rate, desktop vs mobile
Contentsquare, 2026

Frequently asked questions

What fields are required in a Meta product feed?

Every product row needs eight core fields: id (a unique, stable identifier up to 100 characters), title (up to 200 characters), description (up to 9,999 characters), availability (in stock, out of stock, or preorder), condition (new, refurbished, or used), price (a number plus an ISO currency, like 29.99 USD), link (the HTTPS product URL) and image_link (the HTTPS image URL). If any of these is missing or wrongly formatted, the item usually fails to import. Brand, gtin and mpn are not strictly required but are strongly recommended, because they help Meta match and dedupe your products.

How do I optimize product titles for Meta catalog ads?

Front-load the words that identify the product and put the brand and key attribute first, because only the first line shows in most placements even though the field allows up to 200 characters. A clear pattern is brand, then product type, then the one attribute a shopper filters on (color, size, or variant). Keep it descriptive and specific, and leave promotional text (SALE, FREE SHIPPING, emoji) out of the title, since that belongs in the price and sale_price fields and can look like spam. A good title reads like a product name, not an ad headline.

Do I need a GTIN for Facebook or Meta catalog ads?

A GTIN is not strictly required to upload a product, but Meta strongly recommends it and it materially helps. GTIN is the umbrella for standard barcodes: UPC in North America, EAN in Europe, JAN in Japan, and ISBN for books. Supplying a valid GTIN (or an MPN plus brand when no GTIN exists) lets Meta match your item to a known product, prevent duplicate records, and keep it eligible across Shops and shopping surfaces. For handmade or own-brand items with no barcode, set the correct identifier_exists value and supply brand and MPN instead.

What image size and format should Meta catalog products use?

Use square 1:1 images and serve them over HTTPS. Meta lists a minimum of 600 x 600 pixels for catalog images and recommends 1080 x 1080 for the cleanest display, in JPG or PNG. Show a single product on a plain, consistent background, avoid text, badges, watermarks and promotional overlays baked into the image, and keep aspect ratios consistent across the whole feed so the grid does not look ragged. Add extra angles through additional_image_link, which dynamic formats can rotate in.

How often should I update my Meta product feed?

As often as your inventory and prices change. Meta lets you schedule a hosted feed to fetch hourly, daily or weekly, and recommends hourly for stores whose prices or stock move frequently, or the Catalog Batch API for near real-time changes. At an absolute minimum, refresh daily. Stale data is costly: if your feed still shows an item in stock after it sold out, you pay to advertise something nobody can buy, and if the feed price no longer matches your website, the ad can be disapproved for a price mismatch.

Why are some of my catalog products not showing or not delivering?

The usual causes are data problems, not campaign problems. An item marked out of stock, or one that failed to import because a required field was missing or malformed, will not be shown. A price or availability that disagrees with your landing page can get the item disapproved. Very thin data (no brand, no identifier, a one-word title, a tiny or text-covered image) gives the system little to match on, so it rarely surfaces. Check the diagnostics in Commerce Manager, fix the flagged rows, and re-fetch the feed.

What is the difference between a data feed, a pixel, and a partner integration for a catalog?

They are different ways to get product data into the catalog and to connect it to shopper behavior. A data feed (a hosted CSV, TSV, XLSX, Google Sheet, or XML file that Meta fetches on a schedule) or the Catalog Batch API supplies the product information itself. The Meta Pixel and Conversions API report what shoppers view, add to cart and buy, and a partner platform integration (for example a store platform app) can sync the catalog and events for you. For dynamic and Advantage+ catalog ads you need both: accurate product data and matching event signals.

Does the feed matter for Advantage+ catalog ads if the targeting is automated?

It matters more, not less. Advantage+ catalog ads and dynamic product ads build every ad on the fly from your feed, so the title, image, price and availability are the creative, and there is no designer step to paper over weak data. Automation decides which item to show which person, but it can only choose from what is in the feed and can only present it as well as the data allows. A complete, accurate, fresh feed with good images and identifiers is the single biggest thing you control in these campaigns.

Sources

Keep exploring

Turn ad research into winning ads

Research the ads that work, generate the creative on-brand, and launch to Meta, all in one tool.

7-day free trial · No credit card required