Skip to contentSkip to navigationSkip to topbar

whatsapp/flows



Overview

overview page anchor

Flows is an in-app, multi-screen experience available on WhatsApp. A business sends a Flow as part of an approved content template. When an end user taps the Flow button, the multi-screen experience opens. Within the Flow, you can include text, images, and several input components. End users can respond with single-choice, multi-choice, toggle, short-text, long-text, and date-picker inputs.

With whatsapp/flows, you pre-define the Flow in WhatsApp and send it through Twilio to use the full WhatsApp functionality for this feature.

(warning)

Flows limitations

Flows isn't designed to transmit HIPAA Eligible Service or PCI data and shouldn't be used in workflows that require HIPAA or PCI compliance.

If you need to transmit sensitive information, use Message Redaction. Message Redaction isn't yet compatible with Studio, Proxy Service, or Functions. Don't send Flows that contain sensitive information through these products or services.

Supported options for end users

supported-options-for-end-users page anchor

WhatsApp


Twilio Demo chat showing a response with a helpful link and notification.
Survey form with questions on finding method and favorite number, includes options and a complete button.

Create a Flow with WhatsApp Manager or programmatically with the Flow API from Meta.

WhatsApp ManagerFlow API
  1. Follow the steps to open WhatsApp Manager(link takes you to an external page).
  2. In the Account Tools menu, click Flows.
  3. Click Create Flow.
  4. Follow the steps to create a new Flow(link takes you to an external page). Record the id of the first screen that you want to display.
  5. To Publish your new Flow, click Publish.
  6. In the Account Tools menu, click Flows.
  7. Copy the Flow ID of the Flow that you've just created.

ParameterTypeRequiredVariable supportDescription
bodystringYesYesText of the templated message that launches the Flow.
Maximum length: 1,024 characters
subtitlestringNoNoOptional subtitle shown in the message footer.
Maximum length: 80 characters
media_urlstringNoYesMedia included in the initial Flow message. Supports .png, .jpeg, .mp4, and .pdf. The domain must be static; the path can be a variable.
typeenumYesNoFlow category.
Valid values:
  • SIGN_UP
  • SIGN_IN
  • APPOINTMENT_BOOKING
  • LEAD_GENERATION
  • CONTACT_US
  • CUSTOMER_SUPPORT
  • SURVEY
  • OTHER
flow_idstringYesNo (approved templates)
Yes (in-session without approval)
Identifier for the Flow in WhatsApp.
flow_tokenstringYesYes (must be a variable)Unique identifier for the specific Flow interaction. Provide a new value for each send request.
flow_first_page_idstringYesYesIdentifier of the first page to display in the Flow interaction.
is_flow_first_page_endpointBooleanNoNoSet to true if an endpoint determines the first page. Defaults to false.

Code examples and responses

code-examples-and-responses page anchor
Content Templates API - Create a WhatsApp Flow TemplateLink to code sample: Content Templates API - Create a WhatsApp Flow Template
1
curl -X POST 'https://content.twilio.com/v1/Content' \
2
-H 'Content-Type: application/json' \
3
-u $TWILIO_ACCOUNT_SID:$TWILIO_AUTH_TOKEN \
4
-d '{
5
"friendly_name": "info_flow",
6
"language": "en","variables": {
7
"1": "abcd1234"
8
},
9
"types": {
10
"whatsapp/flows": {
11
"body": "Please take five minutes to answer this survey",
12
"button_text": "Begin survey",
13
"flow_id": "1232445823264765",
14
"flow_token": "{{1}}",
15
"flow_first_page_id": "QUESTION_ONE"
16
}
17
}
18
}'

Output

1
{
2
"account_sid": "ACXXXXXXXXXXXX",
3
"date_created": "2025-09-12T23:49:53Z",
4
"date_updated": "2025-09-12T23:49:53Z",
5
"friendly_name": "info_flow",
6
"language": "en",
7
"links": {
8
"approval_create": "https://content.twilio.com/v1/Content/HXXXXXXXXXXXXXXXXX/ApprovalRequests/whatsapp",
9
"approval_fetch": "https://content.twilio.com/v1/Content/HXXXXXXXXXXXXXXXXX/ApprovalRequests"
10
},
11
"sid": "HXXXXXXXXXXXXXXXXX",
12
"types": {
13
"whatsapp/flows": {
14
"body": "Please take five minutes to answer this survey",
15
"button_text": "Begin survey",
16
"flow_first_page_id": "QUESTION_ONE",
17
"flow_id": "1232445823264765",
18
"flow_token": "{{1}}",
19
"is_flow_first_page_endpoint": false,
20
"media_url": null,
21
"subtitle": null
22
}
23
},
24
"url": "https://content.twilio.com/v1/Content/HXXXXXXXXXXXXXXXXX",
25
"variables": {
26
"1": "abcd1234"
27
}
28
}

Send your message template

send-your-message-template page anchor

Sending a Flow template is the same process as sending any other content template. For detailed steps, see Send templates created with the Content Template Builder.


Flow-specific webhook fields

flow-specific-webhook-fields page anchor
FieldDescription
InteractiveDataUser-provided information in JSON format.