Single-product messages | Developer Documentation
Single-product messages
Updated: Mar 3, 2026
Single-Product Messages are interactive messages that display a single product from your catalog, allowing customers to view product details, add the item to a cart, and send an order — all within WhatsApp.
Single-Product message example:
Product Detail Page example:


Overview
Customers that receive Single-Product Messages can perform 3 main actions:
If your customer has multiple devices linked to their account, Single-Product Messages will be synced between devices. However, the shopping cart is local to each specific device. See Shopping cart experience for details.
Currently, Single-Product Messages can be received on the following platforms:
If the customer’s app version does not support Single-Product Messages, they will instead receive a message explaining that they were unable to receive a message because they are using an outdated version of WhatsApp. You also receive a webhook notification indicating the message was unable to be delivered due to the customer using an outdated version of WhatsApp.
Expected behavior
Single-Product Messages can be:
Single-Product Messages cannot be:
Use cases
Single-Product Messages are best for guiding customers to one specific item from your inventory, offering quick responses from a limited set of options, such as:
Single-Product Messages can also be used as part of a human agent flow. However, you need to build the tooling to allow the human agent to generate a Single-Product Message in thread.
Why you should use them
Single-Product Messages lend themselves best to user experiences that are simple and personalized, where it’s a better experience to guide the customer to a specific item most relevant to them, rather than browsing your full inventory.
No templates
Interactive messages do not require templates or pre-approvals. They are generated in real-time and will always reflect the latest item details, pricing and stock levels from your inventory.
Send a single-product message
Before sending product messages, follow the get started best suited for your needs:
All API calls mentioned in this guide must be authenticated with an access token. You can authenticate your API calls with the access token generated in the App Dashboard > WhatsApp > API Setup panel. If you are a solution provider, you must authenticate with an access token with the whatsapp_business_messaging permission.
Step 1: Assemble the interactive object
To send a Single-Product Message, assemble an
interactive object of type product with the following components:| Required Components | Optional Components |
|---|---|
See Messages, Interactive Object for full information. By the end of the process, the interactive object should look something like this:
{
"messaging_product": "whatsapp",
"recipient_type": "individual",
"to": "PHONE_NUMBER",
"type": "interactive",
"interactive": {
"type": "product",
"body": {
"text": "BODY_TEXT"
},
"footer": {
"text": "FOOTER_TEXT"
},
"action": {
"catalog_id": "CATALOG_ID",
"product_retailer_id": "ID_TEST_ITEM_1"
}
}
}If none of the items provided in the API call matches a product from your product catalog, an error message is sent and the Single-Product Message is not sent to the user.
Step 2: Add common message parameters
Once the interactive object is complete, append the other parameters that make a message:
recipient_type, to, messaging_product, and type. Remember to set the type to interactive.curl -X POST https://graph.facebook.com/v25.0/FROM_PHONE_NUMBER/messages \
-H 'Authorization: Bearer ACCESS_TOKEN' \
- d '{
"messaging_product": "whatsapp",
"recipient_type": "individual",
"to": "PHONE_NUMBER",
"type": "interactive",
"interactive": {
// INTERACTIVE OBJECT GOES HERE
}'
For all available parameters, see Reference, Messages.
Step 3: Send a request to the messages endpoint
Send a POST request to the
/PHONE_NUMBER_ID/messages endpoint with the JSON object you have assembled in steps 1 and 2. If your message is sent successfully, you get the following response:{
"messaging_product": "whatsapp",
"contacts": [{
"input": "PHONE_NUMBER",
"wa_id": "WHATSAPP_ID",
}]
"messages": [{
"id": "wamid.ID",
}]
}
No comments to display
No comments to display