Real Messaging Engine

Troubleshooting

Start with RME Admin → Diagnostics, then work down this table.

Send failures

SymptomLikely causeResolution
DOMAIN_NOT_VERIFIEDDNS records missing or not propagatedRe-check SPF/DKIM records; re-run Verify Domain after propagation
UNAUTHORIZED from providerExpired or rotated API keyUpdate the External Credential principal
You have uncommitted work pendingCallout after DML in a triggerMove the send into a Queueable or sendAsync()
CIRCUIT_OPENProvider error rate crossed thresholdCheck provider status page; failover should have engaged
TEMPLATE_NOT_FOUNDTemplate inactive or wrong localeActivate the version; confirm Locale__c resolution
RATE_LIMITEDProvider or org ceiling reachedRaise the limit or spread the send with scheduling
QUIET_HOURSRequest inside a restricted windowUse DEFER on the channel policy, or exempt the transactional category

Nothing is delivered but status is SENT

  1. Confirm webhooks are registered with the provider and reaching the Site endpoint.
  2. Check the Site guest user has access to the webhook Apex class.
  3. Look for 401 responses in the provider's webhook activity log — a signature or secret mismatch.
  4. Run a backfill for the affected window: RME_EventBackfill.run(provider, from, to).

Messages land in spam

CheckTarget
SPFSingle record, includes the provider, ends in -all
DKIMSignature aligns with the visible From domain
DMARCPolicy present and aligned
ReputationGoogle Postmaster Tools, provider reputation dashboard
ContentText-to-image ratio, link shorteners, spam-trigger phrasing
List qualityBounce and complaint rates within thresholds

Merge fields render empty

  • The running user lacks field-level security on the field.
  • recordId context was not passed on the request.
  • The field path crosses a relationship that is null on the record.
  • Run RME_TemplateRenderer.preview() and inspect missingMergeFields.

Events arrive twice

Expected. Platform Events are at-least-once and providers retry. Make subscribers idempotent on Provider_Message_Id__c + Event_Type__c + Occurred_At__c.

SMS not received

  1. Verify the number is valid E.164 and not on the suppression list.
  2. Check 10DLC brand and campaign registration status for US traffic.
  3. Confirm the recipient has not sent STOP.
  4. Review carrier filtering feedback on the message record's Reason_Code__c.

Diagnostics

RME_Diagnostics.Result r = RME_Diagnostics.run();
for (String issue : r.issues) System.debug(issue);

Diagnostics validates credentials, domain status, webhook reachability, scheduled jobs, permission set assignments, and provider health.

Continue to Roadmap.

Was this helpful?

Last updated 1 month ago