RCS best practices
With RCS rich messaging, you can create conversational, interactive experiences that go beyond traditional SMS. This topic provides guidance for designing effective RCS messages, including suggestion strategy, rich card and carousel layout, media optimization, message expiration, fallback planning, and monitoring.
For details on individual features, see Configuring RCS suggestions, Sending RCS rich cards, Sending RCS carousels, Configuring RCS message expiration, Configuring per-message SMS or MMS fallback, and RCS message events.
Conversational and interactive design
RCS messages support interactive elements such as suggested replies, suggested actions, rich cards, and carousels. To use these features effectively, treat each message exchange as part of an ongoing conversation rather than a one-way notification.
- Open with context and options
-
Include a clear greeting, state what the user can do, and provide suggested replies to guide the next step. This sets expectations and reduces friction.
- Keep messages concise
-
Aim for fewer than 300 characters per text message. Break complex information into multiple messages or use a rich card for structured content.
- Avoid dead ends
-
Every message should lead to a next step. Offer follow-up suggestions, a main menu option, or a path to a human agent.
- Address the user directly
-
Use second person. Write "Your appointment is confirmed" rather than "The appointment has been confirmed."
Suggestion strategy
Suggestions (both replies and actions) appear as interactive chips below your
message. They reduce typing, increase engagement, and let you route responses
through structured PostbackData values. For the full list of
suggestion types, see
Configuring RCS suggestions.
Write concise action labels
The Text field has a 25-character limit. Use action-oriented
language that tells the user exactly what happens on tap.
| Avoid | Prefer |
|---|---|
| "Option 1" | "Book for Monday" |
| "Click here" | "View order status" |
| "More info" | "See pricing details" |
Offer 3 to 5 options
Three suggestions is ideal for most interactions. You can include up to 11 suggestions per message (4 per rich card), but more than 5 options at a time tends to overwhelm users. If you need more choices, use a carousel or split the flow into multiple steps.
Route on PostbackData
Use PostbackData for backend routing logic instead of parsing
the display text. This approach supports localization (you can change the
user-visible Text without modifying your routing) and provides
structured context for your application.
Encode the action, entity, and context in the postback value. For example:
confirm_order_12345 cancel_appointment_20260615 nav_main_menu
Use consistent prefixes (such as book_,
confirm_, cancel_, nav_) to simplify
routing in your backend.
Important
Handle stale postbacks gracefully. A user might choose a suggestion hours after receiving it. Check that the referenced entity still exists and inform the user if the action is no longer valid.
Rich card and carousel design
Rich cards and carousels present structured content (images, titles, descriptions, and suggestions) in a visual format. For implementation details, see Sending RCS rich cards and Sending RCS carousels.
Standalone rich cards
-
Use
VERTICALorientation for the most consistent rendering across devices. -
Use
TALLmedia height to give images adequate display space on both Android and iOS. -
Keep title and description text concise. Some clients crop text beyond three lines.
-
URLs in the description text do not work as links on all clients. Use an
OpenUrlsuggested action instead of embedding links in descriptions. -
Include one clear call-to-action suggestion per card. Multiple competing actions reduce conversion rates.
Carousels
-
Place the recommended or most relevant option in the first card position. Users engage most with the first visible card.
-
Use outer (message-level) suggestions for navigation actions such as "Back to menu" or "Help." Reserve card-level suggestions for actions specific to that card.
-
Keep card content more concise than standalone cards because carousel cards have less vertical space.
-
Carousel card media height is limited to
SHORTorMEDIUM(TALLis not supported in carousels). -
Ensure the combined media across all cards stays under 100 MB. Optimize images before uploading.
Media best practices
Media files (images, videos, PDFs) enhance message engagement but add payload size and rendering variability. For file format and size requirements, see Sending rich RCS messages.
-
Compress images before uploading. Use JPEG for photographs and PNG for graphics with transparency.
-
Keep video files under 5 MB for reliable delivery across carriers and devices.
-
Provide a
ThumbnailUrlfor video and large-file messages. Thumbnails display while the full media loads and improve the user experience on slow connections. -
GIF animations play on Android but display as a static first frame on iOS. Do not rely on GIF animation to convey critical information.
-
Host media on HTTPS URLs or in Amazon S3 (using
s3://URIs). All media URLs must match the pattern^(https://|s3://).+$.
TTL and fallback strategy
Time to live (TTL) and fallback configuration work together to ensure your message reaches the user even when RCS delivery fails. For implementation details, see Configuring RCS message expiration and Configuring per-message SMS or MMS fallback.
Setting TTL values
Always set a TimeToLive value for time-sensitive content.
Match the TTL to the content relevance window.
| Content type | Recommended TTL |
|---|---|
| One-time password (OTP) or verification code | 30 to 120 seconds |
| Flash sale notification | Duration until sale ends |
| Appointment reminder | Time until appointment |
| Delivery update | 1 to 4 hours |
Note
The API minimum is 1 second, but a TTL of at least 10 seconds is recommended to allow sufficient delivery time. The maximum is 172,800 seconds (48 hours).
SMS or MMS fallback
Configure a FallbackConfiguration for critical messages
(OTPs, order confirmations, security alerts) so the content reaches the
user if RCS delivery fails or expires.
-
Set the
Channelfield toSMSorMMSdepending on whether you need media in the fallback. -
Keep the
MessageBodywithin 1,600 characters (the fallback limit, which is shorter than the 3,072-character RCS text limit). -
Test fallback delivery end-to-end by sending to a phone number that does not support RCS and verifying that the SMS or MMS message arrives.
Monitoring and events
Use event destinations and delivery events to monitor message performance and optimize your messaging strategy. For details on event types and configuration, see RCS message events.
-
Configure event destinations before you begin production sending. This ensures you capture delivery, read, and expiration events from the start.
-
Monitor message expiration rates to determine whether your TTL values are appropriate. A high expiration rate suggests the TTL is too short or that many recipients do not have RCS-capable devices.
-
Track read receipts for relative comparison (A/B testing) rather than as an absolute metric. Not all clients report read status.
-
Use delivery confirmation events to cancel redundant fallback timers in your application logic if you manage fallback externally.
Device and client rendering variance
RCS messages render differently across Android and iOS clients. Design for the lowest common denominator and test on both platforms before launching a campaign.
| Feature | Android | iOS |
|---|---|---|
| GIF images | Animated | Static (first frame only) |
| Link previews in text | URL anywhere in message | URL must be the last element |
| Card media heights | Respects SHORT, MEDIUM, and TALL | Might ignore the height property |
| Suggestion chip order | Preserved as sent | Might reorder chips |
Design recommendations based on these differences:
-
Use
VERTICALcard orientation for consistent layout. -
Place URLs at the end of text messages to ensure link previews render on iOS.
-
Do not depend on GIF animation to communicate essential information.
-
Test suggestion ordering on both platforms if the sequence is meaningful to the user flow.
Opt-out handling
Respect user opt-out preferences immediately and consistently across all messaging channels.
-
Honor STOP and UNSUBSCRIBE keywords by ceasing all non-essential messages immediately after the opt-out request.
-
Send a brief opt-out confirmation that includes your brand name so the user knows which sender they unsubscribed from.
-
Maintain your own opt-out database and synchronize it across channels (RCS, SMS, MMS) to prevent sending on one channel after the user opted out on another.
-
Consult your legal team regarding which message types (such as OTPs or fraud alerts) might still be sent after an opt-out.
Note
AWS End User Messaging provides opt-out list management for SMS and MMS. For RCS, coordinate your opt-out handling with both the AWS End User Messaging opt-out lists and your own application-level records.