---
updatedAt: 2026-10-05T19:16:52.000Z
agentTools:
  projectIndex: https://docs.recall.ai/llms.txt
---

# Sending Chat Messages

Send bot chat messages during meetings, understand platform limitations, and pin important notices like recording consent.

## Platform Support

<Table align={["left","left","left","left","left"]}>
  <thead>
    <tr>
      <th>
        Platform
      </th>

      <th>
        Available
      </th>

      <th>
        Supported Recipients
      </th>

      <th>
        Limitations
      </th>

      <th>
        Pinning
      </th>
    </tr>
  </thead>

  <tbody>
    <tr>
      <td>
        Zoom
      </td>

      <td>
        :white_check_mark:
      </td>

      <td>
        `everyone` , `host` , `everyone_except_host`
      </td>

      <td>
        - 4096 character limit
        - Zoom webinars can't send chat messages to specific participants
      </td>

      <td>
        :x:
      </td>
    </tr>

    <tr>
      <td>
        Google Meet
      </td>

      <td>
        :white_check_mark:
      </td>

      <td>
        `everyone`
      </td>

      <td>
        - 500 character limit
        - Pinned chat messages require continuous chat to be disabled.
      </td>

      <td>
        ✅
      </td>
    </tr>

    <tr>
      <td>
        Microsoft Teams
      </td>

      <td>
        :white_check_mark:
      </td>

      <td>
        `everyone`
      </td>

      <td>
        - 4096 character limit
        - Cannot be a [channel meeting](https://support.microsoft.com/en-us/office/channel-meetings-in-microsoft-teams-340ca1e7-8e0c-4de4-ab9c-c34a345fec00)
      </td>

      <td>
        ❌ (Limitation set by Teams)
      </td>
    </tr>

    <tr>
      <td>
        Slack Huddles
      </td>

      <td>
        ✅
      </td>

      <td>
        `everyone`
      </td>

      <td>

      </td>

      <td>
        :x:
      </td>
    </tr>

    <tr>
      <td>
        Cisco Webex
      </td>

      <td>
        :x:
      </td>

      <td>

      </td>

      <td>

      </td>

      <td>
        :x:
      </td>
    </tr>

    <tr>
      <td>
        GoTo Meeting
      </td>

      <td>
        ❌﻿
      </td>

      <td>

      </td>

      <td>

      </td>

      <td>

      </td>
    </tr>
  </tbody>
</Table>

<Callout icon="📘" theme="info">
  ### Note about Microsoft Teams

  The Teams chat window may not be available for bots by default, due to the organization's settings.

  For bots to be able to send chat messages in Teams calls, they must have access to the chat. To have access to the chat, one of two things must happen:

  1. The tenant has configured their meeting chat settings to allow **anyone** to chat.
  2. The tenant allows authenticated users to chat **and** you're using [Signed-In Microsoft Teams Bots](https://docs.recall.ai/docs/microsoft-teams-bot-login).

  Additionally, even if the bot has access to the chat, it may not have the ability to **pin** chat messages. You will see a log in the Bot Explorer if the chat message is sent appropriately, but the bot was unable to pin it.
</Callout>

<br />

## How to send chat messages

There are two ways to have bots send chat messages:

1. **Providing an automatic chat configuration when&#x20;**[Creating a Bot](https://docs.recall.ai/reference/bot_create)
2. **Calling the&#x20;**[Send Chat Message](https://docs.recall.ai/reference/bot_send_chat_message_create)**&#x20;endpoint**

### Providing an automatic chat configuration

***

When creating a bot, you can provide a `chat` object in the [Create Bot](https://docs.recall.ai/reference/bot_create) request body with two  parameters that act as hooks for automatically sending chat messages:

* `on_bot_join` - the bot will send the chat message as soon as it joins the call. It will not wait for participants to join before sending the chat message.
* `on_participant_join` - the bot will send the chat message every time a participant joins and every participant will see the chat message.

*Note that you can provide one without the other, or both if you prefer.*

### **Send a message when the bot joins:**`chat.on_bot_join`

<Table align={["left","left","left"]}>
  <thead>
    <tr>
      <th>
        Parameter
      </th>

      <th>
        Value
      </th>

      <th>
        Description
      </th>
    </tr>
  </thead>

  <tbody>
    <tr>
      <td>
        `send_to`
      </td>

      <td>
        - _Zoom:_`"host"`_&#x20;|&#x20;_`"everyone"`_&#x20;|_`"everyone_except_host"` _Meet:_`"everyone"` _Teams:_\* `"everyone"`
      </td>

      <td>
        Who the message will be sent to.
      </td>
    </tr>

    <tr>
      <td>
        `message`
      </td>

      <td>
        string
      </td>

      <td>
        The message content to send.
      </td>
    </tr>

    <tr>
      <td>
        `pin`
      </td>

      <td>
        boolean
      </td>

      <td>
        Whether to pin the message to the top of the chat. Pinned messages will be viewable for participants who join after the message was sent. Supported for Meet
      </td>
    </tr>
  </tbody>
</Table>

### **Send a message when a participant joins the call:**`chat.on_participant_join`

| Parameter      | Value   | Description                                                 |
| :------------- | :------ | :---------------------------------------------------------- |
| `exclude_host` | boolean | Whether or not to trigger this message when the host joins. |
| `message`      | string  | The message content to send.                                |

<Callout icon="📘" theme="info">
  On Zoom, messages will be sent as a DM to each participant when using `chat.on_participant_join`.
</Callout>

## Using the Send Chat Messages endpoint

***

For more control over when bots send chat messages, Recall also provides an [endpoint](https://docs.recall.ai/reference/bot_send_chat_message_create) to send chat messages. This endpoint also allows you to pin messages.

Keep in mind that this endpoint has the same [platform limitations](#platform-limitations) outlined above.

### Send a chat message to a specific participant (Zoom only)

Using the [Send Chat Message](https://docs.recall.ai/reference/bot_send_chat_message_create) endpoint also has the benefit of being able to send chat messages as DM's to specific participants.

**Example: Send a message via DM to a specific Zoom participant**

1. First, you need the ID of the participant you'd like to send the DM to. You can subscribe to `participant_events.join` webhook events using a [Real-Time Endpoint](https://docs.recall.ai/docs/real-time-endpoints) to know when a participant joins a call.
2. Now, to send a DM to John Doe, I can use his ID when calling [Send Chat Message](https://docs.recall.ai/reference/bot_send_chat_message_create):

```curl
curl --request POST \
     --url https://us-west-2.recall.ai/api/v1/bot/3487f343-7ba6-4fe1-9462-08638b2ee51f/send_chat_message/ \
     --header 'Authorization: {API_KEY}' \
     --header 'accept: application/json' \
     --header 'content-type: application/json' \
     --data '
{
  "to": "16778240",
  "message": "Hello! I am a virtual meeting assistant that will be taking notes during this call."
}
'
```

3. The participant will then receive the message as a DM:

![](https://files.readme.io/5bfa387-CleanShot_2024-03-26_at_13.16.49.png)

<br />

## Sending formatted chat messages

***

Teams supports sending hyperlinks in the chat using the following format: `<a href="https://example.com/">Example</a>`. Teams also supports newlines via the [line break element](https://developer.mozilla.org/en-US/docs/Web/HTML/Reference/Elements/br).

Formatted chat messages are not supported for other meeting platforms at this time.

## Using chat messages for recording consent

***

You may want to send a chat message at the start of a call to notify all participants that the call is being recorded. By default, people who join after this message is sent won't see it. To solve for this, you can configure this to re-send the chat message whenever a new participant joins (using the `on_participant_join` configuration).

Certain meeting platforms also support other functionality which allow you to solve for this with a better UX:

* On Google Meet in particular, you can choose to "pin" a message when you send it, which will make it visible for all participants for the entire meeting. This is supported for both the automatic chat configuration in the [Create Bot](https://docs.recall.ai/reference/bot_create) endpoint and by using the [Send Chat Message](https://docs.recall.ai/reference/bot_send_chat_message_create) endpoint.
* On Zoom, you can choose to [directly message individual participants](https://docs.recall.ai/docs/sending-chat-messages#send-a-chat-message-to-a-specific-participant-zoom-only) that the call is being recorded when they join.