Product Catalogs
Product Catalogs let you create and maintain WhatsApp Product Catalogs from inside Whatomate. Every catalog and product operation is a live round-trip to the Meta Graph API (Commerce Manager), with a local mirror kept in Whatomate's database for fast listing and display.
How it works
Section titled “How it works”Whatomate keeps a thin local mirror of your Meta catalogs and products:
- Catalogs store
meta_catalog_id,name, the owningwhatsapp_account, andis_active. - Products store
meta_product_id,name,description,price(in cents, an integer),currency(defaultUSD),url,image_url, andretailer_id(your SKU).
Because the source of truth is Meta, mutating operations call Meta first and persist locally on success:
| Operation | Meta call, then local |
|---|---|
| Create catalog | Creates the catalog in Meta, stores the returned meta_catalog_id. |
| Delete catalog | Deletes from Meta, then removes the catalog and its products locally. |
| Create / update / delete product | Round-trips to Meta, then mirrors the change locally. |
Managing catalogs
Section titled “Managing catalogs”Catalogs are tied to a WhatsApp account by the account's name (the whatsapp_account field).
GET /api/catalogs— list catalogs (optionally filtered bywhatsapp_account). Each entry includes a liveproduct_count.POST /api/catalogs— create a catalog ({ "name": "...", "whatsapp_account": "..." }).GET /api/catalogs/{id}— fetch one catalog with its products preloaded.DELETE /api/catalogs/{id}— delete the catalog (and its products).
Syncing from Meta
Section titled “Syncing from Meta”If catalogs already exist in Commerce Manager, pull them in instead of recreating:
POST /api/catalogs/sync{ "whatsapp_account": "Support Line" }Whatomate lists the account's catalogs from Meta and upserts by meta_catalog_id — new catalogs are created, existing ones have their name refreshed. The response reports how many were synced:
{ "status": "success", "data": { "message": "Catalogs synced", "synced": 3, "total": 3 } }Managing products
Section titled “Managing products”Products live under a catalog:
GET /api/catalogs/{id}/products— list products in a catalog.POST /api/catalogs/{id}/products— create a product.nameand a positiveprice(in cents) are required;currencydefaults toUSD.GET /api/products/{id}— fetch one product.PUT /api/products/{id}— update a product.DELETE /api/products/{id}— delete a product.
Sending products (not yet supported)
Section titled “Sending products (not yet supported)”Access
Section titled “Access”Catalog endpoints are org-scoped and require an authenticated session or API key; every query is filtered to the caller's organization. There is no separate catalogs permission resource — access is governed by authentication and org membership rather than a dedicated resource:action grant.
Full request/response schemas are in the API Reference → Catalogs.