Real Messaging Engine

Personalization

Personalization in RME draws from Salesforce data and the Enterprise Intelligence Engine — not from a separate marketing database.

Data sources

SourceExample
Record context{{Order.OrderNumber}}, {{Case.Subject}}
Related records{{Contact.Account.Name}}, {{Order.Items}}
Formula and custom fieldsAny field the running user can read
EIE signalsRelationship strength, last meeting, next best action
Runtime parametersValues passed explicitly on the request

Field-level security applies at render time. A field the running user cannot read renders as empty, never as a data leak.

Conditional content

{{#if EIE.RelationshipStrength > 70}}
  <p>Thanks for being one of our most engaged customers.</p>
{{else if Contact.CreatedDate | withinDays: 30}}
  <p>Welcome aboard — here is how to get started.</p>
{{else}}
  <p>Here is your monthly summary.</p>
{{/if}}

AI-assisted content

RME can call the Enterprise Intelligence Engine to generate or refine a block of content at send time, with a deterministic fallback if the model is unavailable.

RME_Message.builder()
    .templateName('Renewal_Outreach')
    .toContact(contactId)
    .aiBlock('summary', new Map<String, Object>{
        'instruction' => 'Summarize the last three support cases in two sentences.',
        'grounding'   => 'CASE_HISTORY',
        'fallback'    => 'Your recent support activity is attached.'
    })
    .send();

Generated content is stored on the message record, so every AI-authored communication is auditable after the fact.

Guardrails

  • Maximum one AI block per transactional message
  • Generated content is length-capped and profanity-filtered before send
  • Consent and suppression checks run after generation, never before

Continue to Message Scheduling.

Was this helpful?

Last updated 1 month ago