A standalone rich card with an image and an action button:
{ "contentMessage": { "richCard": { "standaloneCard": {
"cardOrientation": "VERTICAL",
"cardContent": {
"title": "Your order shipped!",
"description": "Arriving Fri, Jun 12.",
"media": { "height": "MEDIUM", "contentInfo": {
"fileUrl": "https://shop.example/box.jpg" } },
"suggestions": [
{ "action": { "text": "Track package", "postbackData": "trk_1043",
"openUrlAction": { "url": "https://shop.example/track/1043" } } }
]
} } } } }
Cards are stored as reusable templates in the content library, so the same card can back an order-confirmation flow and a campaign without being rebuilt.
Orientation is the first decision and it is easy to get backwards. A vertical card stacks the media above the text and gives the image the most room, which suits anything where the picture is the point, a product, a property, a shipped parcel. A horizontal card sets a smaller image beside the text and suits confirmations and reminders where the words carry the meaning and the image is a brand cue. Media height has three values, short, medium and tall, and it changes how much of the description stays visible before truncation, so tall media plus a long description reliably clips.
The four-suggestion limit is a design constraint worth taking seriously rather than filling. Cards with one clear button outperform cards with four competing ones, and the second button is usually best spent on a genuine alternative such as reschedule next to confirm, rather than on a second way to do the same thing. Buttons can mix replies and actions freely, so confirm as a reply alongside add to calendar as an action is a single well-formed card.
At least one of media, title or description is required, but a card carrying only a title is not worth the format. If you cannot justify the image, send text with a chip list instead: it is cheaper, it reaches more recipients, and it survives fallback intact.
Cards fall back to MMS or SMS depending on the media, and the buttons never survive. Any URL that a recipient needs must therefore also exist in the fallback text, because a card whose only call to action is a track button becomes a dead-end message for every recipient without RCS. The same applies to the media URL: it is fetched from your host when the message renders, not at send time, so it has to remain reachable well after the send completes.