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

# Messaging channels (Telegram, Slack, Messenger)

> Connect Discord, Teams, Google Chat, and other messaging channels to one shared assistant

Multi-channel text lets the same assistant answer customers on Telegram, Slack, Messenger, Microsoft Teams, Discord, Google Chat, X, and WhatsApp. These messaging channels are text-only; phone and WhatsApp voice are configured separately. Whatever the channel, every conversation lands in [History](/monitoring/history).

## Tools (voice parity)

The assistant can use the same text-safe tools as on voice:

* API tools (HTTP)
* MCP tools (workspace + assistant servers)
* Knowledge base search
* Calendar integrations (built-in engine / Cal.com / Calendly / Acuity / eTermin — HighLevel calendars are voice-only)
* Built-ins: current time, business hours, send SMS, send email, schedule callback, set variable

Voice-only actions are unavailable on text channels: call or assistant transfer, end call, DTMF/keypad, and payment-card collection.

## Prerequisites

1. Your plan includes the channel you want to connect (Telegram, Slack, Messenger, Teams, Discord, Google Chat, X, WhatsApp text / WhatsApp voice).
2. If a provider requires a webhook, use the exact URL shown after you connect the channel. Verified custom domains are supported automatically.

## Connect (product UI)

Settings → Channels → Telegram / Slack / Messenger:

1. Pick an assistant.
2. Connect with one-click where available (**Add to Slack**, **Connect with Facebook**) or paste bot credentials manually.
3. Configure conversation settings (below).
4. Save — Telegram webhooks are registered automatically; Slack/Messenger **BYO** need the shown webhook URL in their developer consoles. One-click installs require no URL copy.

### Slack — Add to Slack

Preferred onboarding (platform domain / root workspaces only — not whitelabel hosts) uses the **shared Famulor Slack app**:

1. Settings → Channels → Slack → **Add to Slack**
2. Approve the requested Slack permissions.
3. Return to the channel settings and confirm the connection is active.

Manual bot-token + signing-secret paste remains available as a fallback (per-connector webhook URL shown in Settings). Whitelabel hosts keep manual only (the shared bot would appear as Famulor).

Public API: `GET/POST /api/v1/slack/oauth` · MCP: `get_slack_oauth_config`, `start_slack_oauth`.

### Messenger — Connect with Facebook

Preferred onboarding (platform domain / root workspaces only — not whitelabel hosts) uses the **same platform Meta app** as WhatsApp:

1. Settings → Channels → Messenger → **Connect with Facebook** (HTTPS required)
2. Approve the requested permissions and select a Facebook Page.
3. Return to the channel settings and confirm the connection is active.

Manual page-token paste remains available as a fallback (per-connector webhook URL shown in Settings).

Public API: `GET/POST /api/v1/messenger/facebook-login` · MCP: `complete_messenger_facebook_login`.

## Conversation settings

Applies to every text channel:

| Setting                            | Default | Description                                                                                                                                         |
| ---------------------------------- | ------- | --------------------------------------------------------------------------------------------------------------------------------------------------- |
| **Response delay (seconds)**       | `5`     | Slider `0`–`30`. Wait after the last customer message before one reply (merges quick multi-message bursts). `0` = reply instantly to every message. |
| **Inactivity timeout (minutes)**   | `30`    | Minutes of inactivity after the last customer message before the conversation is marked ended.                                                      |
| **Allow re-triggering**            | off     | If enabled, the conversation-ended webhook can fire again when the customer resumes an ended conversation and goes inactive again.                  |
| **Conversation ended webhook URL** | empty   | Optional HTTPS URL. Leave empty to disable. Use **Test webhook** to send a sample payload.                                                          |

### Conversation ended webhook

Three things send a `conversation.ended` delivery:

* **Inactivity** — the inactivity timeout above elapses with no new customer message (checked about once a minute).
* **Manual** — someone selects **Actions → End conversation** on an open conversation in [History](/monitoring/history).
* **Test** — you select **Test webhook** in the connector's settings; this always sends a realistic example payload, whether or not a real conversation has ended yet.

