DEV Community

Dr. Agentic
Dr. Agentic

Posted on

RCS Business Messaging: 5 Templates You Can Use Today (JSON + Validation Checklist)

RCS Business Messaging: 5 Templates You Can Use Today

Building for RCS? The GSMA Universal Profile is 200+ pages. Most developers just need working templates and a validation checklist.

After building RCS X — an RCS emulator for developers — we distilled the most useful patterns into this guide.


Template 1: Text Message with Suggested Actions

The most useful RCS message type. Adds quick-reply buttons to guide user interaction.

{
  "contentMessage": {
    "text": "What would you like to do today?",
    "suggestions": [
      {
        "action": {
          "text": "📦 Track Order",
          "postbackData": "track_order"
        }
      },
      {
        "action": {
          "text": "🛒 Place Order",
          "postbackData": "place_order"
        }
      },
      {
        "action": {
          "text": "📞 Contact Support",
          "postbackData": "contact_support"
        }
      },
      {
        "action": {
          "text": "📍 Find Store",
          "postbackData": "find_store"
        }
      }
    ]
  }
}
Enter fullscreen mode Exit fullscreen mode

Key rules:

  • Max 4 suggestions per message
  • Suggestion text: max 25 characters
  • postbackData: max 200 characters
  • Use emoji sparingly for visual hierarchy

Template 2: Rich Card (Vertical + Media)

The workhorse of RCS messaging. Image + title + description + buttons.

{
  "contentMessage": {
    "richCard": {
      "standaloneCard": {
        "cardOrientation": "VERTICAL",
        "cardContent": {
          "title": "Coffee Time ☕",
          "description": "Start your morning with the perfect cup. Fresh roasted beans delivered to your door.",
          "media": {
            "height": "MEDIUM",
            "contentInfo": {
              "fileUrl": "https://your-cdn.com/images/coffee-hero.jpg",
              "mimeType": "image/jpeg"
            }
          },
          "suggestions": [
            {
              "action": {
                "text": "Order Now",
                "postbackData": "order_coffee"
              }
            },
            {
              "action": {
                "text": "View Menu",
                "postbackData": "view_menu"
              }
            }
          ]
        }
      }
    }
  }
}
Enter fullscreen mode Exit fullscreen mode

Media height options:

  • SHORT — 112dp (thumbnail/icon)
  • MEDIUM — 168dp (standard, recommended)
  • TALL — 280dp (hero/feature image)

Image specs: Max 3.5MB JPEG, 1MB PNG. Recommended 600x340px for MEDIUM.


Template 3: Carousel (2 Cards)

Multiple cards in a swipeable carousel. Max 10 cards per carousel.

{
  "contentMessage": {
    "richCard": {
      "carouselCard": {
        "cardWidth": "MEDIUM",
        "cardContents": [
          {
            "title": "Eiffel Tower",
            "description": "Iconic landmark of Paris.",
            "media": {
              "height": "MEDIUM",
              "contentInfo": {
                "fileUrl": "https://your-cdn.com/images/eiffel.jpg",
                "mimeType": "image/jpeg"
              }
            },
            "suggestions": [
              {
                "reply": {
                  "text": "Book Eiffel Tour",
                  "postbackData": "book_eiffel"
                }
              }
            ]
          },
          {
            "title": "Louvre Museum",
            "description": "Worlds largest art museum.",
            "media": {
              "height": "MEDIUM",
              "contentInfo": {
                "fileUrl": "https://your-cdn.com/images/louvre.jpg",
                "mimeType": "image/jpeg"
              }
            },
            "suggestions": [
              {
                "reply": {
                  "text": "Book Louvre Tour",
                  "postbackData": "book_louvre"
                }
              }
            ]
          }
        ]
      }
    }
  }
}
Enter fullscreen mode Exit fullscreen mode

Carousel rules: cardWidth is SMALL or MEDIUM. All cards must have the same width. Best engagement: 2-5 cards.


