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
How to Sync an External WhatsApp Catalog