Best Practices for Transactional RCS Templates


As per Google RBM (RCS Business Messaging) policy, a Transactional Agent can only send messages that are directly related to a customer’s existing service, purchase, booking, or account activity. Promotional or marketing content is strictly prohibited in transactional traffic. (Google for Developers)

You can refer to the official Google documentation here:

#

Transactional RCS Policy (Google RBM)

A transactional agent is allowed to send:

  • Order confirmations

  • Payment receipts

  • Appointment confirmations

  • Ticket confirmations

  • Shipping & delivery updates

  • Boarding pass / gate updates

  • Account alerts

  • Fraud alerts

  • Subscription/service updates

  • Warranty or safety notifications

  • Feedback requests for existing services

Google explicitly mentions that transactional agents are for:

“notifications, updates, or alerts directly relevant to a customer’s existing services or products.” (Google for Developers)


#

What is NOT Allowed in Transactional Templates

The following content is generally rejected or may cause the agent to be marked as spam:

  • Discounts

  • Offers

  • Promotions

  • Sales campaigns

  • Cross-selling / upselling

  • Marketing CTAs

  • “Buy Now”, “Shop Now”

  • Product advertisements

  • Promotional links unrelated to an existing transaction

Example of violation:


“Your order has been shipped. Get 20% OFF on your next purchase.”

Reason: Promotional offer mixed with transactional content. (MSG91)


#

Approved Transactional RCS Template Examples

#

1. Order Confirmation

{
  "title": "Order Confirmed",
  "description": "Hi {{name}}, your order #{{order_id}} has been successfully confirmed. Expected delivery: {{date}}.",
  "actions": [
    {
      "url": "{{tracking_link}}",
      "displayName": "Track Order"
    }
  ]
}

Why approved:

  • Pure order-related information

  • Existing transaction context

  • No marketing/promotional wording


#

2. Appointment Confirmation

{
  "title": "Appointment Confirmed",
  "description": "Hello {{name}}, your appointment with Dr. {{doctor_name}} is scheduled on {{date}} at {{time}}.",
  "actions": [
    {
      "url": "{{appointment_link}}",
      "displayName": "View Appointment"
    }
  ]
}

#

3. Payment Receipt

{
  "title": "Payment Successful",
  "description": "We have received your payment of ₹{{amount}} for invoice {{invoice_id}}.",
  "actions": [
    {
      "url": "{{invoice_link}}",
      "displayName": "Download Invoice"
    }
  ]
}

#

4. Delivery Update

{
  "title": "Shipment Update",
  "description": "Your shipment {{awb}} is out for delivery and will arrive today.",
  "actions": [
    {
      "url": "{{tracking_url}}",
      "displayName": "Track Shipment"
    }
  ]
}

#

5. Account Security Alert

{
  "title": "Security Alert",
  "description": "A new login was detected on your account from {{device}} at {{time}}. If this was not you, secure your account immediately.",
  "actions": [
    {
      "url": "{{security_link}}",
      "displayName": "Secure Account"
    }
  ]
}

#

Examples That Usually Get Rejected

#

Promotional Content in Transactional Traffic

{
  "title": "Order Delivered",
  "description": "Your order has been delivered successfully. Enjoy 30% OFF on your next purchase.",
  "actions": [
    {
      "url": "{{offer_link}}",
      "displayName": "Claim Offer"
    }
  ]
}

Reason:

  • Contains discount/offer

  • Marketing CTA

  • Violates transactional use case boundary (MSG91)


#

Best Practices for Transactional RBM Approval

  • Keep content service-related only

  • Use neutral language

  • Avoid emojis/heavy marketing tone

  • Use clear transactional CTAs:

    • Track Order

    • View Invoice

    • View Ticket

    • Check Status

  • Ensure users have opted in

  • Do not mix marketing with service updates

  • Match template content with the registered RBM use case

Google RBM also monitors spam indicators and can suspend agents sending promotional content through transactional agents. (MSG91)