Catalog raises $3M to build the product data layer for AI commerce. Read the announcement.
All posts
Product Data

Meta product catalog: setup, fields, and feed monitoring

Learn what a Meta product catalog is, how feeds and APIs populate it, which fields and variants matter, and how to keep Facebook and Instagram data accurate.

A Meta product catalog is where your product facts become usable across Meta's commerce surfaces. The catalog can look healthy while a price is stale, a variant opens the wrong page, or a feed upload leaves many items rejected. The operating work happens between your source systems and Commerce Manager. You need a clear catalog, feed, and API boundary, stable fields and variant IDs, and checks that keep Facebook and Instagram data aligned with what shoppers can buy.

What a Meta product catalog is

Meta's catalog documentation describes a catalog as a container for product information and inventory. In practice, it is the item store you manage in Commerce Manager. A catalog holds product records that Meta can use across its technologies, including shopping and advertising surfaces.

A feed is the file or scheduled data source that supplies those records. An API is the programmatic path for creating, updating, or deleting items and for checking upload status. Commerce Manager is where you configure the catalog, sources, permissions, product sets, and diagnostics. You may see the same input called a Facebook product catalog feed or an Instagram Shopping feed. Those names describe the destination, not a separate product-data model.

Your source may be a storefront, enterprise resource planning (ERP) system, product information management (PIM) system, digital asset management (DAM) system, or supplier feed. Keep the boundary clear:

LayerWhat it doesWhat it is not
Product sourceOwns facts such as stock keeping unit (SKU), price, inventory, copy, and approved mediaA Meta catalog
FeedSends a snapshot or update file to MetaA master product database
APISends item changes and reads processing state programmaticallyA guarantee that an item is eligible or visible
Meta product catalogStores the items and makes them available to selected Meta surfacesA replacement for your commerce or inventory system

A reliable operating path looks like this:

storefront, ERP, PIM, DAM, or supplier data
        → normalized product and variant records
        → primary feed or API updates
        → Meta product catalog
        → Facebook and Instagram shopping surfaces

Product data moving from a storefront through catalog records to shopping surfaces

The distinction matters because a successful file fetch only proves that Meta reached the source. It does not prove that every row parsed, that every item has usable data, or that a shopping surface will show it.

Choose how products enter Commerce Manager

Create or select an online-products catalog in Commerce Manager, assign it to the right business portfolio, and choose a data source. Meta's catalog setup documentation lists the current screens and permissions. The labels can change, so use the live instructions for exact clicks.

The durable choices are these:

Source pathBest fitOperating responsibility
Manual entryA small catalog, a pilot, or a few one-off productsSomeone must update every changing field and record the change.
Scheduled data feedA store or pipeline that can publish CSV, TSV, or XML at a URL or upload locationGenerate a complete file, set a cadence, and monitor each fetch and processing result.
API or partner integrationLarge catalogs, frequent inventory changes, or engineering-owned workflowsHandle credentials, rate limits, retries, partial failures, and item-level status.

Meta supports one-time and scheduled feed uploads. Its current setup documentation lists hourly, daily, and weekly schedules. Scheduled feeds are useful for regular changes, while the Feed API reference documents programmatic feed configuration, upload sessions, and status checks. A partner connection can reduce setup work when it already owns a reliable product record. It should not become an excuse to run several ungoverned sources for the same item.

Before the first full load:

  1. Select the product type and business portfolio deliberately. Catalog type affects the data contract and cannot be changed casually later.
  2. Decide which system owns each field. Your commerce platform or ERP often owns price and inventory. A PIM or approved content workflow may own titles and attributes. A DAM may own media.
  3. Publish a representative test set. Include a normal item, a multi-variant item, an out-of-stock item, a sale-price item, and a localized item when those cases exist.
  4. Compare the processed records with the source before releasing the full catalog.

The goal is a repeatable output, not a feed file that only one operator knows how to repair.

Build each product record around the sellable item

Meta's data feed specifications for catalogs define required fields by product type and destination. For ecommerce products, start with the fields below. Treat the specification as the authority for accepted values and limits because Meta can change them.

FieldWhat to sendWhy it matters
idA unique, stable identifier for the itemJoins updates to the same item. Use the sellable variant ID when variants differ.
titleA specific product nameGives shopping surfaces a clear label. Include the attributes needed to distinguish the item.
descriptionFactual, plain-text product informationSupplies context beyond the title. Keep it consistent with the landing page.
availabilityA value from Meta's accepted availability vocabularyPrevents an unavailable item from being represented as purchasable.
conditionThe item's condition, such as new, refurbished, or usedSeparates materially different offers.
priceA number plus an ISO currency code, such as 148.00 USDGives Meta a typed price instead of an ambiguous symbol or locale format.
linkAn absolute URL to the product or variant pageGives the shopper a page for the exact offer represented in the row.
image_linkA publicly reachable main product imageLets the surface render the item and should represent the same variant.
brand, mpn, or gtinAt least one valid identifier field. mpn is a manufacturer part number; gtin is a global trade item number.Helps identify the product and supports downstream matching. Never invent an identifier.
inventoryQuantity when the selected commerce surface requires itAdds a quantity signal for surfaces that support inventory-based selling.
google_product_categoryA category mapping when the selected surface or use case requires itAdds channel taxonomy without replacing your internal category.

