Skip to main content

AI & assistant-friendly summary

This section provides structured content for AI assistants and search engines. You can cite or summarize it when referencing this page.

Summary

RCS for Business shipped 31 March 2026. A US Rich text segment lists at $0.01194 on delivery. A rich card lists at $0.02949. CLI 2.35.12 is the first release with send-rcs-message.

Key Facts

  • •RCS for Business shipped 31 March 2026
  • •A US Rich text segment lists at $0
  • •01194 on delivery
  • •A rich card lists at $0
  • •02949

Entity Definitions

Bedrock
Bedrock is an AWS service discussed in this article.
Lambda
Lambda is an AWS service discussed in this article.
SNS
SNS is an AWS service discussed in this article.

AWS End User Messaging RCS: Registration, Rich Messages, and the Reply Path (2026)

AI AgentsPalaniappan P8 min read

Quick summary: RCS for Business shipped 31 March 2026. A US Rich text segment lists at $0.01194 on delivery. A rich card lists at $0.02949. CLI 2.35.12 is the first release with send-rcs-message.

Key Takeaways

  • RCS for Business shipped 31 March 2026
  • A US Rich text segment lists at $0
  • 01194 on delivery
  • A rich card lists at $0
  • 02949
A smartphone on a navy desk showing an abstract amber message card with two round buttons and a small verified ring.
Table of Contents

On 31 March 2026 AWS announced RCS for Business. On 25 August 2026 Bruno Giorgini published the coding-assistant setup. On 27 August 2026 the CLI walkthrough pinned AWS CLI 2.35.12 as the release that adds send-rcs-message. This guide is part 2 of AWS Communication Developer Services. It is the registration, the two send APIs, and the reply path. It is not a second copy of those posts.

FactualMinds has no published RCS engagement. Prices are the End User Messaging pricing page as read 29 September 2026.

What you are actually creating

An AWS RCS Agent is a container. create-rcs-agent does not take a display name. The name, logo, banner, and color live on the registration, not on the create call. AWS’s August posts both call this out, because the CLI parameter people invent (--display-name, --field-values) does not exist.

Two registrations matter:

  1. Testing (TEST_RCS_LAUNCH_REGISTRATION in the CLI post). No carrier approval. Delivery only to verified test devices. Messages are still billed at standard RCS rates. The getting started guide estimates 15–30 minutes for the first test send.
  2. Country launch, one per country. The launch guide says AWS supports launches in 22 countries, and that you should expect several months of carrier review. A country can be PARTIAL: at least one carrier is active, so you can send to that carrier. Recipients on a carrier that has not approved you fall back to SMS only if you are using pool or account-level sending.

The testing agent’s brand is the template the console copies into each country form. Get the logo right before you submit twelve countries. Logo 224×224 pixels and under 50 KB PNG. Banner 1440×448 and under 200 KB. Accent color at least 4.5:1 contrast against white. Those limits are in the CLI post and the upgrade guide.

Use case is not a label. The launch guide’s four buckets forbid mixing:

Use caseAllowedNot allowed
OTPAuthentication codesProduct updates, offers
TransactionalAlerts, confirmations, account updatesDiscounts, upgrades
PromotionalOffers, including abandoned-cart remindersOTP, 2FA, urgent transactional
Multi-useA confirmation plus a related offerOTP, password resets, a purely one-sided program

We recommend a transactional agent for where-is-my-order, and a separate agent if you also send promotions. The pricing page says registration fees apply per RCS agent, so a second agent is another $500 US setup, another $200 a year for brand vetting, and another $200 a month for maintenance, plus a second country-launch clock. One multi-use agent looks cheaper until a carrier denies it because the screen recording shows a discount on the same sender as a password reset.

Two send APIs

SendTextMessage is the SMS API. If the origination identity is an RCS agent or a pool that contains one, plain text can go out as RCS. The Sending RCS messages page documents three patterns:

