Send Your First RCS Rich Message End to End
Onboarding an RCS agent ends at the launch gate — the agent is live, but no message has left it yet. This guide closes that gap with one minimal walk: author and approve a rich-card template, prove the tester device can receive it, send it through your agent, and watch the delivery receipt land on a webhook. Everything here is the single-send version of campaign-scale work; when you scale to a segment, the RCS campaign playbook takes over. If you have not launched an agent yet, run the RCS onboarding guide first — the brand → agent → verify → launch gates happen there, and this walk fails its first send until the agent islaunched.
1. Prerequisites
- A launched agent (bot). The agent must show
launchedon at least one carrier inGET /api/v1/rcs/bots/:id/quality. If you are still evaluating without a full brand path, the built-in test account from the RCS onboarding guide substitutes for this walk. - A tester device on the agent’s tester list. While the agent is still pre-launch, only registered tester handsets can receive —
POST /api/v1/rcs/bots/:id/devices(direct registration) or the tester-invite flow. Keep the E.164 number you registered; it is the recipient for every step below. - An API key. Copy it from the dashboard; every call below carries it as
X-API-Key.
2. Author and approve a template
Rich sends reference a stored template that carriers screen for content before it can leave the platform. Author the definition, submit it for review, and wait for theApproved badge before you send.
The visual way to do this is the Studio template editor on Messages → RCS → Builder — pick the rich-card template kind (card with a title, description, and a mediaUrl); the Rich Card Studio guide walks the editor end to end. Here, to keep the walk short, create the same rich card directly over the API:
rcs_tpl_... identifier and a pending_review status. Fetch GET /api/v1/rcs/bots/:id/templates/:name until it reads Approved; the Templates tab shows the same badge inline with the deliverability counters. A PUT after approval resets the template to pending, so treat approval as a final gate before the walk continues.
3. Check the recipient before you send
RCS capability is per device and per agent — a recipient capable for Agent A can be unreachable for Agent B. Probe before sending:isCapable: true; a false (with fallback: "sms") means the handset is not RBM-reachable through this agent and you should send the SMS copy shown in the RCS fallback and capability concept page — a skipped probe lands the send as a terminal RCS_NOT_SUPPORTED, the failure this walk exists to avoid.
4. Send the rich card
With the template approved and the recipient confirmed capable, send one message:202 with the message identifier as msg_... — keep it; the webhook events in step 5 key on it. Inline rich cards like the example send instantly; the cleaner production shape sends the approved template by name through a campaign — the RCS channel page covers every body field, and its rich_card_carousel sibling takes 2–10 cards in one send.
5. Read the delivery lifecycle over a webhook
A202 means the message is accepted for delivery, not delivered. Register one receiver and subscribe to the two outcomes that resolve an RCS first-send:
message.read — the open receipt SMS never produces — so subscribe to it when you are past first-send debugging and want engagement data.
6. Troubleshoot the three predictable failures
First RCS sends usually die in one of three ways; each resolves to a specific pre-send gate:
For deeper diagnosis — carrier rejections, delivery-dips, capability drift — the RCS undelivered troubleshooting page reads the classified error code off
GET /api/v1/messages/:id so you can attach cause to outcome without re-sending traffic.
7. Next steps
- Scale the same card to a segment in the RCS campaign playbook — reach scan, ladder fallback, dry-run, and launch are the campaign version of steps 2–4.
- Read the RCS channel page for carousels, suggested actions, and the fallback chain concept.
- Cover the durable receiver pattern in the webhook consumer guide before your first production rollout.