Use Meta's field names exactly, including underscores and casing. Column headers should use US English. Keep category-dependent fields separate from the universal ecommerce core. For example, inventory and google_product_category matter for some commerce or checkout configurations, but they are not a reason to pretend every catalog has the same requirements.

A small variant record might look like this:

id: JKT-001-NVY-M
item_group_id: JKT-001
brand: Northline
title: Northline commuter jacket, navy, medium
description: Recycled-nylon commuter jacket with a water-resistant shell.
availability: in stock
condition: new
price: 148.00 USD
link: https://shop.example/products/jkt-001?variant=navy-m
image_link: https://cdn.example/products/jkt-001-navy-m.jpg
color: navy
size: M

This is an illustrative record, not a complete CSV header. In a real CSV, TSV, XML, or API payload, keep the exact schema and syntax required by the chosen source path.

Model variants and identifiers explicitly

A product family, a sellable variant, and a seller offer are different objects:

LevelExampleValues that usually belong here
Product familyNorthline commuter jacketShared name, brand, description, and category
VariantNavy, medium jacketSKU, option values, variant image, variant URL, price, and availability
OfferNorthline's US offer in USDSeller, market, currency, price, stock state, and fulfillment context

Make the variant the unit of the feed row whenever price, stock, image, URL, or identifiers can differ. Use a stable id for each variant and keep it stable across updates. Do not recycle an old ID for a new color or size. Do not derive identity from a title that may be edited.

Where your catalog type supports variant grouping, use item_group_id or the equivalent field to connect variants to their family. Send color, size, and other option fields from the current Meta specification. Do not ask Meta to infer a relationship from a title such as “jacket, navy, medium.”

The landing page must resolve to the same choice. A row for navy medium should open navy medium, show its image, show its price, and show its stock state. A generic product page that defaults to black large creates a data mismatch even when every feed column is populated.

If your website or app sends product IDs in shopping events, use the same catalog id for the corresponding item. A feed ID that differs from the event ID can break the link between the item a person viewed and the item represented in the catalog. Catalog's guide to product data APIs covers the broader identity and variant model without tying it to one destination.

A catalog row is a promise about an offer. Reconcile the row with the page and checkout path before publishing it.

  • Price and currency: Send the numeric amount and currency together. Use a period for decimals and keep the feed, product page, structured data, and checkout aligned. Treat a sale price and its effective dates as one change. Remove or expire the sale value when the promotion ends.
  • Availability and inventory: Map source statuses to Meta's accepted values. Do not translate a backordered, discontinued, or channel-restricted item into in stock without an explicit business rule. If a surface uses inventory, update the quantity from the system that actually owns sellable stock.
  • Links: Use an HTTPS URL that resolves to a purchase-ready page. Avoid a link that requires a login, lands on an unrelated product, or drops the selected color and size. Check redirects, locale handling, and canonical product selection.
  • Images: Keep the image URL reachable without a session and make sure the asset represents the row. Publish the new asset before changing the feed URL, and keep the old asset available until the replacement can be retrieved. Follow Meta's current image format, size, and content rules.
  • Identifiers: Preserve the merchant SKU and manufacturer identifiers in your canonical record. Validate gtin and mpn formats when present. A missing identifier is safer than a fabricated one.
  • Country and language: Treat market, language, currency, and URL as part of the offer. A US price and an EU landing page are not one localized record. Use Meta's country and language feed options when the catalog serves different markets.
  • Categories and duplicates: Map your controlled internal category to Meta's destination taxonomy. Check that every row has one unique ID and that the same variant is not emitted twice under different keys.

These checks are product-data quality work, not campaign optimization. Catalog's guide to product data quality goes deeper on completeness, validity, uniqueness, and freshness across channels.

Use primary and supplementary updates deliberately

A primary feed is the catalog's main source. It should contain the complete set of products that the catalog owns, including additions and removals. A replace-style primary update can remove items that disappear from the next complete snapshot, so alert on unexpected row-count drops before the update runs.

A supplementary feed is an overlay for items that already exist in a primary source. Meta's Feed API documentation states that supplementary feeds can update catalog items, but cannot create or delete them. Use one for a narrow, governed change such as a channel label or a targeted price and availability update. Keep the full product lifecycle in the primary source.

For fast-moving inventory, a scheduled file may be too slow. Meta documents the Catalog Batch API as a programmatic option for targeted updates. Use it when your team can own the request, retry, and status workflow. Do not let a batch endpoint become a second product database.

A dependable freshness loop has six steps:

  1. Detect a source change in price, availability, inventory, content, or media.
  2. Normalize the value and validate it against the product and variant contract.
  3. Publish a complete primary snapshot or an item-level update with a version and timestamp.
  4. Record the feed ID, upload session, API request, or batch handle.
  5. Check processing results and catalog diagnostics. Keep warnings and fatal errors tied to the source version.
  6. Reconcile expected IDs, processed IDs, and a sample of live landing pages.

