# Conversational Components

Businesses can configure easy-to-use commands, provide pre-written icebreakers that users can tap, and greet first-time users with a welcome message.&#x20;

{% hint style="info" %}
This feature can be configured within WhatsApp Manager.&#x20;
{% endhint %}

## Configuration Steps <a href="#configuration" id="configuration"></a>

Businesses with shared WABAs can configure it in the WhatsApp Manager for any phone number as follows:

{% stepper %}
{% step %}
Navigate to **WhatsApp Manager** within Meta Business Suite.
{% endstep %}

{% step %}
Go to Account Tools > Phone Numbers.
{% endstep %}

{% step %}
Click on Settings (gear icon:<img src="https://3527970750-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-M4sMxKjL6eJRvZn6jeG-887967055%2Fuploads%2FlxsMFLZOr8IimfF3VTIq%2FScreenshot%202024-02-20%20at%2017.29.53.png?alt=media&#x26;token=c155db16-b37c-4961-8966-508edb1308b0" alt="" data-size="line">)  next to the phone number you want to configure.
{% endstep %}

{% step %}
Find "Conversational Components" under **Automations** and toggle the "Welcome Messages" switch to turn the feature on.

<figure><img src="https://3527970750-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-M4sMxKjL6eJRvZn6jeG-887967055%2Fuploads%2FU4edUcjP8PudK6qF1rj3%2FScreenshot%202024-02-20%20at%2017.04.23.png?alt=media&#x26;token=36a77301-7034-4fd6-ae6e-e22e42d338c2" alt=""><figcaption></figcaption></figure>
{% endstep %}
{% endstepper %}

### Testing

To test conversational components once they have been configured, open the WhatsApp App and open a chat with your business phone number.

For welcome messages and ice breakers, if there is already a chat thread going with the business phone number, you must first delete the chat thread:

{% stepper %}
{% step %}
Open the thread in the WhatsApp client.
{% endstep %}

{% step %}
Tap the business phone number's profile
{% endstep %}

{% step %}
Tap **Clear Chat** > **Clear All Messages**.
{% endstep %}

{% step %}
Return to the (now empty) chat thread.
{% endstep %}
{% endstepper %}

{% hint style="info" %}
You can then send a message to the business phone number, which should trigger the `request_welcome` webhook.&#x20;
{% endhint %}

## Component Types <a href="#welcome-messages" id="welcome-messages"></a>

### Welcome Messages <a href="#welcome-messages" id="welcome-messages"></a>

Activating *Welcome Messages* allows your business to automatically greet users opening your chat for the first time.&#x20;

This feature can be particularly useful for enhancing service interactions like customer support or account management.&#x20;

<figure><img src="https://3527970750-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-M4sMxKjL6eJRvZn6jeG-887967055%2Fuploads%2FKt6MaEPDfhmjuH4gJree%2F419671533_896659752089886_4267993356760898269_n.png?alt=media&#x26;token=49906095-a01c-4e42-ae9d-42fcc3d48180" alt="" width="375"><figcaption></figcaption></figure>

{% hint style="info" %}
For example: embedding a WhatsApp button on your app or website directs users to WhatsApp, where they're can be met with a welcome message that provides context on how they can interact with you.
{% endhint %}

