---
title: "Channels"
url: "/channels"
description: "How people reach your agent — the web widget, Telegram, WhatsApp and the inbox."
productArea: channels
audience: ["business-user"]
tags: ["channels"]
lastReviewed: 2026-08-16
---

# Channels (/channels)





A channel connects an agent to somewhere people can talk to it. Channels are configured per
agent, on the agent's **Channels** tab.

| Channel                            | What it is                                                      |
| ---------------------------------- | --------------------------------------------------------------- |
| [Web widget](/channels/web-widget) | A chat widget embedded in your website                          |
| [Telegram](/channels/telegram)     | A Telegram bot                                                  |
| [WhatsApp](/channels/whatsapp)     | WhatsApp Business messaging                                     |
| Inbox                              | An in-app channel for conversations without an external channel |

<Callout type="info">
  Channels deliver to **your end users**. Alerting **your own team** — when a lead is captured or an
  agent asks for help — is a separate system configured under Notifications in the dashboard.
</Callout>

## The inbox [#the-inbox]

The inbox is a built-in channel, one per workspace. It captures conversations that arrive
without a dedicated external channel and shows them in the dashboard for your team.

* Created automatically on first use — you never create it manually.
* Cannot be deleted. Disable it in channel settings if you do not want it.
* Shared across all agents in the workspace.

## Access control [#access-control]

The web widget, Telegram and WhatsApp channels each decide who may reach the agent. Open the
channel from the agent's **Channels** tab and use the **Allow List** and **Deny List** tabs.

### Access mode [#access-mode]

Every channel is either **Open** or **Restricted**. The setting is at the top of the **Allow
List** tab.

| Mode           | Who gets through                                               |
| -------------- | -------------------------------------------------------------- |
| **Open**       | Anyone, except contacts on the deny list. This is the default. |
| **Restricted** | Only the allow list. The deny list still applies on top.       |

The deny list applies in both modes, and deny always wins over allow. Both lists stay editable
whichever mode you are in, so you can prepare an allow list before switching to **Restricted**.

<Callout type="warn">
  Switching a channel to **Restricted** with an empty allow list blocks everyone. Add the entries
  first, then switch.
</Callout>

### Who you can add [#who-you-can-add]

Search the box on either tab and pick from two kinds of entry.

* **A contact** — someone who has messaged this agent before, so they already have a contact
  record. See [contacts](/contacts).
* **A data table row, or a whole data table** — pick one row, or **Everyone in this table** to
  cover every row in it. A whole-table entry is resolved each time someone messages, so adding a
  row to the table grants access without touching the channel. See
  [data tables](/data-tables).

Data table entries let you authorise someone **before they ever message**, which a contact entry
cannot do. Only tables with at least one identity column can be picked — a column typed
`whatsapp_id`, `telegram_id`, `telegram_handle`, `phone` or `email`. That column is what an
incoming sender is matched against, and an entry names which of its columns it matches on.

The search box lists what you can add as soon as you open it, so you can browse rather than
guess at a search term. It offers only data tables this agent has read permission on — if one is
missing, grant it from the table's **Permissions** tab, see
[permissions](/data-tables#permissions).

<Callout type="info">
  Data table entries authorise Telegram and WhatsApp senders, whose identity the messaging platform
  confirms. They do not authorise web widget visitors — see [restricting the
  widget](/channels/web-widget#restricting-who-can-chat).
</Callout>

### Example [#example]

To let only your customers use a WhatsApp agent: keep a data table with a `whatsapp_id` column,
add **Everyone in this table** to the channel's allow list, then set the channel to
**Restricted**. To bar one number afterwards, add that row to the deny list — you do not have to
remove it from the table.

## Handing over to a human [#handing-over-to-a-human]

An agent can escalate a conversation to a person. When it does, your team is notified and can
take over the conversation from the dashboard, reply directly, and hand control back to the
agent afterwards. See [escalate to human](/channels/handoff) for how to configure it.

## Security [#security]

* Channel credentials — bot tokens, access tokens — are **write-only**. They are stored
  encrypted and never appear in the dashboard or in any API response after you save them.
* If your API URL changes, reconnect the channel so the webhook is re-registered.

## Troubleshooting [#troubleshooting]

| Symptom                              | Likely cause                                                    |
| ------------------------------------ | --------------------------------------------------------------- |
| Messages are not reaching the agent  | Agent status is `draft` or `inactive`                           |
| The channel worked, then went silent | An expired credential — see [WhatsApp](/channels/whatsapp)      |
| Some people get no response          | A deny list entry is filtering them                             |
| Nobody gets a response               | The channel is **Restricted** and the allow list matches nobody |
| A widget visitor is refused          | Data table entries do not authorise widget visitors             |
| Widget does not load                 | The site's domain is not in the agent's allowed origins         |

## Related pages [#related-pages]

* [Web widget](/channels/web-widget)
* [Telegram setup](/channels/telegram)
* [WhatsApp setup](/channels/whatsapp)
* [Escalate to human](/channels/handoff)
* [Contacts](/contacts)