Before sending, the platform runs the assistant's configured [analysis](/assistants/analysis) fields over the transcript and closes the conversation, so the payload always carries the finished analysis rather than a partial one. By default each conversation notifies its webhook once; turn on **Allow re-triggering** if a customer can resume an ended conversation and you want a fresh notification the next time it goes inactive.

A delivery looks like this:

```json theme={null}
{
  "event": "conversation.ended",
  "timestamp": "2026-08-26T14:32:07.000Z",
  "reason": "inactivity",
  "data": {
    "tenant_id": "9f86d081-0000-4000-8000-000000000020",
    "conversation_id": "c1b2c3d4-0000-4000-8000-000000000010",
    "platform": "telegram",
    "status": "closed",
    "duration_sec": 187,
    "message_count": 6,
    "conversation": {
      "id": "c1b2c3d4-0000-4000-8000-000000000010",
      "platform": "telegram",
      "external_thread_id": "123456789",
      "external_user_id": "123456789",
      "external_user_name": "Max Mustermann",
      "started_at": "2026-08-26T14:28:40.000Z",
      "ended_at": "2026-08-26T14:32:07.000Z",
      "last_customer_message_at": "2026-08-26T14:29:55.000Z"
    },
    "connector": { "id": "1b2c3d4e-0000-4000-8000-000000000030", "name": "Support Telegram", "platform": "telegram" },
    "assistant": { "id": "2c3d4e5f-0000-4000-8000-000000000040", "name": "Support Assistant" },
    "transcript": "Customer: Hi, I need help with my order.\nAssistant: Of course — what's your order number?",
    "messages": [
      { "id": "msg-1", "role": "user", "direction": "inbound", "text": "Hi, I need help with my order.", "created_at": "2026-08-26T14:28:40.000Z" }
    ],
    "analysis": {
      "summary": "Customer asked about an order and got help finding it.",
      "sentiment": "positive",
      "success": true,
      "success_reason": "The order was located and the delivery date confirmed.",
      "data": { "order_number": "12345" },
      "analyzed_at": "2026-08-26T14:32:07.000Z"
    }
  }
}
```

`reason` is `inactivity`, `manual`, or `test`. `conversation`, `connector`, `assistant`, `transcript`, and `analysis` are repeated at the top level of the payload too, for older receivers built against that flat shape instead of the `data` envelope. Inside `analysis`, only the parts you enabled on the assistant are present — sentiment, success plus its reason, and a `data` map of your own extracted fields; see [Analysis](/assistants/analysis) for the full shape.

Configure the target in the **Conversation ended webhook URL** field above, or with `PATCH /api/v1/messaging-connectors/{id}` / `update_messaging_connector` — each channel connector carries its own URL. To send a delivery again after the fact — for example once a re-evaluation changed the analysis — use **Resend webhooks** on the conversation in [History](/monitoring/history).

## Beta connectors

Ten additional channels connect the same way, once your workspace turns on **Beta Features** under **Settings → Workspace**: Freshdesk, Gmail, Outlook, Zendesk, ServiceNow, Intercom, Zoho Mail, AgentMail, Instagram, and Zulip. Their entries stay out of **Settings → Channels** until Beta Features is on.

Instead of pasting a bot token or app secret, you connect these through Famulor's OAuth connector flow: sign in to the account once, and Famulor keeps the connection alive. Beyond the [conversation settings](#conversation-settings) every text channel shares, a Beta connector can add:

| Setting                   | What it does                                                                                                                                           | Where it applies                                      |
| ------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------ | ----------------------------------------------------- |
| **Reply mode**            | Send the assistant's reply automatically, or save it as a draft in the mailbox for a teammate to review and send.                                      | Gmail, Outlook                                        |
| **Watch**                 | Which part of the mailbox the assistant answers: the Inbox (the default), the whole mailbox, or a single label or folder.                              | Gmail, Outlook, Zoho Mail                             |
| **Extra action**          | One additional capability specific to that service — applying a label, tagging a ticket, reacting to a message, and similar. Off until you turn it on. | Every Beta connector, one action each                 |
| **Import existing items** | On connect, how far back to pull messages that already exist — the last hour, 24 hours, or 7 days. Defaults to new messages only.                      | Freshdesk, ServiceNow, Intercom, Zoho Mail, Instagram |

