Skip to content

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.

Whatomate keeps a thin local mirror of your Meta catalogs and products:

  • Catalogs store meta_catalog_id, name, the owning whatsapp_account, and is_active.
  • Products store meta_product_id, name, description, price (in cents, an integer), currency (default USD), url, image_url, and retailer_id (your SKU).

Because the source of truth is Meta, mutating operations call Meta first and persist locally on success:

OperationMeta call, then local
Create catalogCreates the catalog in Meta, stores the returned meta_catalog_id.
Delete catalogDeletes from Meta, then removes the catalog and its products locally.
Create / update / delete productRound-trips to Meta, then mirrors the change locally.

Catalogs are tied to a WhatsApp account by the account's name (the whatsapp_account field).

  • GET /api/catalogs — list catalogs (optionally filtered by whatsapp_account). Each entry includes a live product_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).

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 } }

Products live under a catalog:

  • GET /api/catalogs/{id}/products — list products in a catalog.
  • POST /api/catalogs/{id}/products — create a product. name and a positive price (in cents) are required; currency defaults to USD.
  • GET /api/products/{id} — fetch one product.
  • PUT /api/products/{id} — update a product.
  • DELETE /api/products/{id} — delete a product.

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.