Set cadence by risk. Price, availability, and inventory need event-driven updates or the most frequent reliable schedule your source supports. Titles and attributes can follow approval. Images should change after asset approval and URL checks. Full reconciliation should run often enough to catch missed events, deletions, and source drift.

Monitor processing and catalog issues

Treat delivery, processing, and visibility as separate states:

StateWhat it provesWhat to do next
Fetched or uploadedMeta received the file or requestCheck the upload session and row or item counts.
Parsed or processedMeta read the structure and attempted item updatesInspect item-level warnings, errors, and omitted fields.
Accepted itemThe item exists in the catalog with usable dataCompare it with the source and the landing page.
Eligible or visible surfaceA selected destination can use or show the itemKeep monitoring freshness and destination-specific issues.

Meta recommends checking upload errors and warnings in Commerce Manager's Diagnostics after each upload. The Feed API supports querying recent upload sessions, sampling errors and warnings, and generating a fuller error report. A fatal error means Meta cannot ingest the item. A warning can cause a field to be omitted while other fields continue processing. Read the upload and error guidance with the current field specification.

Use a small incident table for triage:

SymptomInspect first
Feed fetched, item missingPrimary-feed completeness, omitted IDs, duplicate IDs, and unexpected deletions
Price or stock is wrongCurrency, sale fields, source timestamp, landing page, and checkout state
Wrong color, size, or imageVariant ID, group ID, option values, variant URL, and image URL
Image rejected or blankURL response, access controls, redirects, format, and whether the asset matches the item
Many rows rejectedHeader spelling, delimiter, encoding, required fields, and accepted value lists
Feed processed, surface still emptyItem eligibility, account permissions, market settings, policy, or destination availability

Record the source version, product ID, variant ID, upload time, processing result, error text, and owner. This turns “the Meta feed is broken” into a fixable data change. A green scheduler job is not enough if the last successful price update is two days old or if a row now points to a 404 image.

How Facebook and Instagram use a product catalog

One catalog can support more than one Meta surface. Depending on the business, product type, country, and current eligibility, catalog items can appear in:

  • Facebook or Instagram shop experiences;
  • Instagram product tags and other shoppable content;
  • collection and catalog-based ads that select products from the catalog;
  • product sets used to choose a subset of items for a destination or campaign.

The catalog supplies the item facts and relationships. The surface decides how those facts are rendered. A title, image, price, availability, and link can all be correct in the catalog while a business still lacks access to a particular shop or checkout feature. Meta's own field documentation notes that checkout fields apply only to sellers who can use that commerce flow. Do not promise native checkout, product tagging, or reach for every business or region.

Keep the operational question narrow: when a shopper sees a product on Facebook or Instagram, does the item match the offer you can sell now? The answer depends on the feed or API, the catalog processing state, the destination settings, and the account's eligibility. It does not come from campaign settings alone.

Keep Meta as a destination, not your product truth

Meta is one channel output. Your source systems still need a canonical model for products, variants, offers, media, market, and timestamps. If two systems disagree about a price or variant ID, a feed only moves the disagreement downstream.

Catalog helps teams build the layer before that handoff. We structure and normalize product data, preserve variant relationships, keep live, normalized records synchronized, validate changing fields, expose machine-readable product objects to AI shopping surfaces, and measure what those surfaces do with the data. The same controlled records can produce a Meta-ready channel output alongside other destinations. Catalog works beside your storefront, ERP, PIM, DAM, and existing feeds rather than asking one destination to become the master catalog.

For the source-to-destination operating model, see product data integration. For a destination-specific comparison of source, processing, and visibility states, see our Google Merchant Center feed guide.

FAQ

Is a Meta product catalog the same as a product feed?

No. The catalog is the managed container of item records. A feed is one input that creates or updates those records. An API, manual entry, or partner integration is another input path.

Can one catalog serve Facebook and Instagram?

Often, yes. A catalog can support multiple Meta technologies, so teams usually avoid maintaining separate product datasets for Facebook and Instagram. Surface availability, product eligibility, market rules, and checkout options still vary.

How often should a Meta catalog feed update?

Set the cadence from field risk. Refresh price, availability, and inventory as often as they change. Refresh content and media after approval. Use a frequent scheduled feed or an API update when a slower file would leave the catalog out of sync with the offer.

Why did my feed upload succeed while products are missing?

Upload success proves transport. Inspect the upload session, item-level processing errors, warnings, unexpected ID changes, primary-feed omissions, and destination diagnostics. Then compare a missing item's catalog record with its landing page.

Does every variant need its own catalog ID?

Give each sellable variant its own stable ID when price, stock, image, URL, or identifiers differ. Use a supported group field to connect variants to their family. Keep the variant URL and image aligned with the option values in that row.

If Meta is one of several destinations your team needs to keep current, see how Catalog works as a product-data layer for AI commerce.