# Catalog

## Overview

The Catalog lets a workspace manage a product catalog and send products straight into WhatsApp chats — as a single product card, a multi-product list, a carousel, or a plain catalog link. Find it under More → WhatsApp Catalog (also linked from the Integrations page); it's admin-only.

Catalog is its own area — deliberately not buried inside the Store. It has four tabs:

Tab | Purpose
--- | ---
Setup | Connect a Meta Commerce Catalog, sync products to Meta, manage commerce and automation settings, and see the catalog health score.
Send | Send products to any phone number (no existing conversation required).
Collections | Save reusable product groups and send any of them as a multi-product message in one click.
Activity | A log of recent catalog sends.

> Works on either engine: everything works on the Unofficial API using WhatsApp carousels with no Meta setup at all. Linking a Meta Commerce Catalog is optional and only adds value for verified WhatsApp Cloud API (WABA) numbers — it powers the official catalog button on your business profile, the cart, and order notifications.

> Plan-gated: the Catalog is part of the WhatsApp Storefront plan feature. On a plan without it, the page shows an upgrade prompt and you can't add or edit products. Platform admins are exempt.

## Prerequisites

What you need depends on how you intend to send:

Goal | Requirement
--- | ---
Send a catalog at all | At least one connected WhatsApp device. Pair one on the Devices page — an Unofficial API QR pair (free) or a Meta-verified WABA number.
Carousel / list / single-product sends | A connected device only. WhatsApp carousels are sent through the Unofficial API with no Meta account.
Meta catalog button, cart, order notifications | A Meta Commerce Catalog plus a verified WABA, connected on the Setup tab (see below).
Products to send | Products with status Active (and in stock, for the picker). Manage them under the Store.

The Setup tab adapts automatically to one of three situations:

Situation | What you see
--- | ---
No device | A "Connect a device first" prompt linking to the Devices page.
Unofficial API device, no Meta | A "Ready to send" card — carousel sends work immediately. Linking Meta is offered under an optional advanced section, plus a connected-devices summary and quick stats (products, shops, recent sends).
Meta catalog connected | The full sync screen: Total / Synced / Pending / Failed counters, sync controls, commerce settings, and the products table with each row's Meta status.

## Connecting a Meta Business Catalog

Linking Meta is optional. You only need it for the official catalog button, cart, and order webhook on a verified WABA number.

### Where to get the credentials

- Catalog ID — in Meta Commerce Manager, open your catalog; the numeric ID is in the URL / catalog settings.
- WABA ID and Phone number ID — from your WhatsApp Business Account in Meta Business settings / the WhatsApp Manager (optional).
- Access token — a Meta access token with catalog permissions (it starts with `EAA`) if you connect directly to Meta, or your 360dialog API key if you connect through 360dialog.

### Steps

1. On the Setup tab, open the connect form. It's the main form when nothing is connected yet, or sits under the Optional · advanced section once an Unofficial API device is ready.
2. Fill in the fields below.
3. Click Connect & verify. WaDesk immediately checks the catalog with Meta.

Field | Required | Notes
--- | --- | ---
Provider | Yes | Meta Cloud (connect directly to Meta) or 360dialog (connect through the 360dialog provider).
Catalog ID | Yes | The numeric Meta catalog ID (max 64 chars).
Catalog name | No | A friendly label shown on screen.
WABA ID | No | WhatsApp Business Account ID.
Phone number ID | No | The connected number's ID.
Access token / API key | Yes | Your Meta access token or 360dialog API key (20–4096 characters). Stored securely, never shown back, never logged.

> Verification is instant. If the credentials are wrong, the connection is removed straight away so you can retry, and the error is shown right on the access-token field. One connection is kept per provider, updated whenever you reconnect.

> Disconnecting removes the stored credentials and clears each product's sync status so WaDesk stops syncing. Products are not deleted from Meta — they stay in your Meta catalog; WaDesk simply stops tracking them. The button asks you to confirm.

## Adding & managing products

Products are managed under the Store (the Setup tab links there via Manage products). The same product works for every engine, and is only copied to Meta when you sync. Open Add product to create one.

### Field reference

