MessagePipedocs
Concepts

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

ChannelSend pathRecipient formatContent fields
emailPOST /v1/email/sendRFC 5322 addresssubject, text, html, from, reply_to, attachments
smsPOST /v1/sms/sendE.164 phone numberbody
pushPOST /v1/push/sendDevice tokentitle, body, data
chatPOST /v1/chat/sendWhatsApp Business id / phonebody

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:

EventWhen
sentProvider accepted the payload.
deliveredRecipient mailbox / handset / app received it.
bouncedHard / soft bounce, undeliverable.
failedTerminal 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.

On this page