WhatsAppCatalogWooCommerceShopifyRetail

How to Sync an External WhatsApp Catalog

ProfilePilot Team | Aug 28, 2026 | 10 min read

Connect WooCommerce, Shopify, Magento, eSolve, or a GMC/Meta product feed so ProfilePilot mirrors products for chat, Flows, and the kitchen queue.

Step 1: Why ProfilePilot mirrors your catalog

WhatsApp chat and Flows data_exchange must respond within Meta’s 15 second SLA. ProfilePilot therefore never calls WooCommerce/Shopify on every customer message.

Instead:

``` External store → scheduled sync → whatsapp_products → chat / Flows / kitchen ```

  • Cron runs every 30 minutes for due sources (`/api/cron/whatsapp-catalog-sync`).
  • Sync now on the Catalog tab runs a full manual ingest.
  • Test connection validates credentials and fetches a sample — it does not replace a full sync.

Manual rows on Products (`sync_managed = false`) are untouched by sync. Synced rows get `catalog_source_id` and can be auto-disabled when they disappear from the feed (stale count in ingest logs).

Step 2: Choose a source type

Open WhatsApp Orders → Catalog (retail mode).

| Source | You need | | --- | --- | | WooCommerce | Store URL + REST consumer key/secret | | Shopify | Shop domain + Admin API access token | | Magento | Base URL + integration token | | eSolve | API base + credentials per your deployment | | GMC / Meta feed | Public HTTPS XML/CSV feed URL (Merchant Center shape) | | Generic REST | JSON product list endpoint + field mapping |

One primary source per org (V1). Legacy org-level feed URLs are migrated to a `gmc_feed` source automatically.

Required mapped fields: SKU (`id`), title, price, availability, image_link (recommended), product_type / category (recommended).

Step 3: Configure, test, and sync

  1. Add or edit the catalog source on the Catalog tab.
  2. Click Test connection — confirm sample products appear and credentials work.
  3. Click Sync now — wait for ingest to finish; check Products for Synced badges and counts.
  4. Review latest ingest run (added/updated/stale/errors).

Tips:

  • WooCommerce: use REST API keys with read access to products.
  • Shopify: custom app token with `read_products`.
  • GMC feed: must be HTTPS and reachable from ProfilePilot servers (no localhost).
  • After changing source, run Sync now before testing Flows — the Flow CATALOG screen reads `whatsapp_products`, not your store API.

Step 5: Troubleshooting

| Symptom | Check | | --- | --- | | 0 products after sync | Test connection errors; API permissions; empty store | | Products in PP but empty Flow dropdown | Wrong org selected; run Sync now; products must be `is_available` | | Stale prices in chat | Wait for cron or Sync now; chat never hits live API | | Manual product disappeared | Only synced SKUs are stale-disabled; manual rows stay | | Duplicate SKUs | SKU is unique per org — dedupe in source system |

Wholesale RESTOCK numbers and B2B pricing are separate roadmap items — B2C catalog sync does not expose wholesale price lists to consumer chat.

Keep learning

See the latest guides, experiments, and rollouts.

Back to Resources