<Warning>
  **Import existing items** is not a silent import: every message pulled in gets a real, automatic assistant reply. Leave it on **Only new messages** unless you want the assistant to answer your existing backlog.
</Warning>

## Billing

Sending and receiving messages on Telegram, Slack, Messenger, Teams, Discord, Google Chat, X, and the Beta connectors costs credits per message, at the workspace's **Messaging (sent)** / **Messaging (received)** rate — the same rate [WhatsApp text](/channels/whatsapp#billing) uses. Current rates are on the [Usage page](https://app.famulor.io/usage); see also [How usage is billed](/billing/minutes).

## Platform apps you create

| Channel     | What you create                                                               | Key fields                                                                           |
| ----------- | ----------------------------------------------------------------------------- | ------------------------------------------------------------------------------------ |
| Telegram    | Bot via [@BotFather](https://t.me/BotFather)                                  | Bot token                                                                            |
| Slack       | Famulor Slack app (Add to Slack) or BYO Slack App (Bot + Event Subscriptions) | OAuth install; or bot token `xoxb-…` + Signing secret (BYO)                          |
| Messenger   | Platform Meta app (Connect with Facebook) or BYO Meta app + Page              | Page access token, App secret, Verify token (BYO); Facebook Login for preferred path |
| Teams       | Azure Bot                                                                     | App ID, App password                                                                 |
| Discord     | Discord Application                                                           | Bot token, Public key, Application ID                                                |
| Google Chat | GCP Chat app + service account                                                | Service account JSON                                                                 |
| X           | X developer app + Activity API webhook                                        | Consumer secret, OAuth user token (or client ID + refresh token)                     |

Copy the connector-specific webhook URL shown in **Settings → Channels**. Telegram configures this automatically after you save.

## Public API & MCP

* REST: `GET/POST /api/v1/messaging-connectors`, `PATCH/DELETE /api/v1/messaging-connectors/{id}`, `GET /api/v1/messaging-connectors/{id}/watch-options` (Gmail labels / Outlook and Zoho Mail folders), `POST /api/v1/messaging-connectors/{id}/ended-webhook-test`
* Slack OAuth: `GET/POST /api/v1/slack/oauth`
* WhatsApp templates: `GET/POST /api/v1/whatsapp/templates`
* WhatsApp outbound voice: `POST /api/v1/calls/whatsapp-outbound`
* MCP tools: `list_messaging_connectors`, `list_messaging_connector_watch_options`, `create_messaging_connector`, `update_messaging_connector`, `delete_messaging_connector`, `test_messaging_ended_webhook`, `get_slack_oauth_config`, `start_slack_oauth`, plus WhatsApp template/call tools
* OpenAPI tag: **Messaging** / **Calls**

## WhatsApp

Full setup (credentials, webhook fields, templates, voice toggles): **[WhatsApp (Text + Voice)](/channels/whatsapp)**.

* **Text:** WhatsApp Business chat, when included in your plan.
* **Voice:** WhatsApp calling on the same connection, when included in your plan — see [WhatsApp Voice](/telephony/whatsapp-voice).
* **Templates:** `GET/POST /api/v1/whatsapp/templates` (+ MCP tools).
* **Outbound voice:** `POST /api/v1/calls/whatsapp-outbound`.

## Email

Full setup — connect a domain, create addresses, set defaults: **[Email channel setup](/channels/email)**. Email conversations appear in [Email history](/email/history) alongside your other channels.

## SMS

A workspace number that is SMS-capable and has **Allow outbound SMS** enabled can send text through the built-in **Send SMS** tool — from an assistant mid-call or mid-chat, or as an automation step (for example, a confirmation after a call ends, or an appointment reminder). See [SMS](/api-reference/sms) for which numbers qualify and the send API.

A few practices keep SMS useful instead of annoying:

* Keep messages short and to the point — SMS has no rich formatting, and it's billed per 160-character segment (70 if you use emoji or accented characters), so length costs money.
* Include opt-out instructions where local law requires them.
* Send a test message to yourself before turning a template loose on a full campaign.
* Keep an eye on SMS spend under **Usage**, especially after changing a template or targeting a new country.