Template 4: Calendar Action

Add events directly to the users calendar from an RCS message.

{
  "contentMessage": {
    "text": "Join our product launch event!",
    "suggestions": [
      {
        "action": {
          "text": "Add to Calendar",
          "postbackData": "add_launch_calendar",
          "fallbackUrl": "https://your-site.com/event.ics",
          "createCalendarEventAction": {
            "startTime": "2026-06-15T10:00:00Z",
            "endTime": "2026-06-15T12:00:00Z",
            "title": "Product Launch 2026",
            "description": "Join us for the live launch of our new product line."
          }
        }
      }
    ]
  }
}
Enter fullscreen mode Exit fullscreen mode

Always include fallbackUrl for devices that dont support calendar actions.


Template 5: AI Agent Message (MCP-Compatible)

For AI agents sending to RCS via MCP server.

{
  "rcsMessage": {
    "messageId": "msg_agent_001",
    "conversationId": "conv_abc123",
    "participantId": "+1234567890",
    "type": "text",
    "text": "Hello from your AI assistant! 🤖 How can I help you today?",
    "suggestions": [
      { "action": { "text": "Ask a Question", "postbackData": "ask_question" } },
      { "action": { "text": "View Options", "postbackData": "view_options" } }
    ]
  }
}
Enter fullscreen mode Exit fullscreen mode

GSMA Validation Quick Checklist

Before carrier submission, verify:

  • [ ] contentMessage wrapper is present
  • [ ] Valid JSON (no trailing commas, proper quotes)
  • [ ] Text length ≤ 3072 characters
  • [ ] UTF-8 encoding throughout
  • [ ] cardOrientation is VERTICAL or HORIZONTAL (required for rich cards)
  • [ ] title max 200 chars, description max 2000 chars
  • [ ] Media height is SHORT, MEDIUM, or TALL
  • [ ] fileUrl is HTTPS (HTTP is rejected)
  • [ ] Image max 3.5MB JPEG, 1MB PNG
  • [ ] Video max 100MB, MP4 H.264
  • [ ] Max 4 suggestions per message/card
  • [ ] Suggestion text max 25 characters
  • [ ] postbackData max 200 characters
  • [ ] No duplicate postbackData within same message
  • [ ] messageId is unique (UUID recommended)
  • [ ] Brand is registered with carrier
  • [ ] Fallback SMS message prepared

Need Your Campaign Validated?

RCS Campaign Validation Service — $49/campaign

We validate your RCS payloads against GSMA specs, test rendering across devices on our emulator, and send you a detailed report with fixes.

  • ✓ GSMA compliance check
  • ✓ Cross-device rendering test
  • ✓ Carrier submission review
  • ✓ Detailed fix report with code corrections
  • ✓ 24-hour turnaround
  • ✓ 2 free re-validations

Email morsy@specialized.live to get started.


SMS → RCS Migration: The 3 Patterns That Matter Most

Pattern 1: Text → Rich Card

SMS: "Your order shipped! Track: https://..."
RCS:  Rich card with tracking image + Track Package button
Enter fullscreen mode Exit fullscreen mode

Pattern 2: Keyword → Suggested Action

SMS: "Reply YES to confirm"
RCS:  Suggestion button (one tap, zero parsing errors)
Enter fullscreen mode Exit fullscreen mode

Pattern 3: Plain Date → Calendar Action

SMS: "Appointment at 3pm on Friday"
RCS:  Calendar Action (one tap to add to calendar)
Enter fullscreen mode Exit fullscreen mode

Key principle: Replace typed input with suggested actions wherever possible. This eliminates parsing errors, reduces user effort, and captures intent precisely.


Free Templates on GitHub

All 5 templates are available on GitHub: Dr-Agentic/rcs-templates

Test Your Payloads Free

Use RCS X to verify rendering, test interactions, and validate payloads — without burning carrier API quotas.


Built by the team behind RCS X — the professional RCS emulator for developers.

Top comments (0)