# AWS CDS channel planner

Worksheet for the series **AWS Communication Developer Services** (2026).

Start with the hub post, then open the channel guide that matches the row you filled in.

- [Which channel the agent should use](https://www.factualminds.com/blog/aws-communication-developer-services-2026/)
- [RCS](https://www.factualminds.com/blog/aws-end-user-messaging-rcs-guide-2026/)
- [SMS](https://www.factualminds.com/blog/aws-end-user-messaging-sms-guide-2026/)
- [WhatsApp](https://www.factualminds.com/blog/aws-end-user-messaging-whatsapp-guide-2026/)
- [SES agent skill](https://www.factualminds.com/blog/amazon-ses-ai-agent-skill-2026/)

## What the numbers are

[`channel-planner.csv`](./channel-planner.csv) has two kinds of rows.

`milestone` rows are list prices copied from the [AWS End User Messaging pricing page](https://aws.amazon.com/end-user-messaging/pricing/) on **29 September 2026**. Do not edit those fee cells. They are not a FactualMinds client bill, and they are not a delivery-rate claim.

`plan` rows are blank logs for four jobs: OTP, where-is-my-order, a promotion, and a receipt. Duplicate a `plan` row per country you actually send to.

US SMS transport is **not** in this sheet. The pricing page publishes that rate as a per-carrier CSV, not as one national number. Do not paste an old Amazon SNS rate into `unit_aws_fee_usd` and treat it as End User Messaging.

## Worked check, US Rich RCS

One delivered US Rich text segment is **$0.00700** AWS plus **$0.00494** carrier = **$0.01194**.

10,000 delivered one-segment texts = **$119.40**.

The same 10,000 messages as Rich Media (a card, a carousel, or a file) are **$0.02000** plus **$0.00949** = **$0.02949** each, or **$294.90**.

The photo costs **$175.50** more per 10,000 delivered messages before the **$200** monthly agent maintenance fee. A suggested-reply chip does not trigger that upgrade. A rich card does.

Add US registration if the agent is new: **$500** one-time setup and **$200** annual brand vetting, on top of the **$200** monthly maintenance that applies in every country.

## Columns

| Column | Meaning |
| --- | --- |
| `row_type` | `milestone` = published fee. `plan` = your log. |
| `job` | On plan rows: `otp`, `wismo`, `promo`, or `receipt`. |
| `country` | ISO-style label. `US` uses the segment model. Other countries use Basic or Single on the pricing page. |
| `has_whatsapp_thread` | `yes` if the customer already wrote to your WhatsApp number. |
| `verified_brand_matters` | `yes` if the sender name and logo on the lock screen are the point of the message. |
| `monthly_volume` | Messages you expect to send, not messages you hope get delivered. RCS bills delivery. SMS bills the request. |
| `chosen_channel` | `rcs`, `sms`, `whatsapp`, `mms`, `voice`, or `ses`. |
| `fallback_channel` | What you send when the first channel cannot. Leave blank only if you accept a drop. |
| `registration_blocker` | The thing that is actually waiting: `10dlc_or_toll_free`, `country_launch`, `template_or_waba`, `voice_long_code`, `ses_identity`. |
| `unit_aws_fee_usd` | AWS list fee for one unit. On plan rows, copy from the matching milestone or leave blank. |
| `unit_passthrough_fee_usd` | Carrier fee, or blank when the passthrough is Meta's rate card and is not a single number. |
| `notes` | Why you held this channel, or the source of a milestone. |
