Use the “Question” step in your WhatsApp Messaging flows to collect information from your contacts. You can use a series of question steps to collect information such as contact information, preferences, interests, and more. This information is then saved as a step variable that you can reference throughout the rest of the flow.
Take note
Answers are not saved to contact records and are deleted once a contact completes a flow. To save any information gathered through a question step to a contact record, use the “Contact update” step.
Configure the “Question” step
- Click WhatsApp > Messaging Flows on the left menu.
- Edit or create a new Messaging Flow.
- If editing a flow, click a flow > Update > Steps. Click a node (+) in the builder where you want to place the action. A modal window will appear. Click the "Question" option, then click the “Add” button
- If creating a new flow, a modal window will appear in the Flow builder. Click the "Question" option, then click the “Add” button
- In the “Question” modal that appears:
- Click the pencil icon and give your step a name. We recommend using unique names that are short and descriptive
- Type the question you want to ask in the field provided. Note that you can personalize this question by clicking the lightning bolt and selecting an option
- Choose from one of the following answer types:
- Free text
- Single option
- Number
- Location
- URL
- File
- Document
- Image
- Video
- Phone
- Date
- Any message
- Provide an answer validation message
- Click the optional toggles to turn them “On”:
- Go to another step if the contact doesn’t answer the question correctly
- Go to another step if the contact doesn’t answer the question in a certain period of time
- Do something if the message fails to send
About the different answer types
We validate each answer type, and each has its own configuration options.
Free text
This option lets contacts type their response, and we check that their answer is in text form. If the answer isn’t text, the system sends a validation message asking the contact to reply with text.
Additional configuration options include:
- “Group multiple messages as final answer?” toggle
Turning this option on provides the contact with a waiting window to send multiple messages, which will be grouped together as a single answer. The waiting window is defined in the "Minutes to wait from last message" field. - “Minutes to wait from last message” field
Provide a wait time using minutes. Contacts wait in this step until the number of minutes you set before we consider the question answered. - “Answer validation message” field
If the contact doesn’t
Single option
This lets contacts select a single answer from a list of options. You can choose to show the answer options:
- Buttons
Options appear as interactive buttons. You can have up to three options. Each option has a 20-character limit. If you need more characters, use the Emoji or Numbers option instead.
Additional configuration options include the “Use a variable as a data source for options?” toggle. Clicking this “on” lets you select a variable as a data source for options. You can choose which properties will be used for values and titles - List of options
Response options appear as a dropdown list. You can have up to ten response options. Each option title has a 20-character limit. An additional description can be added to each option. Descriptions have 65-character limits. If you need more characters, use the Emoji or Numbers option instead.
Additional configuration steps include:- “Open list button” text - This text appears at the bottom of your message. Contacts can click this text to see the list of options to choose from
- “Use a variable as a data source for options?” toggle - Clicking this “on” lets you select a variable as a data source for options. You can choose which properties will be used for values and titles
- “Which options can users choose from?” field - Type in one of the answer options a contact can choose. Note that you can add optional description text. To add another option, click the “+ Add option” button
- Emojis
Options are displayed as a text-based list using number emojis. For example, 1️⃣, 2️⃣, 3️⃣ . This option lets you send an unlimited number of selections that a contact can choose from.
For additional configuration, type the answer option into the field provided. To add another option, click “+ Add option. - Numbers
Options are displayed as an ordered, text-based numerical list. For example, 1, 2, 3. This option lets you send an unlimited number of selections that a contact can choose from. In this case, the contact would select the number corresponding to the option.
For additional configuration, type the answer option into the field provided. To add another option, click “+ Add option.”
Number
This lets contacts type a number into the field. For example, their age. By default, the number question only allows integers.
Additional configuration steps include:
- “Allow decimal in answers?” toggle - clicking this toggle lets contact submit a number with a decimal
- “Limit answers in a specific range?” toggle - clicking this toggle lets you set a range for minimum and maximum values. If a user sends a number outside of the range, a validation message will be sent
Location
Validation ensures that the system receives a location and saves its latitude and longitude.
URL
Validates that the user sends a valid URL, including a top-level domain (e.g., .com, .io, or .mx).
Validates that the user sends a valid domain address, including an @ symbol and a top-level domain (e.g., .com, .io, or .mx).
File
Validates that the contact uploads a file in any of these formats: .pdf, .jpg, .png, .mp4.
Document
Validates that the contact uploads a .pdf file.
Image
Validates that the contact uploads a .jpg or .png file.
Video
Validates that the contact uploads an .mpg4 file.
Phone
This lets contacts submit their phone number.
Validates that the phone number contains 10+ digits and starts with a “+” symbol.
You can set a default country code for the phone number. If the user sends a number without a country code, the system will add the default country code to the beginning of the number and check that it has 10 digits.
Date
Validates that the contact sends a date. For example, their birth or anniversary date. Accepted date formats include YYYY-MM-DD and DD de MMMM de YYYY (e.g., 01 de Enero de 2000)
Any Message
This lets contacts answer the question using any of the answer options listed above.
Dynamic options - “Use a variable as a data source for options?” toggle
Dynamic options are available with the “Single option” answer format for the list and button choices.
You may provide a list of answer options with variable content. This content is retrieved from an external source, such as an API.
One use case is if you have a menu that retrieves a contact’s order history and you want to use this information to create a list of options. You can turn on this toggle to retrieve the list of options from a webhook.
To use this feature, you need to configure an ID for the options and which label will be shown. In addition, the options must be a list of elements. For example: [{name: "Pikachu", value: 1}, {name: "Bulbasaur", value: 2}, ...]
About answer validation messages
You can customize the validation message for each question step. The system sends this message when the contact’s response does not match the expected answer.
“Go to another step if the user doesn't answer the question correctly” toggle
Setting this toggle to “on” lets you send a contact to another step in your flow if they don’t answer the question correctly. With this toggle, you can set the number of answer attempts each contact can have before moving to another step.
When this toggle is on, two new branches will appear in your flow: one for contacts who answered (“Answer” branch) and the other for contacts who exceeded their answer attempt limit (“Failed attempts” branch).
With this option, you can add steps under the “Failed attempts” branch such as sending a message to the contact asking them if they need help before sending them back to the “Question” step. Or you can redirect the contact to a live agent if necessary.
“Go to another step if the user doesn’t answer the question within a certain period of time” toggle
Setting this toggle to “on” lets you send the contact to another step in your flow if they don’t respond to your question within the timeframe you set.
When this toggle is on, two new branches will appear in your flow: one for contacts who answered (“Answer” branch) and the other for contacts to timed out (“Failed attempts” branch).
Note that if you have the “Go to another step if the user doesn’t answer the questions correctly” toggle set to “on,” only the “Timeout” branch will appear.
Additional configuration options for this setting includes:
- Setting a response time window
Enter a number and select if it should correlate to minutes, hours, or days. Note that if the wait period exceeds 24 hours, you need to use a “Template” step to continue the conversation - “Only continue within a specific schedule” toggle
Setting this to “on” lets you choose either your account’s working hours or custom hours
“Do something else if message fails to send?” toggle
Setting this toggle to “On” creates a new “Failed to send” branch in your flow. Here you can add additional steps that the contact can go through.
Using answers in your flow
By default, each question step saves the contact’s answer in a flow variable. This variable is deleted after the flow finishes.
However, you can still use it later on in the flow by selecting it from the variable dropdown and clicking the one with the question step name. This is useful if you want to use the answer on a message step or a webhook step, but don’t want to save it to the contact, and if you do want to save it on the contact, use the Contact Update step to save information for this contact between flows.