# Channels

Connect works across five channels: email, phone, WhatsApp, SMS and a softphone in the browser. Four are available end to end. SMS is the exception — inbound messages, STOP and suppression all work, while sending depends entirely on the provider a workspace has configured, and the carrier on the live account carries no SMS at all.

- **Status:** Available
- **Audience:** both
- **Channels:** email, phone, whatsapp, sms, softphone
- **Last verified:** 2026-09-10
- **Canonical:** https://connectbyjbrh.com/docs/product/channels/

## What a channel is here

A channel is a way in and a way out, plus the identity that owns it. A mailbox, a phone number, a WhatsApp business identity and a person's own softphone line are all rows in the same routing table, each belonging to one workspace. That is why an address arriving on one channel can be recognised as somebody you already know on another: the address is an Identity, and the Identity resolves to a Person.

A channel is not a separate product with its own inbox. It has its own adapter at the point of arrival and its own provider at the point of sending, and between those two points every channel runs the same path.

## The five, and what each does today

| Channel | Status | Who carries it | What it does today |
|---|---|---|---|
| Email | Available | Gmail through Google OAuth and the Gmail API, Microsoft Graph, or any IMAP and SMTP server | Reads and triages arriving mail, drafts a reply, holds or sends it under the workspace's rules, and marks the thread in the mailbox itself. |
| Phone | Available | A carrier for the PSTN leg, and on the realtime engine LiveKit SIP with a Gemini Live model | Answers and places calls, transcribes and summarises them, and turns a spoken promise into a dated follow-up. |
| WhatsApp | Available | A WhatsApp Business provider, configured per workspace | Receives on a webhook, resolves the sender to a Person, keeps the conversation continuous and replies under the same rules as any other channel. |
| SMS | Foundation | Whichever provider a workspace has configured; the carrier on the live account carries no SMS | Inbound, STOP and suppression work. Sending is provider-dependent, and commercial sending in India additionally requires DLT registration. |
| Softphone | Available | SIP over WebSocket to the carrier's registrar, from the browser | Gives a person their own line inside the app. It is an ordinary `channel_routes` row, not a separate system. |

> **Note** Four of the five are available to both the operator's workspace and a customer's, over the same implementation. WhatsApp is configured per workspace, so its screen belongs to a workspace that has the channel.

## What every channel shares

- **One person.** Two addresses that resolve to the same Person produce one relationship and one timeline, not two.
- **One question before anything goes out.** The same decision is asked on email, WhatsApp, SMS and voice: may this happen at all, must somebody approve it, and only then may it go now.
- **One queue.** Whatever a channel cannot settle becomes an item in [Needs You](/docs/autonomy/needs-you/), ranked against everything else waiting.
- **One record.** A call, a thread and a message all land on the same relationship, so a conversation that starts on the phone and continues by mail reads as one conversation.
- **One allowance.** Work that costs money is metered against the workspace's plan wherever it happens.

## Where the channels genuinely differ

Two stages carry every difference. At ingest, each provider has its own adapter and its own shape — a Gmail history cursor is nothing like an IMAP UID, and neither resembles a carrier webhook. At the action stage, each provider has its own send, its own idea of what counts as acknowledgement, and its own failure vocabulary. Adding a provider touches those two places and nothing between them.

The other real difference is time. Mail tolerates a pause for approval; a caller on the line does not. That is why voice carries its own gate — a workspace can require a person's yes before Connect places a call — while an answered call is handled to completion and reviewed afterwards.

## When a channel stops working

**A mailbox stops fetching** — Connection alone is not health. A mailbox that is authenticated but returning nothing, or failing to send, raises a verdict rather than sitting quietly.
**A line has no worker** — On the realtime engine a call needs a worker that has checked in recently and has capacity. A saturated fleet refuses admission rather than answering into silence.
**The budget is spent** — Work needing a paid model stops. A caller already on the line still gets an answer; scheduled work waits.
**The daily allowance is spent** — Mail is held rather than dropped, and the read cursor deliberately does not advance, so nothing is skipped.
**The provider refuses** — The failure is recorded with its class, and a message is only ever reported as sent once the provider has acknowledged it.

## Questions

### Can I run one channel and leave the others off?

Yes. Each channel carries its own mode, and one of the modes is off. A channel that is off is not a channel that quietly queues work — nothing arrives on it and nothing is sent from it.

### Why is SMS called Foundation when a text message reaches me?

Because the word describes what you can use rather than what exists in the code. Receiving, STOP and suppression are real; sending needs a provider that carries SMS, and the live carrier does not. The Phone screen says so instead of showing a thread that cannot send.

### Does a new channel change how anything else behaves?

No. A channel supplies an adapter and a send. Triage, grounding, the autonomy decision, the relationship record and the audit entry are shared, so a channel cannot invent its own rules about what may be sent.

## Related

- [Connect by JBRH](https://connectbyjbrh.com/docs/product/)
- [Email in Connect](https://connectbyjbrh.com/docs/email/)
- [Phone and voice in Connect](https://connectbyjbrh.com/docs/phone/)
- [WhatsApp in Connect](https://connectbyjbrh.com/docs/whatsapp/)
- [Sending SMS: what is available today](https://connectbyjbrh.com/docs/sms/sms-outbound-status/)
- [What Connect decides on its own](https://connectbyjbrh.com/docs/product/what-connect-decides/)
- [The data you give Connect](https://connectbyjbrh.com/docs/product/data-you-give-connect/)

## What this page is based on

- `docs-source/facts.py` CHANNELS — provider and status per channel
- AGENTS.md §1 and §9a — channels and the phone system
- PROJECT-STATE.md — WhatsApp visibility per workspace, 2026-09-09
