Channels
Email, SMS, push, chat (what each accepts and emits).
A channel is the transport family the message takes. Pick the one that fits, fill in the channel-specific content fields, and MessagePipe routes the request to the best-priority active provider for that channel.
There are exactly four channels, and each has its own send path. WhatsApp is
a provider delivered over the chat channel, not a channel of its own. There
is no message channel (message was the old name for sms).
| Channel | Send path | Recipient format | Content fields |
|---|---|---|---|
email | POST /v1/email/send | RFC 5322 address | subject, text, html, from, reply_to, attachments |
sms | POST /v1/sms/send | E.164 phone number | body |
push | POST /v1/push/send | Device token | title, body, data |
chat | POST /v1/chat/send | WhatsApp Business id / phone | body |
Delivery events
Every channel emits the same canonical event vocabulary, so your webhook listener stays one switch statement regardless of how many channels you wire up:
| Event | When |
|---|---|
sent | Provider accepted the payload. |
delivered | Recipient mailbox / handset / app received it. |
bounced | Hard / soft bounce, undeliverable. |
failed | Terminal provider error. |
The send status lifecycle is queued -> sent -> delivered | bounced |
failed. The platform does not emit opened or clicked events.
Not every provider emits every event: APNs, for instance, is silent on delivery success. See Webhooks for the per-channel coverage matrix.