Skip to main content
Channels are one communication API. Voice, WhatsApp, email, SMS, web chat: each is a different way to reach the same human, and every one of them writes the same spine - entity, conversation, interaction, outcome, event. That is the whole design. Adding a channel to your application changes routing, not architecture, because nothing downstream of Transport knows or cares which wire the message rode in on. Two kinds of connector, and the distinction matters. Channel connectors (WhatsApp, email, SMS, web chat, LinkedIn) carry conversations - they deliver interactions to an entity and back. System connectors (CRM, Sheets, Shopify, HubSpot) push and pull rows - they sync records with communication state but never carry a conversation. A HubSpot sync updates an entity; a WhatsApp message extends a conversation. Same backend, different verbs.

The primitives

Voice is a channel too - the largest one. It has its own component page because the rails underneath it are deep: see the Calling Engine.

On the spine

Channels sit in the Transport layer: they reach the human. An inbound message resolves its sender identity to an entity, lands in that entity’s channel-neutral conversation, and runs as one interaction; an outbound message is an interaction routed out through the channel the entity is reachable on. Every delivery, reply, and failure emits an event, so the rest of your system reacts to a WhatsApp reply exactly the way it reacts to a completed call.

What stays hidden

Provider quirks, wherever normalization is safe. WhatsApp template approval mechanics, SES bounce classification, per-carrier SMS segmentation, chat transport details - these differ per provider and change under you. The API gives you a message with a status; the connector absorbs the rest. Where a channel has semantics you genuinely need (WhatsApp’s 24-hour session window, for one), they surface as explicit fields, not leaked provider payloads.

Status

Per channel, honestly:
  • Voice - production, via the Calling Engine (~5 lakh calls/month).
  • WhatsApp - live via provider.
  • Email (AWS SES) - in build.
  • SMS - in build.
  • LinkedIn - partner access.
  • Web chat - today via the Chat API.
The unified messages surface described above is the shape channels converge on; today each channel is reached through the paths linked here.

Go deeper

Calling Engine

The voice channel: owned rails, numbers, calls, streams.

Conversations

The channel-neutral thread every channel writes into.

Chat API

Web chat today: text in, text out, one URL swap.

Telephony

SIP, PSTN, and carrier-level details for the voice channel.