Updates
Added the ability to send WhatsApp Flows via API in WhatsApp messages without a template.
Now you can use WhatsApp Flows to automate recipient interaction scenarios, collect more recipient data, automate sales, offer products or services and more. Learn more about WhatsApp Flows in the Meta documentation.
API Changes
Added new whatsappContent
parameters when sending messages to the WhatsApp channel:
Parameter | Data type | Character | Description |
flowId | integer | Required, if contentType = FLOW | The Flow ID assigned in WhatsApp Manager at the time the Flow is created. |
screen | string | Optional | The ID of the first screen displayed in Flow. |
caption | string | Required, if contentType = FLOW | The text of the button that starts Flow when clicked. |
action | string | Optional | The Flow interaction type. Possible values: • navigate — Flow doesn’t make a request to the endpoint. The default value.• data_exchange — Flow makes a request to the endpoint.See the Meta instructions for how to create surveys with WhatsApp Flows. |
A message with the WhatsApp Flows function:
{ "requestId": "test-001", "cascadeId": "3", "subscriberFilter": { "address": "35000000000", "type": "PHONE" }, "content": { "whatsappContent": { "contentType": "FLOW", "caption": "Buy", "text": "Buy discount products", "flowId": 3779320943795899, "action": "navigate" } } }
An example of callback for incoming messages with the FLOW
value in the messageContent.type
parameter:
[ { "id": 101, "subject": "test_subject_WA", "subjectId": 50520, "subscriber": { "id": 4633047, "identifier": "79997776655" }, "userInfo": { "userName": "Alex Adamson", "firstName": null, "lastName": null, "avatarUrl": null }, "messageContent": { "type": "FLOW", "attachment": null, "location": null, "referral": null, "caption": null, "text": "{\"flow_token\":\"example\"}", "payload": null, "story": null, "items": null, "contact": null, "product": null, "catalog": null, "order": null }, "receivedAt": "2025-03-25T12:12:12Z", "replyOutMessageId": null, "replyOutMessageExternalRequestId": null, "replyInMessageId": null } ]
See the API documentation for more information: