> ## Documentation Index
> Fetch the complete documentation index at: https://rasa.com/docs/llms.txt
> Use this file to discover all available pages before exploring further.

# How to Collect Information

> How your assistant can collect information in Studio.

This guide will teach you how to enable your assistant to gather user data through **Collect** steps.
You’ll learn how to set up slots, create prompts, and validate user inputs, enabling your assistant to handle interactions smoothly and accurately.

### What is a Collect Step?

The collect step helps your assistant gather and store information provided by the user. You define the type of data you want to collect—like a name, email, or date—as a slot, and this step helps you to get the answer you need to set the value.

This guide walks you through setting up a Collect step — from creating slots and designing prompts to advanced validation and slot-filling logic.

<img src="https://mintcdn.com/rasa-43f32701/3m_1rqabZkSRtSZi/images/legacy/studio/tutorial/money-transfer-collect-info.png?fit=max&auto=format&n=3m_1rqabZkSRtSZi&q=85&s=3d3018b8504d001ba55847db5923ccda" alt="image" width="2154" height="1406" data-path="images/legacy/studio/tutorial/money-transfer-collect-info.png" />

## Create a Collect Step

Here's how to define what your assistant should ask and where to store the user's response.

### 1. Describe What to Collect

Add a short description to instruct the assistant on what kind of information it should collect. Use a clear and consistent format.

<img src="https://mintcdn.com/rasa-43f32701/3m_1rqabZkSRtSZi/images/legacy/studio/tutorial/money-transfer-description.png?fit=max&auto=format&n=3m_1rqabZkSRtSZi&q=85&s=44150f25ffffa2cc8cebcd77513de0c9" alt="image" width="2082" height="1330" data-path="images/legacy/studio/tutorial/money-transfer-description.png" />

### 2. Store the Response

In order to be able to store the user's response, define a new [**slot**](/docs/studio/build/flow-building/collect#slots). Use descriptive names that clearly indicate the information you want to gather.

**📌 Tip:** To keep your slots organized - prefix flow-specific slots with the flow name ie. `money_transfer_` and global ones that are shared between flows with `global_`.

<img src="https://mintcdn.com/rasa-43f32701/3m_1rqabZkSRtSZi/images/legacy/studio/tutorial/money-transfer-create-slot.png?fit=max&auto=format&n=3m_1rqabZkSRtSZi&q=85&s=60070b595320a3a6717bea83a35a9bb2" alt="image" width="2768" height="1750" data-path="images/legacy/studio/tutorial/money-transfer-create-slot.png" />

<img src="https://mintcdn.com/rasa-43f32701/eLeGQhEoUGCT-ckv/images/legacy/studio/building/money-transfer-amount-slot2.png?fit=max&auto=format&n=eLeGQhEoUGCT-ckv&q=85&s=c0d63c1a74a89b0635d485298f7ec8cd" alt="image" width="1042" height="910" data-path="images/legacy/studio/building/money-transfer-amount-slot2.png" />

#### Choose the Type of Information

Pick the right slot type for the information you're collecting. Read more about the [**different types of slots here**](/docs/studio/build/flow-building/collect#slot-types).

<img src="https://mintcdn.com/rasa-43f32701/eLeGQhEoUGCT-ckv/images/legacy/studio/building/money-transfer-amount-slot3.png?fit=max&auto=format&n=eLeGQhEoUGCT-ckv&q=85&s=345b1a7619917e382d67d98035ab75cf" alt="image" width="1022" height="1018" data-path="images/legacy/studio/building/money-transfer-amount-slot3.png" />

## Design How to Ask For Information

You can tailor how your assistant asks for information or presents options to your user.

### Option 1: Use a Response

Click **Select or create response** and write what you'd like your assistant your assistant to say. The response name will default to `utter_ask_{slot_name}`.

