Skip to content

Glossary drawing · Commerce & payments

Product Feed

Also called: Data feed · Catalogue feed · Catalog feed · Scheduled feed · Product data feed

Note 1 —The scheduled file or API sync that keeps a Meta catalogue's products, prices and stock current, so WhatsApp product messages show what you can sell.

Term
Product Feed
Abbreviation
—
Category
Commerce & payments
Level
Practitioner
Reviewed
Sheet no.
GLO-COM-471
Drawn by
InfiQ Glossary

Drawing 1 · Interactive

Turn a catalogue change into a batch request

Minifying strips the whitespace people need and machines don’t, so every request is smaller.

Try

Pretty-printed JSON.

Body as your sync sends it
{"item_type":"PRODUCT_ITEM","requests":[{"method":"CREATE","data":{"id":"DIYA-BRASS-SET4","title":"Brass diya set of 4","description":"Hand-polished brass diyas, 3-inch, set of four.","availability":"in stock","condition":"new","price":"1299.00 INR","link":"https://shop.example.in/p/diya-brass-set4","image_link":"https://shop.example.in/img/diya-brass-set4.jpg","brand":"Example Decor"}}]}
Bytes before
526
Bytes after
391
Saved
26%
  • 526 → 391 bytes: 26% smaller.
  • Only whitespace between tokens was removed — spaces inside strings are data and stay.
  • Minify what goes over the wire; keep the pretty version for people.
Three real-shaped Catalog Batch API bodies: a CREATE carrying every required column, two UPDATEs between feed runs and a DELETE. Pick one, or edit it, to see the compact body your sync sends; broken JSON is rejected.

What is a product feed?

A product feed is how product data travels from a business's own store, ERP or inventory system into the Meta catalogue its WhatsApp Business Account uses. In its classic form it is a file — CSV, TSV, XML (RSS or Atom) or a Google Sheet — with one row per item, which Meta Commerce Manager fetches from a URL on a schedule (hourly, daily or weekly) or accepts as a one-off upload. Each run updates the catalogue, and that WhatsApp Catalog in turn drives the storefront, the catalog message, the single-product and multi-product message types, and the in-chat cart.

Every row uses Meta's product columns. The required ones are id, title, description, availability (such as in stock or out of stock), condition, price written as a number followed by an ISO 4217 currency code (1299.00 INR), link, image_link and brand. Optional columns such as sale_price, item_group_id for variants and additional images add detail. The id column is the content ID that WhatsApp calls the product retailer ID, so the feed decides which identifiers your order webhooks will carry.

Feeds are not the only route into a catalogue. The Catalog Batch API (POST /{CATALOG_ID}/items_batch) creates, updates or deletes items asynchronously, typically within minutes, and suits stock-outs and price changes between scheduled runs; e-commerce platform integrations run their own sync. Many businesses combine a nightly full feed with API updates for stock. In short, the product feed is the pipe, the product retailer ID is the key each row carries, and Commerce Manager is where you check the result — including every upload's errors and warnings.

Key takeaways

  • A product feed is the scheduled file or API sync that keeps a Meta catalogue's items, prices and stock in line with your store.
  • Meta's required columns are id, title, description, availability, condition, price, link, image_link and brand.
  • The feed's id becomes the product_retailer_id that WhatsApp messages and order webhooks carry, so it must never change.
  • Scheduled feeds suit full refreshes; the Catalog Batch API (items_batch) suits price and stock changes between runs.
  • Run a partial file as an update, never as a replace, or the items it leaves out can be removed from the catalogue.

Operating sequence

How does a product feed work?

  1. Export the right rows

    Generate the file from your store or ERP with Meta's columns, one row per purchasable variant, with your SKU in id. Leave out items you cannot sell instead of sending them with bad data.

  2. Host it and schedule the fetch

    Publish the file at a stable HTTPS URL (password protection is supported), then add it as a data source in Commerce Manager or with POST /{CATALOG_ID}/product_feeds, choosing an hourly, daily or weekly schedule.

  3. Choose replace or update

    A complete file should run as a replace, so products you drop disappear. A partial file — only prices, or only changed items — must run as an update or a supplementary feed, or everything missing from it can be removed.

  4. Push urgent changes through the API

    Between runs, send stock-outs and price changes with the Catalog Batch API's items_batch endpoint, then check the returned handle with check_batch_request_status until it reports finished.

  5. Read every upload's errors

    Each run records errors and warnings: missing required fields, prices that do not parse, images Meta cannot fetch, policy rejections. Review them in Commerce Manager or through the feed's uploads edge, and fix the source rather than patching items by hand.

Specifications

A product feed: key facts and limits

File formats
CSV, TSV, XML (RSS or Atom), Google Sheets
Scheduled fetch
Hourly, daily or weekly from a URL
Required columns
id, title, description, availability, condition, price, link, image_link, brand
Price format
Number + ISO 4217 code, e.g. 1299.00 INR
id column
Becomes product_retailer_id; up to 100 characters
Between runs
Catalog Batch API: POST /{CATALOG_ID}/items_batch
Batch size
Up to 5,000 requests per call; Meta suggests under 3,000
Run modes
Replace (complete file) or update (partial file)

