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

# Channels

> Learn about the different communication channels PingBack supports and how to connect them.

A channel is a connected messaging platform through which your customers can reach you. When a customer sends a message on any connected channel, PingBack routes it into your unified inbox as a conversation. Every conversation carries a `channel_type` field so you always know which platform a message came from.

Each channel has three core properties:

| Property    | Description                                                          |
| ----------- | -------------------------------------------------------------------- |
| `type`      | The channel platform (e.g., `webchat`, `whatsapp`, `telegram`).      |
| `config`    | Platform-specific credentials and settings (varies by channel type). |
| `is_active` | Whether the channel is currently accepting messages.                 |

## Supported channels

<CardGroup cols={3}>
  <Card title="Web widget" icon="message-circle" href="/channels/web-widget">
    Embed a live chat widget directly on your website. Customers can start a conversation without leaving your site. No external credentials required — just install the widget snippet.
  </Card>

  <Card title="Email" icon="envelope" href="/channels/email">
    Connect an email address to receive and reply to support emails directly in PingBack. Configure your inbound email settings in the channel config.
  </Card>

  <Card title="WhatsApp" icon="whatsapp" href="/channels/whatsapp">
    Connect your WhatsApp Business account via the Meta platform. Provide your Meta access token and phone number ID in the channel config, then register the callback URL shown in the channel settings.
  </Card>

  <Card title="Telegram" icon="paper-plane" href="/channels/telegram">
    Connect a Telegram bot. Provide your bot token in the channel config — PingBack automatically registers the webhook with Telegram on your behalf.
  </Card>

  <Card title="Instagram" icon="instagram" href="/channels/instagram">
    Connect your Instagram Business account via the Meta platform. Provide your Meta access token and page ID, then register the callback URL shown in the channel settings.
  </Card>

  <Card title="X (Twitter)" icon="x-twitter" href="/channels/x-twitter">
    Connect your X (formerly Twitter) account. Provide your `api_key` and `access_token` in the channel config to enable direct message support.
  </Card>
</CardGroup>

## Channel credentials by type

Different channel types require different configuration values. Here is what each channel expects in its `config`:

<Tabs>
  <Tab title="Web widget">
    The web widget (`webchat`) does not require external credentials. Configure it from the **Widget** section of your dashboard, where you can set your domain, welcome message, brand color, and logo.

    ```json theme={null}
    {
      "type": "webchat"
    }
    ```
  </Tab>

  <Tab title="WhatsApp">
    Provide your Meta access token, phone number ID, and register the provided callback URL in your Meta app settings.

    ```json theme={null}
    {
      "type": "whatsapp",
      "config": {
        "access_token": "your-meta-access-token",
        "phone_number_id": "your-phone-number-id"
      }
    }
    ```

    <Note>
      After connecting, PingBack adds a `_meta_setup_instructions` key to your channel config with the exact callback URL and verify token to enter in Meta's developer console.
    </Note>
  </Tab>

  <Tab title="Telegram">
    Provide your Telegram bot token. PingBack registers the webhook automatically when you save the channel.

    ```json theme={null}
    {
      "type": "telegram",
      "config": {
        "bot_token": "your-telegram-bot-token"
      }
    }
    ```
  </Tab>

  <Tab title="Instagram">
    Provide your Meta access token and page ID, then register the provided callback URL in your Meta app settings.

    ```json theme={null}
    {
      "type": "instagram",
      "config": {
        "access_token": "your-meta-access-token",
        "page_id": "your-page-id"
      }
    }
    ```

    <Note>
      After connecting, PingBack adds a `_meta_setup_instructions` key to your channel config with the exact callback URL and verify token to enter in Meta's developer console.
    </Note>
  </Tab>

  <Tab title="X (Twitter)">
    Provide your X API key and access token.

    ```json theme={null}
    {
      "type": "x",
      "config": {
        "api_key": "your-x-api-key",
        "access_token": "your-x-access-token"
      }
    }
    ```
  </Tab>
</Tabs>

## Plan limits

The number of channels you can connect depends on your plan.

| Plan | Channels allowed | Notes                                                        |
| ---- | ---------------- | ------------------------------------------------------------ |
| Free | 1                | Web widget only. Omnichannel integrations are not available. |
| Mini | Up to 3          | All channel types supported.                                 |
| Pro  | Up to 100        | All channel types supported.                                 |

<Warning>
  On the Free plan, you can only connect the web widget. Attempting to add WhatsApp, Telegram, Email, Instagram, or X requires upgrading to Mini or Pro.
</Warning>

## How channels connect to conversations

When a customer sends a message through a channel, PingBack creates or continues a conversation and records the `channel_type` on it. This lets you:

* **Filter your inbox** by channel to see all WhatsApp conversations, all email threads, etc.
* **Display the channel icon** alongside each conversation so agents always know the context.
* **Route outbound replies** through the correct channel adapter automatically — when an agent replies, PingBack sends the message back through the same channel the customer used.

Deactivating a channel (setting `is_active` to `false`) stops PingBack from routing new outbound messages through it, but does not delete existing conversations.
