Channels
How people reach your agent — the web widget, Telegram, WhatsApp and the inbox.
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 | A chat widget embedded in your website |
| Telegram | A Telegram bot |
| WhatsApp Business messaging | |
| Inbox | An in-app channel for conversations without an external channel |
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.
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
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
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.
Switching a channel to Restricted with an empty allow list blocks everyone. Add the entries first, then switch.
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.
- 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 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 table entries authorise Telegram and WhatsApp senders, whose identity the messaging platform confirms. They do not authorise web widget visitors — see restricting the widget.
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
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 for how to configure it.
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
| 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 |
| 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 |