Implementation

A product feed in code

# A stock-out and a sale price between scheduled feed runs
curl -X POST "https://graph.facebook.com/v26.0/{CATALOG_ID}/items_batch" \
-H "Authorization: Bearer {ACCESS_TOKEN}" \
-H "Content-Type: application/json" \
-d '{
"item_type": "PRODUCT_ITEM",
"requests": [
{ "method": "UPDATE",
"data": { "id": "CUSHION-IKAT-BLU", "availability": "out of stock" } },
{ "method": "UPDATE",
"data": { "id": "DIYA-BRASS-SET4", "sale_price": "1099.00 INR" } }
]
}'
# → {"handles":["AczS7Pqp..."],"validation_status":[]}
# An empty handles list means nothing was ingested: read validation_status
# Processing is asynchronous: poll the handle for status and per-item errors
curl "https://graph.facebook.com/v26.0/{CATALOG_ID}/check_batch_request_status?handle={HANDLE}" \
-H "Authorization: Bearer {ACCESS_TOKEN}"

The id in data is the same value as the feed's id column and WhatsApp's product_retailer_id. Only the fields you send are changed.

Failure modes

Common mistakes with a product feed

  • Running a partial file as a replace

    A prices-only or changed-items file uploaded as a replace can remove every item it does not list, and product messages break overnight. Use an update run or a supplementary feed for anything less than the full catalogue.

  • IDs that change between exports

    A platform migration or export setting that rewrites id creates new items and orphans the old ones: saved product messages fail and order webhooks carry IDs your warehouse cannot match. Pin id to the SKU.

  • Prices without a currency code

    1299 or Rs. 1,299 does not parse; 1299.00 INR does. Use a dot for decimals, no thousands separators, and the same format for sale_price.

  • Image URLs Meta cannot fetch

    Images behind a login, blocked by a firewall or bot rule, or redirecting to an error page fail the item. Serve them from public HTTPS URLs and test them from outside your own network.

  • A schedule slower than your stock

    A weekly feed for fast-moving stock means customers order what sold out days ago. Match the schedule to how often stock changes, and push stock-outs through the batch API in between.

Example: An Indore home-décor store's vanishing catalogue

An Indore home-décor store with about 2,600 SKUs exports a nightly CSV from its store platform, which Commerce Manager fetches at 2 am as a replace feed. During the Diwali sale, prices change several times a day, so the backend also sends sale prices and stock-outs through items_batch as they happen. One morning a third of the catalogue is gone from WhatsApp: someone had uploaded a prices-only file to the main feed as a replace. The team re-runs the full export, moves price files to an update schedule, and adds an alert that fires when a run's item count drops sharply or its error count jumps. (Figures illustrative.)

Design intent

Why does a product feed matter?

A WhatsApp catalogue is only as accurate as its last sync. When the feed lags, customers add sold-out items to carts, see yesterday's prices and order products the business no longer stocks — and each of those carts turns into a support conversation that starts with an apology. A reliable feed with stable IDs, a schedule that matches how fast stock moves and someone watching its errors is what lets product messages and the in-chat cart be trusted, by customers and by the team that packs the orders.

Recommended practice

Best practices for a product feed

  • Generate the feed from the same database your checkout uses, not from a spreadsheet someone edits by hand.
  • Keep one row per purchasable variant and group variants with item_group_id.
  • Alert when a scheduled run fails or its item count drops sharply, not only when someone notices missing products.
  • Mark sold-out items out of stock instead of deleting them, so their IDs and links keep working — and a back-in-stock alert can fire the moment the feed flips them back.
  • Keep products the WhatsApp Commerce Policy does not allow out of the feed, rather than waiting for them to be rejected.

Product Feed FAQs

What is the difference between a product feed and a catalogue?+
The catalogue is the set of items stored in Commerce Manager; a product feed is one way of filling and updating it. A catalogue can also be edited by hand, synced from an e-commerce platform or updated through the Catalog Batch API.
How often should a product feed update?+
At least daily for most stores, and hourly when stock or prices change during the day. Between runs, push urgent stock-outs and price changes through the Catalog Batch API.
Why are items missing from my WhatsApp catalogue after a feed run?+
Usually because of upload errors or policy rejections. Check the run's errors and warnings: missing required fields, prices that do not parse, unreachable images or a partial file run as a replace are the common causes, and rejected items stay hidden.
Does a product feed change the product_retailer_id?+
Only if its id column changes. The feed's id is the retailer ID WhatsApp uses, so keeping a stable SKU there keeps product messages and order webhooks working.

See InfiQ pricing

Put Product Feed to work

InfiQ is an official Meta Business Partner. Start a 7-day free trial — no card needed — and see this running on your own number.