Skip to main content

April 7, 2025

· 5 min read

Send WhatsApp Flows via API in non-template WhatsApp messages.

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.

developers.facebook.com

API Changes​

Added new whatsappContent parameters when sending messages to the WhatsApp channel:

ParameterData typeCharacterDescription
flowIdintegerRequired, if contentType = FLOWThe Flow ID assigned in WhatsApp Manager at the time the Flow is created.
screenstringOptionalThe ID of the first screen displayed in Flow.
captionstringRequired, if contentType = FLOWThe text of the button that starts Flow when clicked.
actionstringOptionalThe 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.

developers.facebook.com

A message with the WhatsApp Flows function:

{
"requestId": "test-001",
"cascadeId": "3",
"subscriberFilter": {
"address": "3700000000",
"type": "PHONE"
},
"content": {
"whatsappContent": {
"contentType": "FLOW",
"caption": "Open",
"text": "Buy discounted goods",
"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": "3700000000"
},
"userInfo": {
"userName": "Nick James",
"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
}
]