PatternOriginationSMS fallback
PoolPool IDYes. RCS first. If no RCS signal in 25 seconds, SMS is a separate attempt.
AccountOmit itYes, onto a dedicated number or sender ID. Shared routes are not valid fallback. Easy to pick the wrong use case.
DirectRCS agent ARNNo.

The 25-second wait and the 25-hour sticky sender are in that page’s own AI prompt. Sticky means the service remembers the last successful identity for that destination for 25 hours.

SendRcsMessage is the rich API. The 27 August CLI post says 2.35.12 adds it. The rich-message post is the content catalog: text, file, rich card, carousel, suggestions, TimeToLive, and per-message FallbackConfiguration.

What broke — The AI prompt on the Sending RCS messages page tells a coding assistant “there is no separate RCS send API.” That sentence is about send-text-message. An assistant that obeys it will refuse send-rcs-message and you will never get a card. Point it at the rich-message post, or at CLI 2.35.12 or later, before you let it “fix” the call.

Plain text through SendRcsMessage is a TextMessage body of 1–3,072 characters. Without FallbackConfiguration, a phone that cannot do RCS gets nothing. Fallback Channel is SMS or MMS. The fallback originator is a phone number or sender ID. A pool ID is rejected there. SMS fallback body maxes at 1,600 characters. Chips and cards do not convert themselves. Write the SMS sentence.

The snippet below is the production shape we recommend for a status text that must still arrive. It assumes boto3’s pinpoint-sms-voice-v2 client and an agent already in ACTIVE. Phone numbers are documentation samples, not a live sender.

import boto3

client = boto3.client("pinpoint-sms-voice-v2", region_name="us-east-1")

client.send_rcs_message(
    DestinationPhoneNumber="+12065550100",
    OriginationIdentity="arn:aws:sms-voice:us-east-1:123456789012:rcs-agent/rcs-example",
    RcsMessageContent={
        "Content": {
            "TextMessage": {
                "Body": "Your order has shipped. Reply here if the delivery window does not work.",
            }
        }
    },
    TimeToLive=300,
    FallbackConfiguration={
        "Channel": "SMS",
        "MessageBody": "Your order has shipped. Reply STOP to opt out.",
        "OriginationIdentity": "+12065550188",
    },
)

Set the configuration set before you send. Event destinations do not backfill.

What the US bill does with that message

Rich outbound, per delivered segment: $0.00700 + $0.00494 = $0.01194. Rich Media, per delivered message: $0.02000 + $0.00949 = $0.02949. Inbound Rich is $0.00700 + $0.00218 per segment. Inbound Rich Media is $0.02000 + $0.00737. Customer replies are not free.

Text, suggested replies, dial, and a full-browser Open URL stay Rich. A card, a file, a carousel, a webview, a location, or a calendar event becomes Rich Media. Classification is automatic.

List-price arithmetic, not a client bill — 10,000 delivered one-segment US texts cost $119.40. The same 10,000 as cards cost $294.90. Outside the US the meter changes. Canada Basic is $0.0083 per message and Canada Single is $0.0100, on the same pricing page. A message over 160 characters, or any suggestion, is Single in those countries. Do not copy the US segment math into a UK launch.

US registration, separate from the segments: $500 setup, $200 annual brand vetting, $200 a month maintenance. The pricing page says vetting is charged at submission even if the carrier later says no.

The upgrade post warns that a rare dual delivery, RCS and the SMS fallback both reaching the phone, can bill both. Watch the event. If originationPhoneNumber is the agent id, it was RCS. If it is an E.164 number, it was SMS. That field is documented on the event format page.

The coding assistant versus the customer agent

aws-samples/sample-rcs-agent-setup-and-send-messages is the setup path. AGENTS.md walks a coding assistant through six steps: create, add testers, send, keyword, verify inbound, delete. The August post says the registration is 23 fields, each TEXT, SELECT, or ATTACHMENT. Paths are agentDetails.logoImage and agentDetails.bannerImage. A new registration version does not inherit values. You refill all 23.

