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)