Build Your Questionnaire
The questionnaire is the core of the Chat Form. It defines what the AI will ask, in what order, what answers are acceptable, and when certain questions should appear.
Navigate to Actions → Plugins in the agent sidebar, open or create a Chat Form plugin, and go to the Questions section.
Starting from a Template
Instead of building from scratch, you can start from a predefined template. Available templates:
| Template | Best for |
|---|---|
| Blank | Building a custom form from scratch. |
| Product Feedback | Collecting user feedback on a product or feature. |
| Service Feedback | Gathering satisfaction ratings after a service interaction. |
| Event Registration | Registering attendees with contact and preference details. |
| Book Appointment | Scheduling information with date and time fields. |
| Market Research | Structured surveys with multiple-choice and rating questions. |
| Generate by AI | Describe the form in plain text and let the AI generate the full question set. |
Selecting a template pre-fills the question list. You can edit, reorder, or remove any question after loading it.
Adding and Editing Questions
Each question has the following fields:
| Field | Description |
|---|---|
| Question Text | The prompt the AI presents to the user. Write it as a natural question. |
| Field Name | The internal key used in submissions. Alphanumeric and underscores only, max 20 characters, must be unique across the form. |
| Report Column Title | The column header used when viewing or exporting submissions. |
| Data Type | The expected format of the answer. See the table below. |
| Mandatory | Whether the user must answer this question before the form can be submitted. |
| Validation Rules | Free-text instructions the AI follows when validating the answer. |
| Order | The sequence in which questions are asked. Lower numbers appear first. |
Question Data Types
| Type | Description |
|---|---|
| text | Any free-form text answer. |
| number | Numeric values. The AI parses written numbers (e.g., "five hundred" → 500). |
| date | A calendar date. The AI converts natural language dates to ISO 8601 format. |
| yes_no | A binary yes or no answer. |
| phone_number | An international phone number in +[country code][number] format. |
| website_link | A URL. The AI validates it starts with http:// or https://. |
| An email address. | |
| user_email | Same as email, but the value is also associated with the submitting user's identity for notification purposes. |
| rating | A numeric rating, typically 1–5 or 1–10. Define the scale in the question text or validation rules. |
| multiple_choice | One selection from a predefined list. Requires populating Valid Values. |
| multiple_selection | One or more selections from a predefined list. Requires populating Valid Values. |
| file_upload | One or more file URLs. Enable Allow Multiple to accept more than one file. Files are attached by the user during the conversation and stored automatically. |
Validation Rules
The Validation Rules field accepts a plain-text instruction the AI uses to decide whether an answer is acceptable. You can use this to enforce constraints that the data type alone does not cover.
Examples:
Must be a date in the future.Must be between 1 and 100.Must not contain special characters.Must be one of: Jakarta, Surabaya, Bandung.
If the user's answer fails validation, the AI explains the error and asks for a corrected answer before moving on.
Conditional Logic
Conditional logic hides a question unless a specific condition is met based on an earlier answer. This prevents irrelevant questions from appearing in the conversation.
To add a condition to a question:
- Open the question editor and expand the Condition section.
- Select the Depends on field — the earlier question this condition evaluates.
- Choose an Operator.
- Enter the Value to compare against.
Available Operators
| Operator | Use when |
|---|---|
equals / not_equals | The answer matches or does not match an exact value. |
contains / not_contains | The answer includes or excludes a specific substring. |
starts_with / ends_with | The answer begins or ends with a specific string. |
is_empty / is_not_empty | The field was left blank or has any value. |
greater_than / less_than | Numeric or date comparison. |
greater_than_or_equal / less_than_or_equal | Inclusive numeric or date comparison. |
in_range | The value falls between two numbers or dates. |
before / after | Date comparison — the answer is before or after a given date. |
between | The date falls within a specified range. |
is_one_of / is_not_one_of | The answer is or is not one of a list of values. |
contains_any / not_contains_any | The answer contains at least one of, or none of, a list. |
contains_all | The answer contains every value in a list. |
Combining Multiple Conditions
You can attach sub-conditions to build compound logic:
- AND — All sub-conditions must be true for the question to appear.
- OR — At least one sub-condition must be true.
Sub-conditions can themselves have further nested sub-conditions for complex branching.
Question Order
Drag questions to reorder them. The Order value updates automatically. Conditional logic is always evaluated based on answers to questions that appear earlier in the sequence — a condition that references a later question will never trigger.
Related Pages
- Configure form settings — next step after building questions.
- Chat Form overview — full setup flow.