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
}
]