Skip to main content
product_card_carousel Cards pulled from your catalog.

How it works

Each card is a placeholder for a product: image, name and price come from the catalog at send time, and you pick which product on each dispatch. The asymmetry that catches everyone: Meta requires exactly 2 cards at creation, but accepts up to 10 at send time.

At creation and at send time

Fields in this model

The product card has no text. Sending a body on the card, or a second button, comes back as component of type BODY is required, code 2388045, which does not describe the cause.

Full JSON

Two JSON payloads: one creates the template, and Meta approves it once. The other sends the message, and goes on every dispatch, with that send’s values in the variables marked with braces.

1. Create the template

POST /whatsapp/businesses/{wabaId}/templates — see API reference.

2. Send it once approved

POST /v1/channels/{channelId}/messages — see Send template.

What Meta rejects here

  • A card count other than 2 at creation.
  • Text on the product card.
  • Two buttons on the same card.
  • A label other than the required one on the SPM button: Ver on a pt_BR template, View elsewhere.