Connect by JBRH Open Connect

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 What this means
Audience
both
Channels
emailphonewhatsappsmssoftphone
Last verified
Product version
6.3.2

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#

ChannelStatusWho carries itWhat it does today
EmailAvailableGmail through Google OAuth and the Gmail API, Microsoft Graph, or any IMAP and SMTP serverReads and triages arriving mail, drafts a reply, holds or sends it under the workspace's rules, and marks the thread in the mailbox itself.
PhoneAvailableA carrier for the PSTN leg, and on the realtime engine LiveKit SIP with a Gemini Live modelAnswers and places calls, transcribes and summarises them, and turns a spoken promise into a dated follow-up.
WhatsAppAvailableA WhatsApp Business provider, configured per workspaceReceives on a webhook, resolves the sender to a Person, keeps the conversation continuous and replies under the same rules as any other channel.
SMSFoundationWhichever provider a workspace has configured; the carrier on the live account carries no SMSInbound, STOP and suppression work. Sending is provider-dependent, and commercial sending in India additionally requires DLT registration.
SoftphoneAvailableSIP over WebSocket to the carrier's registrar, from the browserGives a person their own line inside the app. It is an ordinary channel_routes row, not a separate system.

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, 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.