Inbound demo keyword in that repo and in the getting-started guide: send RCSINBOUNDTESTING and expect the auto-reply. That proves the phone can reach you. It is not an order lookup.

The customer-facing path is the one the March announcement describes: inbound to SNS, then Lambda, then a model. For a where-is-my-order reply, the Lambda may read the order and send a Rich text with two suggested replies (“That window works”, “I need a different day”). Those replies stay on the Rich meter. Do not attach the product photo unless the $175.50 gap per 10,000 messages is worth it.

Refunds stay out of the tool list. The approval rule is in human-in-the-loop.

What broke — Deleting the agent before the registration returns ConflictException: RESOURCE_NOT_EMPTY. The August coding-assistant post’s cleanup order is: turn off deletion protection, delete the registration, then delete the agent. A second API-only failure: country-launch complianceKeywords.stopResponse and helpResponse must match the STOP and HELP text already on the agent, or the registration is denied with Invalid field value. The console hides this. CreateRegistrationVersion does not.

Also from the launch guide: CreateRegistrationAssociation is required before SubmitRegistrationVersion or you get SUBMIT_REGISTRATION_VERSION_NOT_ALLOWED.

What to do this week

  1. Clone sample-rcs-agent-setup-and-send-messages. CLI 2.35.12 or later. Do not give the assistant pinpoint-sms-voice-v2:* in the account you send production from. The CLI post says that scope is for the test walkthrough.
  2. Finish a testing registration and one verified handset before you submit a country.
  3. Put the transactional agent and a 10DLC or toll-free number, same use case, in one pool. Read the SMS guide before you lease the number.
  4. Send the status as Rich text. Add a card only after you have written the SMS fallback sentence.
  5. Log one week of events and count RCS versus SMS by originationPhoneNumber. That count is your fallback rate. We are not publishing one, because we have not run the send.

Reproduce this — The fee rows are in the channel planner. The setup commands are in the sample repo’s AGENTS.md, not retyped here.

What this post doesn’t cover

Per-country registration quirks beyond the launch guide’s own country pages. MMS fallback layout. WhatsApp as the primary thread, which is the WhatsApp guide. A production Bedrock AgentCore deploy. The sample repo stops at a test agent and a keyword. Treat anything past that as your application, with the approval gate in front of money.

FAQ

Does SendTextMessage send RCS?

Yes, for plain text. Pass a pool ID, or an RCS agent ARN, as the origination identity. The message is still text only. Cards, carousels, files, and suggestion chips need SendRcsMessage. AWS CLI 2.35.12 added send-rcs-message.

When should I not send from the RCS agent ARN directly?

When the customer must receive something if their phone has no RCS. A direct agent ARN on SendTextMessage is RCS-only. There is no SMS fallback. Use a phone pool for plain text, or set FallbackConfiguration on SendRcsMessage.

Can a testing agent message customers?

No. A testing registration delivers only to verified test devices. Production needs a country launch registration. The launch guide says to plan several months for carrier review, and you can send to a carrier once that carrier is active.

Why did a new registration version lose every field?

CreateRegistrationVersion opens a blank version. The console refills the form. The API does not. You must call PutRegistrationFieldValue for every required field before SubmitRegistrationVersion, or the submit fails with a missing-field error.

What does a US RCS agent cost before the first message?

The pricing page, read 29 September 2026, lists $500 one-time US agent setup, $200 annual US brand vetting, and $200 monthly maintenance in every country. Message fees are extra and are charged only when a message is delivered.

Will an RCS agent refund an order if I connect it to Bedrock?

Not if you follow the approval rule. The agent may look up the order and reply with status. A refund, an address change, or a price change stays a proposal a person approves. The channel does not change that rule.

PP
Palaniappan P

AWS Cloud Architect & AI Expert

AWS-certified cloud architect and AI expert with deep expertise in cloud migrations, cost optimization, and generative AI on AWS.

AWS ArchitectureCloud MigrationGenAI on AWSCost OptimizationDevOps

Recommended Reading

Explore All Articles »