WhatsApp Business messaging for international customer conversations, with template approval, session windows, and Salesforce-native history.
Concepts
| Concept | Meaning |
|---|---|
| Template message | Pre-approved content required to start a conversation |
| Session window | 24 hours after the customer's last inbound message; free-form replies allowed |
| Category | UTILITY, AUTHENTICATION, or MARKETING — affects approval and pricing |
| WABA | WhatsApp Business Account holding your phone numbers and templates |
Template registration
WhatsApp templates are authored in RME and submitted for approval from the template record. Approval status syncs back onto Template__c.WhatsApp_Status__c (PENDING, APPROVED, REJECTED).
{
"name": "appointment_reminder",
"language": "en_US",
"category": "UTILITY",
"components": [
{ "type": "BODY", "text": "Hi {{1}}, your appointment is on {{2}} at {{3}}." },
{ "type": "BUTTONS", "buttons": [{ "type": "QUICK_REPLY", "text": "Reschedule" }] }
]
}
Sending
RME_Message.builder()
.channel('WHATSAPP')
.templateName('appointment_reminder')
.templateLanguage('en_US')
.parameters(new List<String>{ contact.FirstName, '6 August', '2:00 PM' })
.toContact(contact.Id)
.send();
Inside an open session window you may send free-form content:
RME_Message.builder()
.channel('WHATSAPP')
.toContact(contact.Id)
.body('Rescheduled to Friday at 10:00 AM. Anything else?')
.requireOpenSession(true) // fails fast outside the 24h window
.send();
Session state
RME tracks the session window on the Contact and exposes RME_WhatsApp.isSessionOpen(contactId) for Flow and Apex, so automation can choose between a template and a free-form reply without guessing.
Continue to Voice Messaging.
Was this helpful?
Last updated 1 month ago