Sell products inside WhatsApp with Catalog Commerce
Meta's multi-product carousel is the most underused message type on WhatsApp. Botline ships it end-to-end — connect your catalog once, AI recommends from it automatically, curate themed drops, broadcast, and track every tap.
What WhatsApp Catalog Commerce is
Meta's multi-product message is a native WhatsApp interactive type that renders as a horizontal carousel of product cards inside the chat. Each card has a title, image, price, and a tap-to-expand detail sheet — and a customer reply with a product flows back into your conversation as a normal text exchange that your AI can pick up.
Multi-product messages are the closest thing WhatsApp has to a shoppable feed. They support up to 30 products per message split across logical sections (e.g. Recommended for you, New arrivals, On sale), they don't require the customer to leave the chat, and they're billed by Meta as marketing-tier conversations.
Botline ships catalog messages as a first-class interactive type alongside Reply Buttons, CTA Buttons, List Pickers, Location Requests, and Contact Cards — six native interactive kinds, all wired into the AI and the broadcast composer with one consistent surface.
Connect your Meta Catalog (one-time setup)
You only do this once per WhatsApp Cloud API number. Open Dashboard → WhatsApp → Catalog and paste the catalog ID from your Meta Business account.
To find the ID:
- Go to business.facebook.com with the same admin account that owns your WhatsApp Business Account.
- Open Commerce → Catalogs in the left rail.
- Pick the catalog you want to use (or create a fresh one with vertical set to ecommerce — see troubleshooting below for why).
- The catalog ID is a 15-16 digit number visible in the URL and in the catalog Settings tab.
Paste the ID into Botline and click Validate & connect. Botline calls the Meta Graph API to verify the catalog exists, has the right vertical, and that your access token has the catalog_management scope. On success the connection card flips to a green status with the catalog name and product count, and a nightly sync cron starts pulling fresh data from Meta into Botline's local cache.
Sync products from Shopify or WooCommerce
If you already have Botline connected to Shopify or WooCommerce, your products are syncing into Botline's local product cache today. Catalog Commerce extends that pipeline: every product Shopify or WooCommerce ships now also gets pushed to your Meta Catalog with a stable retailer_id that ties the two together.
- Shopify tenants: ensure your Shopify products are marked as active and visible on the Online Store sales channel — Meta only ingests active products. The Shopify Facebook & Instagram sales channel feeds the Meta Catalog directly; Botline reads the same data and reuses each product's Shopify ID as the retailer_id.
- WooCommerce tenants: products sync via the WC REST API on connect, then via webhook on every create / update. Botline pushes them to your Meta Catalog using the WC product ID as the retailer_id. Each new product appears in the catalog within minutes of being saved in WC.
The unified wa_catalog_products cache also stores a 1024-dimension Cohere embedding per product for semantic search (next section). If you have an existing catalog with thousands of products, the first sync on connect can take 5-10 minutes to embed everything; the dashboard shows a progress count.
Curate a "drop" — sectioned product list
Open the Interactive Library and click + New interactive → Catalog. The catalog editor lets you build a themed drop the same way you build a list picker:
- Header — a one-line title shown above the carousel ("Mother's Day picks", "New arrivals", "Last call: 50% off").
- Body — 1-2 lines of context. WhatsApp shows this above the cards.
- Footer — small grey disclaimer or sign-off (max 60 chars).
- Sections — group products into logical sections. Each section has a heading and a list of products you drag in from your synced catalog. Up to 30 products total across all sections.
Save the drop with a memorable slug like mothers_day_2026 or flash_sale_50_off. That's the handle the AI uses (next section) and the handle you reference when broadcasting (later section).
Let the AI auto-recommend with <code><catalog></code> and <code><catalog-query></code>
Botline injects a new prompt block into your responder AI that lists every active product slug, every saved catalog drop, and instructions on when to use each. The AI uses two XML-like tags:
<catalog>mothers_day_2026</catalog>— sends a saved catalog drop verbatim. Use this when you have a curated, hand-picked carousel for a known intent.<catalog-query>sensitive skin moisturizer</catalog-query>— semantic search. Botline runs a pgvector cosine search across the catalog with Cohere's 1024-dim embeddings and returns the top 3-5 matching products as a multi-product message on the fly. Use this when the customer's intent is open-ended.
You don't prompt-engineer this. The AI sees both tags in its system prompt with examples; Botline post-processes the output, resolves the tags, and sends the right interactive message. The customer sees a carousel; the AI sees a normal turn in the conversation when they tap a card.
Broadcast a catalog drop to a segmented audience
Open Broadcasts → + New broadcast and pick template kind Catalog drop. The 4-step composer is identical to a regular template broadcast:
- Template — pick the catalog drop you saved in the Interactive Library.
- Audience — filter active conversations (tags, recency, status, assigned agent) or upload an E.164 CSV.
- Schedule — send now or pick a date and time in your tenant timezone.
- Review — final summary with audience size, scheduled time, and an estimated cost preflight (catalog messages bill at the marketing-tier conversation rate per recipient).
Catalog drops respect the same quality-rating guardrails as regular marketing broadcasts — if your number slips to Yellow you get a soft warning before sending; if it slips to Red, catalog drops are blocked outright until your rating recovers (24-72h of clean behaviour).
Track taps and replies per product
Every catalog send lands on a delivery dashboard with the same sent / delivered / read / replied counters as a regular broadcast — plus a per-product tap breakdown. You see which products got the most attention, which got the most reply intent, and which were ignored. The data feeds back into your next drop's curation.
Aggregated across the platform: superadmins can monitor catalog spend in the admin WA Spend tab, which now has a Catalog column alongside Marketing, Utility, and Service buckets. Catalog conversations are billed by Meta as marketing-tier — the same per-country rate as a regular Marketing template broadcast.
Cost preflight — what you pay Meta
The Review step in the broadcast composer always shows an estimated cost in your tenant currency before you confirm. Two things to remember:
- Catalog messages are billed by Meta as marketing-tier conversations, not as a separate "catalog" rate. Per-country rates apply (a US recipient costs more than a Pakistani recipient).
- A "conversation" is a 24-hour window — once you open one with a catalog message, every reply within those 24 hours is free. So a drop that triggers 200 replies costs the same as a silent one.
You pay Meta directly through your Cloud API payment method. Botline charges nothing extra on top — Catalog Commerce is included on Pro and Enterprise plans.
Troubleshoot common issues
Most issues during catalog setup fall into one of four buckets. Each has a fast fix:
- "No products mapped" — your Shopify or WooCommerce product hasn't been pushed to the Meta Catalog yet. Open the product in Shopify or WC, confirm it's active, then trigger a manual Resync from the Catalog page in Botline. Shopify products specifically need to be on the Online Store sales channel for Meta to ingest them.
- retailer_id mismatch — the local Botline cache and the Meta Catalog disagree on a product's retailer_id. This usually happens after a manual edit in Shopify or WooCommerce. Fix the retailer_id in the source (it should match the Shopify or WC product ID), then click Resync on the Catalog page. The dashboard surfaces mismatched products in a yellow warning banner.
- Catalog wrong vertical — Meta supports several catalog verticals (commerce_offers, hotels, flights, ecommerce). Catalog Commerce on WhatsApp requires ecommerce. If your catalog was created with the wrong vertical, you cannot change it after the fact — create a fresh catalog with vertical ecommerce in business.facebook.com and reconnect it in Botline.
- "Catalog not found" on connect — your Meta access token doesn't include the catalog_management scope. Re-authorize the Cloud API connection from Integrations; the new authorization flow requests the scope automatically. Tokens issued before May 2026 don't have it by default.
If a catalog drop is failing to send for a specific recipient, check the Broadcasts page — Meta returns a per-recipient error code that Botline surfaces inline (most common: "Recipient does not support multi-product messages" for very old WhatsApp clients on feature phones).
What's next
Catalog Commerce composes naturally with the rest of Botline:
- Pair a catalog drop with the broadcast composer — author the drop once in the Interactive Library, ship it to a segmented audience, track replies per product.
- The AI uses catalog messages alongside the rest of the interactive library — Reply Buttons for short choices, List Pickers for service menus, Catalog for "show me what you have".
- If you haven't connected Cloud API yet, follow the Cloud API connection guide first.
Open Catalog, paste your catalog ID, and the AI will be recommending products from your synced store before lunch.