* If you enable this feature and a user messages you, Meta checks for an existing message thread between the user and your business phone number.&#x20;
* If there is none, it triggers a `messages` webhook with `type` set to `request_welcome`. You can use this to then respond to the user with your own welcome message.
* The `request_welcome` webhook triggers a [**customer service window**](https://docs.360dialog.com/docs/get-started/pricing/free-vs-billed-messaging) which allows your business to send free-form messages when responding to customers.

#### **Webhook Payload** <a href="#webhook-payload" id="webhook-payload"></a>

```json
{
  "object": "whatsapp_business_account",
  "entry": [
    {
      "id": "<WHATSAPP_BUSINESS_ACCOUNT_ID>",
      "changes": [
        {
          "value": {
            "messaging_product": "whatsapp",
            "metadata": {
              "display_phone_number": "<BUSINESS_DISPLAY_PHONE_NUMBER>",
              "phone_number_id": "<BUSINESS_PHONE_NUMBER_ID>"
            },
            "contacts": [
              {
                "profile": {
                  "name": "<WHATSAPP_USER_NAME>"
                },
                "wa_id": "<WHATSAPP_USER_ID>"
              }
            ],
            "messages": [
              {
                "from": "<WHATSAPP_USER_PHONE_NUMBER>",
                "id": "<WHATSAPP_MESSAGE_ID>",
                "timestamp": "<TIMESTAMP>",
                "type": "request_welcome"  // Indicates first time message from WhatsApp user
              }
            ]
          },
          "field": "messages"
        }
      ]
    }
  ]
}
```

### Ice Breakers <a href="#ice-breakers" id="ice-breakers"></a>

**Ice Breakers** are customizable, tappable text options that appear in the message thread the **first time a user starts a chat** with your business.\
They help guide users on how to begin a conversation — for example:

> “Plan a trip” or “Create a workout plan”.

#### Use Cases

Ice Breakers are ideal for **service-oriented interactions**, such as:

* Customer support
* Account management
* Guided onboarding or FAQs

You can also **embed a WhatsApp button** on your website or app that opens a chat window with pre-defined Ice Breakers.

When users tap the button, they are redirected to WhatsApp and presented with your list of suggested prompts.

<figure><img src="https://3527970750-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-M4sMxKjL6eJRvZn6jeG-887967055%2Fuploads%2Fi5y1eqgCiWIB7CWjFH3P%2F420086219_1814698272310915_4997093040223706964_n.png?alt=media&#x26;token=19ab6e0d-f680-4427-9631-29d2aa88e58b" alt="" width="375"><figcaption></figcaption></figure>

#### Configuration

* You can set up to **4 Ice Breakers per business number** in **WhatsApp Manager**.
* Each Ice Breaker can contain **up to 80 characters**.
* **Emojis are not supported.**

{% hint style="info" %}
Use short, action-driven phrases that help users understand what they can do next — for example, “Track my order” or “Update payment method.”
{% endhint %}

#### Behavior & Webhook Response

When a user **taps an Ice Breaker**, it triggers a **standard `messages` webhook event** with the Ice Breaker text contained in the `body` field.

If the user chooses to **type a message instead**, the keyboard overlays the Ice Breaker list — but the menu can be dismissed to make the Ice Breakers visible again.

#### Limitations <a href="#limitations" id="limitations"></a>

If a WhatsApp user taps a [universal link](https://faq.whatsapp.com/425247423114725?fbclid=IwAR0Wk3l6XfxxQC8iF5oku5y-BmYMO-xSguTyGlypF50tH2_GzxsblV2-G2s) (i.e. **wa.me** link) configured with pre-filled text, the user interfaces for **ice breakers** are automatically dismissed.

#### **Webhook Payload** <a href="#webhook-payload-2" id="webhook-payload-2"></a>

```json
{
  "object": "whatsapp_business_account",
  "entry": [
    {
      "id": "<WHATSAPP_BUSINESS_ACCOUNT_ID>",
      "changes": [
        {
          "value": {
            "messaging_product": "whatsapp",
            "metadata": {
              "display_phone_number": "<BUSINESS_DISPLAY_PHONE_NUMBER>",
              "phone_number_id": "<BUSINESS_PHONE_NUMBER_ID>"
            },
            "contacts": [
              {
                "profile": {
                  "name": "<WHATSAPP_USER_NAME>"
                },
                "wa_id": "<WHATSAPP_USER_ID>"
              }
            ],
            "messages": [
              {
                "from": "<WHATSAPP_USER_PHONE_NUMBER>",
                "id": "<WHATSAPP_MESSAGE_ID>",
                "timestamp": "<TIMESTAMP>",
                "text": {
                  "body": "Plan a trip" //ice breaker string
                },
                "type": "text"
              }
            ]
          },
          "field": "messages"
        }
      ]
    }
  ]
}

```

### Commands <a href="#commands" id="commands"></a>

{% columns %}
{% column width="58.333333333333336%" %}
**Commands** are predefined text strings that appear when a WhatsApp user types a **forward slash (`/`)** in a message thread with your business. They help users quickly discover and trigger available actions within your service.

Each command consists of:

* A **command keyword**, which the user types after `/`
* A **hint**, which briefly describes what the command does

#### **Example:**

```
/imagine - Create images using a text prompt
```

{% endcolumn %}

{% column width="41.666666666666664%" %}

<figure><img src="https://3527970750-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-M4sMxKjL6eJRvZn6jeG-887967055%2Fuploads%2FXEpwmhY6LYwgDgN6Mxdv%2F420085467_910814590451435_4671411740520505748_n.png?alt=media&#x26;token=2aa57b7e-ac09-4eff-ae1f-69f9dd311bf1" alt="" width="365"><figcaption></figcaption></figure>
{% endcolumn %}
{% endcolumns %}

When a user types a command such as:

```
/imagine cars racing on Mars
```

WhatsApp will send a **standard received message webhook** containing the full text string as the `body` property.

Your backend or chatbot can then parse this command and, for instance, generate and return an image of cars racing on Mars.

#### Configuration

* You can define **up to 30 commands** per WhatsApp Business Account.
* Each **command** can have up to **32 characters**.
* Each **hint** can have up to **256 characters**.
* **Emojis are not supported.**

{% hint style="info" %}
Use short, descriptive verbs for clarity — e.g., `/trackorder`, `/cancelbooking`, `/checkstatus`.
{% endhint %}

#### Behavior & Webhook Response

When a command is used, it triggers a webhook event containing the user’s full input string.

#### **Example webhook payload:**

```json
{
  "object": "whatsapp_business_account",
  "entry": [
    {
      "id": "<WHATSAPP_BUSINESS_ACCOUNT_ID>",
      "changes": [
        {
          "value": {
            "messaging_product": "whatsapp",
            "metadata": {
              "display_phone_number": "<BUSINESS_DISPLAY_PHONE_NUMBER>",
              "phone_number_id": "<BUSINESS_PHONE_NUMBER_ID>"
            },
            "contacts": [
              {
                "profile": {
                  "name": "<WHATSAPP_USER_NAME>"
                },
                "wa_id": "<WHATSAPP_USER_ID>"
              }
            ],
            "messages": [
              {
                "from": "<WHATSAPP_USER_PHONE_NUMBER>",
                "id": "<WHATSAPP_MESSAGE_ID>",
                "timestamp": "<TIMESTAMP>",
                "text": {
                  "body": "/imagine cars racing on Mars"
                },
                "type": "text"
              }
            ]
          },
          "field": "messages"
        }
      ]
    }
  ]
}
```


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs.360dialog.com/docs/messaging/conversational-components.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
