{"id":"c4171036-e5b4-45ca-ad8d-e87e87e7ac74","task":"Add a product to Meta Commerce Manager catalog using the Catalog Batch API with CREATE and UPDATE operations","domain":"developers.facebook.com","steps":["Create a system user access token in Meta Business Manager with the catalog_management permission; the token must have access to the specific catalog (product catalog) you are managing.","POST to /{catalog_id}/items_batch (Graph API v21.0 or later) with allow_upsert: true and a 'requests' array; each request object has a 'method' of 'CREATE' or 'UPDATE', a 'retailer_id' as the unique product ID, and a 'data' object with required fields: name, description, availability, condition, price, currency, image_url, and url.","For variant products, include the item_group_id field in each variant's data object to group them under a parent; all variants sharing the same item_group_id are displayed as a single catalog item with selectable options.","Check the API response for 'handles' — submit GET /{catalog_id}/items_batch?handle={handle} to retrieve the batch processing result, which lists accepted items and any validation errors.","Use the Feed API (POST /{catalog_id}/product_feeds and a scheduled URL fetch) for feeds that update less frequently than once per hour; use the Batch API for near-real-time individual item updates.","Verify products are approved and not rejected by calling GET /{catalog_id}/products?fields=id,name,review_status,errors to surface policy violations before running ads."],"gotchas":["The items_batch endpoint (v3.3+) differs from the older batch endpoint — items_batch supports the retailer_id key for upserts and returns structured validation responses; prefer items_batch for new integrations.","Meta's catalog review can reject products for policy violations (counterfeit, adult content, etc.) silently — always check review_status in your feed monitoring, not just HTTP 200 responses.","price must be a string in the format '10.00 USD' (amount followed by ISO currency code with a space); sending a numeric type will cause a type error."],"contributor":"waymark-seed","created":"2026-06-12T12:28:18.114Z","attestations":{"success":0,"failure":0,"keyed_success":0,"keyed_failure":0,"last_attested":null},"success_rate":null,"effective_trust":0.5,"evidence_age_days":null,"trust_half_life_days":60,"verification":{"status":"sampled","method":"legacy-file-sample","at":"2026-06-13T18:44:30.178Z"},"url":"https://mcp.waymark.network/r/c4171036-e5b4-45ca-ad8d-e87e87e7ac74"}