<img src="https://mintcdn.com/rasa-43f32701/3m_1rqabZkSRtSZi/images/legacy/studio/tutorial/money-transfer-create-response.png?fit=max&auto=format&n=3m_1rqabZkSRtSZi&q=85&s=ae2e13e7d7a84ee1447dacd14c4a8132" alt="image" width="2768" height="1750" data-path="images/legacy/studio/tutorial/money-transfer-create-response.png" />

<img src="https://mintcdn.com/rasa-43f32701/eLeGQhEoUGCT-ckv/images/legacy/studio/building/create-new-response.png?fit=max&auto=format&n=eLeGQhEoUGCT-ckv&q=85&s=14833ae1971de414e545c19c5daabe56" alt="image" width="1890" height="1230" data-path="images/legacy/studio/building/create-new-response.png" />

<img src="https://mintcdn.com/rasa-43f32701/3m_1rqabZkSRtSZi/images/legacy/studio/tutorial/money-transfer-utter-ask-recipient.png?fit=max&auto=format&n=3m_1rqabZkSRtSZi&q=85&s=14096f4ccab9effe6d85349340ee792e" alt="image" width="1014" height="1120" data-path="images/legacy/studio/tutorial/money-transfer-utter-ask-recipient.png" />

#### Add Buttons (Optional)