Field | Required | Limit / rule | Meaning
--- | --- | --- | ---
Name | Yes | Max 191 | Product title. Also forms the product's web link.
SKU | No | Max 96 | Your own product code. When set, Meta uses it as the product's unique ID.
Short description | No | Max 2000 | Shown in catalog cards and WhatsApp share links.
Full description | No | Max 65535 | The product-page body (basic formatting allowed).
Price | Yes | 0–1,000,000 | The selling price.
Compare-at price | No | 0–1,000,000 | Optional "was" price, shown struck through when higher than the price.
Currency | Yes | One of 21 codes | INR, USD, EUR, GBP, AED, KES, NGN, ZAR, BRL, MXN, CRC, PHP, IDR, SGD, MYR, THB, VND, EGP, PKR, BDT, LKR.
Image (upload) | No | Image, max 4 MB | Main image.
Image URL | No | Link, max 1024 | Instead of uploading, paste a direct image link. Square (1:1) at 1024×1024 px or larger recommended.
Gallery URLs | No | Up to 12 links | Extra images for the product detail page (duplicates removed, capped at 12).
Available for sale (in stock) | No | On / off (default on) | In-stock switch. Off hides the product from the storefront and the send picker.
Stock qty | No | 0–1,000,000 | Inventory count (blank = unlimited).
Weight (grams) | No | 0–1,000,000 | Used for shipping calculations.
Category | No | Max 96 | Free-text category (with suggestions). Groups the send picker and the storefront filter.
Tags | No | Max 1024 | Comma-separated; tidied into a unique list.
Status | No | Active / Draft / Archived (default Active) | Active = live, Draft = hidden but editable, Archived = hidden but kept in records.
Sort order | No | 0–9999 | Lower numbers appear first.

### How availability is decided

Meta needs to know if each item is available. WaDesk works it out automatically (unless you override it): Active with stock above zero → in stock; sold out → out of stock; any non-Active status → discontinued.

> Never change a SKU after the first sync. Once a product is synced, Meta uses its SKU (or an automatic fallback code when you have no SKU) as the product's permanent identity. Changing it makes Meta treat the item as a brand-new product.

## Syncing products to Meta

When a Meta catalog is connected, the Setup tab shows four live counters — Total, Synced, Pending, Failed — and a products table with each row's Meta status. Syncing happens right away, so you see the results immediately.

### The three controls

