SMS sending is coming soon. This guide describes the planned RCS → SMS fallback behaviour for campaign flows. The capability detection and flow configuration concepts are final — SMS delivery will activate when the SMS channel launches. See SMS overview.
When a campaign SEND node targets RCS but the contact’s device is not RCS-capable, the platform can automatically fall back to SMS. This is configured per SEND node, not globally.

How capability detection works

Before executing a SEND node, the platform checks device capability internally (results are cached with a 4-hour TTL). If the device is not RCS-capable, the SEND node acts according to its fallback configuration — no RCS send attempt is made.
A 404 from POST /v1/messages on a direct API send means the device is not RCS-capable. In campaign flows, the fallback logic handles this automatically — the 404 is never surfaced to the campaign execution.

Fallback options per SEND node

OptionBehavior
fallback: noneContact execution is skipped. The flow continues but no message is sent. A rcs_not_reachable event is logged and available for CONDITION branching.
fallback: smsAutomatic SMS using the same text content. Rich card content (images, suggestions) is converted to plain text.
fallback: sms_customSMS using a separate SMS template you configure on the node. Use this when your rich card content doesn’t translate well to plain text.

Configuring fallback in the flow builder

In the campaign flow builder:
  1. Add a SEND node and select your RCS channel and template.
  2. In the node settings, open Fallback and choose your option.
  3. For sms_custom, select the SMS template to use when the RCS fallback fires.
  4. Connect the node’s output edges — the flow continues to the next node regardless of which channel was used.
Optionally, add a CONDITION node after the SEND to branch on whether the message used RCS or SMS:
SEND (RCS, fallback: sms_custom)
  └─ CONDITION: channel_used == "sms"
       ├─ yes → different next step for SMS recipients
       └─ no  → standard next step for RCS recipients

Billing

The fallback affects which pricing unit is applied — no RCS hold is created for a contact whose device fell back to SMS.
ScenarioBilling
RCS-capable deviceRCS pricing (Basic or Single depending on content)
Fell back to SMSSMS flat rate; no RCS reservation created
Skipped (fallback: none)No charge — execution skipped
The UsageEvent for a fallback send includes:
{
  "original_channel": "RCS",
  "fallback_channel": "SMS",
  "fallback_reason": "DEVICE_NOT_CAPABLE"
}
This means your invoice and usage reports will show the send as SMS, not RCS — even though the campaign flow targeted RCS.

Rich card → SMS text conversion (fallback: sms)

When fallback: sms is set, the platform converts rich card content automatically:
RCS contentSMS output
content.textSent as-is
rich_card.standalone.content.titleFirst line of SMS text
rich_card.standalone.content.descriptionSecond line
rich_card.standalone.content.mediaOmitted (SMS cannot carry images)
suggestions (reply chips)Omitted
rich_card.carouselEach card’s title — truncated to fit SMS length limit
For campaigns where visual content is essential, use fallback: sms_custom with a purpose-built SMS template instead of relying on automatic conversion.

Direct API sends

When sending directly via POST /v1/messages, RCS capability is checked at the API layer. If the device is not capable, the API returns 404 — no automatic SMS fallback occurs. Fallback is a campaign flow feature only. For API-driven multi-channel logic, send separately to each channel and use the 404 response to decide your own fallback path:
// Attempt RCS
POST /v1/messages
404 device_not_capable

// Fall back to SMS in your own code
POST /v1/messages
{ "channel": "sms", "to": "+4917612345678", ... }

RCS messaging types

Content shapes and billing units for RCS.

Campaigns in depth

SEND node configuration and CONDITION branching.

RCS text API

Direct API sends and the 404 not-capable response.

Multi-channel campaign path

Combining RCS and email in one flow with condition-based routing.