Optionally, you can add buttons to allow the user to select an answer more quickly and present user with structured choices. This is particularly helpful for complex tasks or when the assistant needs specific information to proceed. [Learn more about buttons](/docs/studio/build/flow-building/collect#buttons).

<img src="https://mintcdn.com/rasa-43f32701/eLeGQhEoUGCT-ckv/images/legacy/studio/building/recipient-buttons.png?fit=max&auto=format&n=eLeGQhEoUGCT-ckv&q=85&s=ce566c2ceb7c3c7eabb991ba31038bdc" alt="image" width="1028" height="1132" data-path="images/legacy/studio/building/recipient-buttons.png" />

### Option 2: Use a Custom Action

Instead of using a response for the Collect step, you can use a [custom action](/docs/studio/build/actions/create-a-custom-action#how-to-create-custom-action). This is useful if, for example, you want to display dynamic data to the user as options.

The custom action must follow a specific naming convention and be called `action_ask_{slot_name}`, which is why the name will be pre-filled. Make sure to add this custom action to your [domain file outside of Studio](/docs/studio/build/actions/create-a-custom-action).

<img src="https://mintcdn.com/rasa-43f32701/eLeGQhEoUGCT-ckv/images/legacy/studio/building/collect-with-action.png?fit=max&auto=format&n=eLeGQhEoUGCT-ckv&q=85&s=9007535d31b2792b8aef231f562fa656" alt="image" width="2564" height="1710" data-path="images/legacy/studio/building/collect-with-action.png" />

## Configure Collection Rules

You can fine-tune how your assistant gathers information using the options below. These help ensure the right data is collected — and in the right way for your use case.

### Ask Before Filling

Normally, if a slot is already filled earlier in the conversation, the assistant won’t ask again.\
But if you want the assistant to *always* ask — even when it already has an answer — switch on **Ask before filling**.

**When to use it:**\
Useful when you want to confirm or re-collect something every time or when the value may need to be updated in the context of a flow, like a time slot for a booking.

<img src="https://mintcdn.com/rasa-43f32701/eLeGQhEoUGCT-ckv/images/legacy/studio/building/booking-ask-before-filling.png?fit=max&auto=format&n=eLeGQhEoUGCT-ckv&q=85&s=5b95a2ebe63851af9491a9190c399053" alt="Toggle on the ask before filling feature" width="2898" height="1826" data-path="images/legacy/studio/building/booking-ask-before-filling.png" />

### Prevent Digressions

If you want to prevent users jumping topics before giving you a crucial detail, you can ensure that the assistant collects a the slot value before moving to a different flow with this feature.

**When to use it:**\
If you have some required data like an email that you need to be able to fill out a support ticket — you can use this feature to ensure your assistant doesn't digress to another topic without it.

<img src="https://mintcdn.com/rasa-43f32701/eLeGQhEoUGCT-ckv/images/legacy/studio/building/booking-prevent-digression.png?fit=max&auto=format&n=eLeGQhEoUGCT-ckv&q=85&s=c62a46da25d9aedbcac2b2d7e52c099c" alt="Toggle on the ask before filling feature" width="2880" height="1826" data-path="images/legacy/studio/building/booking-prevent-digression.png" />

### Persist Slot Value

By default slots are stored in the assistant's memory during a given flow but are then reset when you change to a new topic.
Switch on **Persist slot value** to have your assistant remember the info for later use in a different flow context.

**When to use it:**\
Helpful for things like remembering a user's preferences across a full conversation.

<img src="https://mintcdn.com/rasa-43f32701/eLeGQhEoUGCT-ckv/images/legacy/studio/building/booking-persist-after-flow-ends.png?fit=max&auto=format&n=eLeGQhEoUGCT-ckv&q=85&s=50032608e0c1ffd77d741ac303c2e3ab" alt="Toggle on the persist slot value feature" width="2880" height="1826" data-path="images/legacy/studio/building/booking-persist-after-flow-ends.png" />

### Silcence handling

If your Rasa license includes voice, you’ll see the **Silence handling** option. It sets how long the assistant waits during voice interactions before repeating the question and checking if the user is still there. You can define a global timeout in Assistant settings or override it per Collect step for questions that may need more response time.

<img src="https://mintcdn.com/rasa-43f32701/3m_1rqabZkSRtSZi/images/legacy/studio/tutorial/silence-handling.png?fit=max&auto=format&n=3m_1rqabZkSRtSZi&q=85&s=1f4aad0a58633fa0983c0c304152267b" alt="image" width="2266" height="1370" data-path="images/legacy/studio/tutorial/silence-handling.png" />

## Validate

Validation is optional but sometimes you may want to validate a slot to ensure the user has provided the correct information before proceeding to the next step in the dialogue.

1. To do this, go to the **Validate** tab of **Collect information** step.

   <img src="https://mintcdn.com/rasa-43f32701/eLeGQhEoUGCT-ckv/images/legacy/studio/building/money-transfer-validate.png?fit=max&auto=format&n=eLeGQhEoUGCT-ckv&q=85&s=8464838c3fc408952fbdcdd9c6aff7c2" alt="image" width="2232" height="1494" data-path="images/legacy/studio/building/money-transfer-validate.png" />
2. Prevent user from going to the next step if certain conditions are not met.

   <img src="https://mintcdn.com/rasa-43f32701/eLeGQhEoUGCT-ckv/images/legacy/studio/building/money-transfer-validation-options.png?fit=max&auto=format&n=eLeGQhEoUGCT-ckv&q=85&s=dbe48ee078e5990ad14a8269e0b42de6" alt="image" width="2138" height="1306" data-path="images/legacy/studio/building/money-transfer-validation-options.png" />
3. Click **Select or create response**. If the user's answer deviates from these values, a validation response will be displayed to them.

   <img src="https://mintcdn.com/rasa-43f32701/eLeGQhEoUGCT-ckv/images/legacy/studio/building/money-transfer-create-validation-response.png?fit=max&auto=format&n=eLeGQhEoUGCT-ckv&q=85&s=b98ce2a73749241610c9503f72e93a20" alt="image" width="2232" height="1490" data-path="images/legacy/studio/building/money-transfer-create-validation-response.png" />
4. Select **Create new response**.

   <img src="https://mintcdn.com/rasa-43f32701/eLeGQhEoUGCT-ckv/images/legacy/studio/building/create-new-response.png?fit=max&auto=format&n=eLeGQhEoUGCT-ckv&q=85&s=14833ae1971de414e545c19c5daabe56" alt="image" width="1890" height="1230" data-path="images/legacy/studio/building/create-new-response.png" />
5. In the modal that appears, specify the text for the response, and then click "Save."

   <img src="https://mintcdn.com/rasa-43f32701/MQtQODV4k9Yeq80-/images/legacy/studio/building/validation-window.png?fit=max&auto=format&n=MQtQODV4k9Yeq80-&q=85&s=c6e9a4eded37d35f50f66c79e7a23fd6" alt="image" width="1022" height="1114" data-path="images/legacy/studio/building/validation-window.png" />
6. You can edit or delete previously created validation responses by clicking on the drop-down menu and choosing the **Manage responses** option in the modal that opens.

   <img src="https://mintcdn.com/rasa-43f32701/eLeGQhEoUGCT-ckv/images/legacy/studio/building/manage-validation-responses1.png?fit=max&auto=format&n=eLeGQhEoUGCT-ckv&q=85&s=5af15a8942bcff65b65b7446dd44fa66" alt="image" width="2212" height="1432" data-path="images/legacy/studio/building/manage-validation-responses1.png" />

   <img src="https://mintcdn.com/rasa-43f32701/eLeGQhEoUGCT-ckv/images/legacy/studio/building/manage-validation-responses2.png?fit=max&auto=format&n=eLeGQhEoUGCT-ckv&q=85&s=0f8a9c47f4f7165a8fe8c40ce5b5148d" alt="image" width="2206" height="1428" data-path="images/legacy/studio/building/manage-validation-responses2.png" />

## Slots

### What is a Slot?

Think of slots as your assistant’s memory. They store important pieces of information from the conversation, like a user’s name, date, or location, and can be referenced throughout the flow.

### Slot types

#### Text

A **text** slot is used to store textual information such as names of countries, cities, or personal names. It's designed to hold various types of alphanumeric characters, making it suitable for a wide range of textual data.

#### Boolean

A **boolean** slot is designed to store binary information, representing either a true or false value. It's commonly used for yes/no questions or scenarios where only two opposing options exist, like true/false statements.

#### Categorical

A **categorical** slot is used to store data that can take on one of a specific set of values. It's well-suited for scenarios where data can be classified into distinct categories, like labels such as low, medium, or high to describe levels of something.

#### Float

A **float** slot is employed for storing numerical values that can have decimal points. It's suitable for handling continuous numeric data, such as age, temperature, or monetary amounts involving fractions.

#### Any

An **any** slot is capable of storing a wide variety of data types without any specific constraints. It's a flexible option for cases where the data type might vary or is not well-defined in advance, allowing you to store arbitrary values with diverse characteristics.

## Buttons

You can make your assistant even more interactive by adding buttons to the responses in the Collect Information step. Instead of making users type, they can simply click on buttons to give their answers.

<img src="https://mintcdn.com/rasa-43f32701/MQtQODV4k9Yeq80-/images/legacy/studio/building/tya-buttons.png?fit=max&auto=format&n=MQtQODV4k9Yeq80-&q=85&s=e107c1c10f71b95f957afe2101dc4e00" alt="image" width="2052" height="1488" data-path="images/legacy/studio/building/tya-buttons.png" />

### Button properties

A button has two important parts:

* **Title:** This is the text your users will see on the button.
* **Payload:** Think of this as a behind-the-scenes command the assistant uses when the button is clicked. You don’t have to fill it in unless you want to give your assistant extra instructions like skipping LLM calls and going straight to a specific command, intent, or entity.

  <img src="https://mintcdn.com/rasa-43f32701/MQtQODV4k9Yeq80-/images/legacy/studio/building/tya-payloads.png?fit=max&auto=format&n=MQtQODV4k9Yeq80-&q=85&s=ba726df626dfcd1128e9523fa94c8189" alt="image" width="1794" height="1484" data-path="images/legacy/studio/building/tya-payloads.png" />

### How to add buttons

1. Click **Add button** in your Collect information response.

   <img src="https://mintcdn.com/rasa-43f32701/XHj2VCWI4cZ6KSTn/images/legacy/studio/tutorial/add-buttons-1.png?fit=max&auto=format&n=XHj2VCWI4cZ6KSTn&q=85&s=c1f82b98efad05b579d38bae297d5e30" alt="image" width="1008" height="1168" data-path="images/legacy/studio/tutorial/add-buttons-1.png" />
2. Choose between reusing an existing button or creating a new one. If you create a new button, enter a title for it. This title will be the text displayed on the button for users to click.

   <img src="https://mintcdn.com/rasa-43f32701/XHj2VCWI4cZ6KSTn/images/legacy/studio/tutorial/add-buttons-2.png?fit=max&auto=format&n=XHj2VCWI4cZ6KSTn&q=85&s=0f2ce67de9552e885ade5bfc4a77ab23" alt="image" width="978" height="936" data-path="images/legacy/studio/tutorial/add-buttons-2.png" />
3. Optional: If you want the button to bypass the LLM, choose a payload. Here are the types of things you can set it to do:

   * **Intent** — triggers an intent.
   * **Intent and entity** — passes entities along with the intent.
   * **Set slot** — sends commands to set or reset slot values.
   * **Text** — sends a predefined free-form text to the assistant. This should only be used if none of the above options apply.
   * If you leave the field empty, it will automatically be pre-filled with the same text as the title.

   <img src="https://mintcdn.com/rasa-43f32701/eLeGQhEoUGCT-ckv/images/legacy/studio/building/add-buttons6.png?fit=max&auto=format&n=eLeGQhEoUGCT-ckv&q=85&s=15672c34829d8f4b44aefd3989aec045" alt="image" width="998" height="1094" data-path="images/legacy/studio/building/add-buttons6.png" />
4. Keep clicking **Add button** and fill in the information for as many buttons as you need.

   <img src="https://mintcdn.com/rasa-43f32701/XHj2VCWI4cZ6KSTn/images/legacy/studio/tutorial/add-buttons-3.png?fit=max&auto=format&n=XHj2VCWI4cZ6KSTn&q=85&s=8891f942673fe4cf4360406fb05c41c2" alt="image" width="1006" height="1194" data-path="images/legacy/studio/tutorial/add-buttons-3.png" />
5. If you want to reuse an existing button, select **Use existing button** and choose the button you'd like to use from the dropdown menu.

   <img src="https://mintcdn.com/rasa-43f32701/XHj2VCWI4cZ6KSTn/images/legacy/studio/tutorial/add-buttons-4.png?fit=max&auto=format&n=XHj2VCWI4cZ6KSTn&q=85&s=77e7b100c04175776c010c79645547db" alt="image" width="1010" height="974" data-path="images/legacy/studio/tutorial/add-buttons-4.png" />
6. Use the icons next to the buttons to edit or delete them from the response.

   <img src="https://mintcdn.com/rasa-43f32701/eLeGQhEoUGCT-ckv/images/legacy/studio/building/edit-delete-button.png?fit=max&auto=format&n=eLeGQhEoUGCT-ckv&q=85&s=0cda75a4ef9af9073117ea7d69cf8e6a" alt="image" width="1000" height="1192" data-path="images/legacy/studio/building/edit-delete-button.png" />

### Reordering buttons

You can drag and drop buttons directly in the response editor — giving you full control over the order in which options are shown to users.

<img src="https://mintcdn.com/rasa-43f32701/eLeGQhEoUGCT-ckv/images/legacy/studio/building/reorder-buttons.png?fit=max&auto=format&n=eLeGQhEoUGCT-ckv&q=85&s=6580cc40bbce1e03ab8dfe22223a7b34" alt="image" width="1000" height="1192" data-path="images/legacy/studio/building/reorder-buttons.png" />

## Slot Mappings (Advanced)

Use slot mappings to control how slot values are extracted.

### From LLM

By default, the slot value is extracted from the user's message using an LLM, which interprets the message and fills the slot accordingly. The prompt includes descriptions and slot definitions from each flow as relevant information. However, if your assistant includes NLU components (intents and entities), you might consider using alternative extraction methods.

<img src="https://mintcdn.com/rasa-43f32701/eLeGQhEoUGCT-ckv/images/legacy/studio/building/mappings_llm.png?fit=max&auto=format&n=eLeGQhEoUGCT-ckv&q=85&s=d1c004fb74ff6ec3b2acebf6fdb41cac" alt="image" width="1056" height="1310" data-path="images/legacy/studio/building/mappings_llm.png" />

### From text

This mapping type uses the text of the last user message to fill the slot. Optionally it can be configured with the following parameters:

* **Intent** — Only applies the mapping when this intent is predicted.
* **Intent is not** — Excludes the mapping when this intent is predicted.
* **Active flows** — Restricts the mapping to certain flows, selectable in this field.

<img src="https://mintcdn.com/rasa-43f32701/eLeGQhEoUGCT-ckv/images/legacy/studio/building/mappings_text.png?fit=max&auto=format&n=eLeGQhEoUGCT-ckv&q=85&s=87c9bd8c2600677f1c3e24e8ed97f8b6" alt="image" width="1056" height="1420" data-path="images/legacy/studio/building/mappings_text.png" />

### From entity

This mapping type fills slots based on extracted entities. The following parameters are required:

* **Entity** — The entity used to fill the slot.

Optional parameters to specify the application of the mapping include:

* **Intent** — Applies only when this intent is predicted.
* **Intent is not** — Excludes the mapping when this intent is predicted.
* **Role** — Applies only if the extracted entity has this specified role.
* **Active flows** — Restricts the mapping to certain flows, selectable in this field.

<img src="https://mintcdn.com/rasa-43f32701/eLeGQhEoUGCT-ckv/images/legacy/studio/building/mappings_entity.png?fit=max&auto=format&n=eLeGQhEoUGCT-ckv&q=85&s=4321ec2fa7b680c6c49c607897bcb7a8" alt="image" width="1056" height="1662" data-path="images/legacy/studio/building/mappings_entity.png" />

### From intent

This mapping fills a slot with a specified value if the user's intent matches. If no intent is specified, the slot fills regardless, unless the intent matches those listed under "Intent is not."

Required parameter:

* **Value** — The value to fill the slot.

Optional parameters include:

* **Intent** — Applies the mapping only when this intent is predicted.
* **Intent is not** — Excludes the mapping when this intent is predicted.
* **Active flows** — Restricts the mapping to certain flows, selectable in this field.

<img src="https://mintcdn.com/rasa-43f32701/eLeGQhEoUGCT-ckv/images/legacy/studio/building/mappings_intent.png?fit=max&auto=format&n=eLeGQhEoUGCT-ckv&q=85&s=302aefda9cc988f855d25995150819db" alt="image" width="1048" height="1644" data-path="images/legacy/studio/building/mappings_intent.png" />

### From custom action

Use the "From custom action" mapping type for slots that need to be filled by a specified [custom action](/docs/studio/build/actions/create-a-custom-action). This action must be detailed in the "Custom action" field of the slot mapping.

<img src="https://mintcdn.com/rasa-43f32701/eLeGQhEoUGCT-ckv/images/legacy/studio/building/mappings_CA.png?fit=max&auto=format&n=eLeGQhEoUGCT-ckv&q=85&s=df071d7774f50aaa718af8a4ea851f48" alt="image" width="1056" height="1548" data-path="images/legacy/studio/building/mappings_CA.png" />

In case you use multiple mappings for one slot, they will be prioritized in the order they are listed. The first slot mapping found to apply will be used to fill the slot.

<Note>
  **Recommendation on combining slot mapping types**

  A slot cannot have both "From LLM" and NLU-based predefined mappings or mappings from custom actions simultaneously. If you set a slot to use the "From LLM" mapping, you must not define any other types of mappings for that slot.
</Note>

[Learn more about slot mappings](/docs/reference/config/domain#slots)