1. Sync to Meta — sends products to Meta in batches of up to 1000 at a time (Meta's limit). It keeps going automatically until everything pending or failed has been sent, showing a progress bar and a running log. By default it only sends products that are unsynced or previously failed; already-synced products are skipped.
2. Sync (per row) — the Sync link on a single product row sends just that one product.
3. Refresh status — checks Meta for results and flips pending rows to synced or failed. Run this after a sync; the page reloads when any statuses change.

### Per-product sync status

Status | Meaning
--- | ---
Unsynced | Never sent to Meta (or the sync status was cleared when you disconnected).
Pending | Sent to Meta and awaiting confirmation.
Synced | Meta confirmed it went through. Stamped with the sync time.
Failed | Meta rejected the item, or the request errored. The reason is shown under the row.

> Each synced product needs a public web link. When a product has no link of its own, WaDesk uses your storefront's public address plus the product. Only products with status Active can be synced.

## Automatic re-sync

Once a Meta catalog is connected, WaDesk keeps it in step with your products automatically — you no longer have to remember to click Sync to Meta after every change. Whenever a product's price, stock, image, name, description, brand, category, or status changes — from a storefront edit, a Shopify or WooCommerce sync, anywhere — just that product is sent to Meta and marked Pending; the next status check flips it to Synced.

- Only meaningful changes trigger it — editing the internal sync fields alone never causes a loop.
- Bulk imports are batched, not sent one at a time: a large Shopify/Woo import is settled in a single pass.
- Never blocks a save — if a sync hiccups, it's logged and the product still saves. Workspaces with no linked catalog do nothing.

### Scheduled sweep (optional)

As a safety net, WaDesk can run a periodic background sweep that re-sends anything the automatic sync missed and settles any pending items across every connected catalog. The automatic sync already keeps catalogs current, so this is only an extra backstop. Ask your administrator to enable the scheduled sweep if you want belt-and-braces.

## Catalog health score

The Setup tab shows a health score (0–100) — the share of your products that can actually sell. A product Meta will hide (and therefore a lost sale) is one that is missing an image, missing a price, or whose last sync failed. The card breaks the problem down by type and lists the affected products with a one-click Fix → link straight to each product's editor.

Signal | Why it matters
--- | ---
No image | Meta rejects/hides imageless products — buyers never see them.
No price (0 or blank) | Unsellable; hidden from the catalog.
Sync error | Meta rejected the item; fix the cause and re-sync.

A score of 100 with the message “Every product is catalog-ready” means nothing needs attention.

## Commerce settings

Below the sync controls, two commerce toggles are pushed to Meta when you save:

Setting | Effect
--- | ---
Show catalog in business profile | Adds the "Catalog" button to your WhatsApp Business profile.
Enable cart | Lets buyers add multiple products before sending the order.

> Both default to on when you first connect the catalog. Saving pushes the change to Meta; if Meta rejects it, the error is shown inline.

## Automation: order acknowledgement & concierge

The Setup tab has an Automation card that turns the catalog into a self-serving sales channel. Both features are saved instantly without any call to Meta.

### Cart-order acknowledgement

When a buyer sends a WhatsApp cart (a catalog order), Meta records it but doesn't reply — leaving the buyer in silence, which kills conversion. With acknowledgement on (default), WaDesk instantly replies with an order-received message: a summary, item count, total, and an optional payment link. It uses an approved template if you've set one, otherwise plain text — and it works on either engine.

Setting | Effect
--- | ---
Auto-reply when a customer sends a cart | Main on/off switch (default on).
Payment link base (optional) | WaDesk adds the order number to the end; leave blank to just confirm receipt.

### Catalog concierge

When a customer types a product question — e.g. “red shoes under 2000” — the concierge works out what they mean (keywords plus price range), searches your products, and replies automatically with a matching multi-product message. It's off by default, fires only on genuine product questions, waits 30 seconds between replies to the same person to prevent floods, and stays quiet when nothing matches unless you opt in.

Setting | Effect
--- | ---
Catalog concierge | Turn on/off (default off).
Reply header | Heading on the auto-reply (e.g. “Here’s what I found”).
Max products | How many matches to show (1–30).
Reply when nothing matches | Off by default; turn on to send a “no match” note.

> The concierge searches name, category, brand and description, shows the strongest matches first, and respects the price range (“under”, “over”, “between X and Y”). It needs a connected catalog to send the multi-product message.

## Collections (product sets)

The Collections tab lets you save a named, reusable group of products once — e.g. Summer Sale or Best Sellers — then send it as a multi-product message whenever you like, without re-picking products every time.

- Create / edit / delete collections with a searchable product picker (up to 30 products, WhatsApp's limit for a multi-product message).
- Each collection shows its product thumbnails and count.
- Send a collection to any phone number right from the card — it works the same way as the Send tab's product-list format.
- The latest product details are pulled in at send time, so a product edited or removed later stays consistent.

> Collections belong to your workspace, and the products send in the order you added them.

## Sending products to a customer

The Send tab is a four-step form for sending products to people who haven't necessarily messaged you yet (within WhatsApp's rules). It works like the campaign builder, so the steps will feel familiar.

1. Recipients — pick from contact groups, individual contacts, or manual numbers (paste one per line, comma, or semicolon; digits only, at least 8). A live counter shows the de-duplicated total. The limit is 500 recipients per send.
2. Format & sender — choose the send format (below) and which connected device to send from (or let WaDesk pick the active one). You can also pick a shop for context.
3. Products — products are shown grouped by category for the chosen shop. Search and tick the ones you want. Switching the shop updates the picker instantly.
4. Message & send — add an optional message (up to 1024 characters), an optional header and footer (up to 60 each), and send. A side panel summarises recipients, products, and format.

### Send formats

Format | What the customer sees | Products
--- | --- | ---
Single product | One rich product card. | 1 product
Product list / carousel | A scrollable multi-product list or carousel. | Up to 30 products
Catalog link | A plain text message with a link to your catalog — no product selection needed. | —

### How it works

For each recipient, WaDesk finds or starts a conversation, so the send shows up afterwards in the Team Inbox under that chat and is logged on the Activity tab. The send goes out through whichever engine is connected (Cloud API or Unofficial API). Afterwards you see how many sent, how many failed, and the first few error reasons.

> 24-hour window: the single product and product list formats require the buyer to have messaged you within the last 24 hours (WhatsApp's customer-service window). The catalog link format is plain text and works anytime. You also need at least one connected device and (for the two product formats) at least one selected product.

## Activity log

The Activity tab lists recent catalog sends for the workspace. It shows the destination number and how long ago each send happened, giving you a quick record of what went out. A shorter version of the same list appears in the Send tab's side panel.

## Troubleshooting

Symptom | Cause & fix
--- | ---
"Connect a device first" on Setup | No connected device. Pair one on the Devices page (free QR or WABA).
Connect & verify fails | Wrong Catalog ID or token. The connection is removed automatically; recheck the ID in Commerce Manager and that the token has catalog permissions, then retry.
Products stuck on Pending | Click Refresh status to check Meta. Meta confirms the batch on its own side after a moment.
A row shows Failed | Read the error shown under the row. Common causes: missing image URL, no public link (set up a storefront), or a Meta policy rejection. Fix and re-sync.
Send returns "no recipients" | None of your sources gave a valid number. Numbers must be digits-only and at least 8 digits; pick a group/contact or paste numbers with country codes.
Send returns "too many" | Over the 500-recipient limit. Split into smaller batches.
Send returns "no products" | The single-product and product-list formats need at least one selected Active product. The catalog link format doesn't.
Product send delivered as nothing | The recipient is outside the 24-hour window. Use the catalog link format, or wait for the customer to message first.
Duplicate product appeared on Meta | A SKU was changed after the first sync. Restore the original SKU; never change it after syncing.