Channels

A channel is a delivery path for a message: SMS, RCS, or WhatsApp. Most messaging platforms expose each of these as a separate API, which makes the channel the developer's problem, because every send starts with a decision about how the message should travel. Sent inverts that: the channel is a routing decision the platform makes per message and per recipient, behind a single send call. This page explains why Sent built the model that way, what each channel contributes, and which factors drive routing.

Intent-Based Messaging

When each channel is its own API, channel management leaks into your app code: separate integrations, separate content formats, and hand-written fallback logic. Sent replaces channel selection with intent-based messaging. You state what to send and to whom, and the platform works out the delivery path:

import SentDm from '@sentdm/sentdm';

const client = new SentDm();

await client.messages.send({
  to: ['+14155551234'],
  template: {
    id: '7ba7b820-9dad-11d1-80b4-00c04fd430c8',
    parameters: { name: 'John Doe' },
  },
});

This call omits the channel field, so Sent chooses the route. That is the default behavior, equivalent to channel: ["sent"].

Sent discovers the channels available to each recipient, selects a route, and adapts the content format to the channel it selects.

The same call can therefore produce a WhatsApp delivery for one recipient and an SMS delivery for another, without any branching in your code. When a specific channel matters (a compliance requirement, for example), the channel field pins the route. Channel Selection Strategies covers the request syntax and its trade-offs.

The Three-Layer Channel Model

Sent supports three channels, and they play deliberately different roles:

  • SMS: The universal foundation. SMS works on every mobile device with cellular connectivity, rides carrier infrastructure, and defines the baseline capabilities every template must support. It's also the final fallback when richer channels can't deliver.
  • RCS: The carrier-native rich layer. RCS adds interactive suggestion chips and a branded, verified sender over carrier networks, natively in Google Messages on Android, with no separate app install. It bridges the gap between SMS reach and WhatsApp interactivity for Android users.
  • WhatsApp: The rich engagement layer. WhatsApp delivers media, buttons, and branded business profiles, supports conversation-based interactions, and reports read receipts.

The layering is the point: SMS guarantees reach, RCS and WhatsApp add richness where the recipient's device and registration allow it, and routing decides, per message, which layer applies.

One Template, Every Channel

Because every message starts from a template, content adapts to the capabilities of whichever channel ends up carrying it:

  • Universal compatibility: every template starts from content that works on SMS, the most constrained channel, so every message is deliverable everywhere.
  • Automatic enrichment: delivered over WhatsApp, the same template gains interactive buttons, media headers, and branded formatting.
  • Graceful degradation: complex WhatsApp templates simplify for SMS delivery, preserving the essential information.

The same template renders differently on each channel:

Message TypeSMSRCSWhatsApp
Authentication"Your verification code is 123456"Branded text from your verified sender with a "Got it" suggestion chipRich template with branding, verification code, security tips, and interactive "Got it" button
Order Update"Order #12345 shipped. Track: [link]"Branded text with a "Track Order" suggestion chipRich card with product image, detailed status, tracking button, and customer service contact

Channel Discovery

Channel availability is a property of each recipient, not of your account. When Sent first encounters a phone number, it establishes which channels can reach it: carrier and number-type data determine SMS and RCS deliverability, and Sent checks WhatsApp registration status separately. Providers also report what each channel supports (media, templates, inbound messages), so routing knows whether a channel is reachable and what it can carry.

Sent stores the result on the contact as its available channels and default channel, and the result can change over time. A recipient who registers for WhatsApp after months of SMS-only delivery can start receiving WhatsApp messages without any change to your code.

Routing Factors

When more than one channel can reach a recipient, the router weighs a small set of factors:

  • Region: country-specific regulation and carrier policy constrain which routes Sent can use.
  • Content: media and interactive elements route to channels that support them; plain text can travel on any channel.
  • Cost: among viable routes, the router prefers the cheaper one, based on regional pricing, provider rates, and conversation-window rules.
  • Fallback: when the selected channel can't deliver, the router retries on the next viable channel, ending at SMS.

Fallback applies only to automatic selection. A request that pins the channel field is a broadcast instruction, not a fallback order: each listed channel produces its own message, and a pinned channel that can't deliver fails rather than falling back.

Content Adaptation Mechanics

Adaptation happens at send time, per route:

  • Character limits: rich templates compress to fit SMS constraints while preserving the essential information and the call to action.
  • Media: images and videos become descriptive text with links on SMS and RCS; WhatsApp receives the full media experience.
  • Interactive elements: buttons and quick replies become text alternatives with URL links on SMS, and they remain fully interactive on RCS and WhatsApp.

What Each Channel Brings

RCS

Carrier-native delivery: RCS messages travel over carrier networks directly into Google Messages, the default Android messaging app, so recipients install nothing.

Branded sender: unlike SMS, which shows a phone number, RCS messages display your company logo, name, and a verified checkmark.

No number provisioning: RCS does not use phone numbers. Each business operates an "RCS Agent" (a branded sender identity), so you don't need short codes or carrier number registration like SMS requires.

Suggestion chips: RCS messages sent through Sent include suggestion chips: quick reply, open URL, and dial number buttons displayed below the message. Sent maps up to four template buttons to chips per message. Suggestion chips aren't available on SMS.

Rich cards and carousels (roadmap): rich cards (title, description, image or video, and action buttons) and carousel cards (scrollable sets of rich cards) are part of the RCS standard but aren't yet available through Sent. RCS messages currently render as text plus suggestion chips.

Read receipts: like WhatsApp, RCS delivers read receipts when the recipient opens the message. SMS has no equivalent.

Built-in STOP chip: every RCS message automatically includes a STOP button for compliance, so you don't need to add opt-out footer text. A tap on the chip arrives as an ordinary inbound STOP message and opts the contact out, exactly as texting STOP does on SMS. Handling Opt-Outs and Consent shows how to mirror those opt-outs into your own systems, and the events reference documents the inbound webhook payload.

Automatic fallback: when RCS can't reach a recipient (unsupported device or carrier), automatic channel selection falls back to SMS.

Sender Profile verification: RCS requires an approved RCS Sender Profile (logo, verified name, brand color) before you can send messages, managed through the Sent dashboard.

RCS sender setup is not self-service. Unlike SMS and WhatsApp, which can be activated in the dashboard, RCS requires a one-time approval process with carriers. Contact Sent to get started.

WhatsApp

Managed template approval: Sent submits new templates to Meta and tracks their approval status, so you never work in Meta's platform directly.

Business verification: WhatsApp Business accounts display verification badges and professional profiles, which recipients trust more readily than SMS from an unknown number.

SMS

Carrier network integration: SMS routing is aggregator- and carrier-agnostic. Sent validates phone numbers in real time, assesses SMS capability, and routes through carrier networks without depending on a single provider.

Regulatory compliance: Sent handles regional SMS requirements, carrier filtering, spam prevention, and opt-out management automatically for each country.

Predictable economics: a straightforward per-message pricing model keeps cost calculation and customer billing transparent.

Further Reading

The channel model means fallback logic, regional preferences, and platform-specific formats live in the platform rather than in your code. To act on it:

On this page