Delivery, Analytics & Deliverability
Bounce processing, complaint handling, suppression lists, retry logic, and reporting — all inside Salesforce.
Delivery analytics
Every normalized event lands on Delivery_Status__c and rolls up to Message__c. Standard reports and dashboards ship with the package:
| Metric | Definition |
|---|---|
| Delivery rate | Delivered ÷ Accepted |
| Hard bounce rate | Permanent failures ÷ Accepted (keep under 2%) |
| Soft bounce rate | Transient failures ÷ Accepted |
| Complaint rate | Spam reports ÷ Delivered (keep under 0.1%) |
| Open / click rate | Email only, subject to privacy proxies |
| Reply rate | Inbound replies ÷ Delivered |
| Time to delivery | p50 / p95 accepted → delivered |
Bounce processing
| Type | Examples | RME action |
|---|---|---|
| Hard | Invalid mailbox, domain not found | Suppress address permanently, flag Contact field |
| Soft | Mailbox full, greylisted, throttled | Retry per policy, suppress after repeated failures |
| Block | Reputation or content block | Alert admins, open provider circuit breaker if widespread |
Complaint handling
Feedback-loop complaints suppress the address immediately and set consent to opted-out for the message category. Complaints are never silently discarded: each writes an audit record with the originating message, template, and campaign context.
Suppression lists
| Scope | Source |
|---|---|
| Global | Hard bounces, complaints, manual admin entries |
| Channel | Per-channel opt-outs (SMS STOP, email unsubscribe) |
| Category | Marketing suppressed while transactional continues |
| Temporary | Time-boxed suppression after repeated soft bounces |
RME_Suppression.add('customer@example.com', 'EMAIL', 'GLOBAL', 'Hard bounce');
Boolean blocked = RME_Suppression.isSuppressed('customer@example.com', 'EMAIL', 'MARKETING');
Suppression is enforced before every send. There is no configuration that allows business logic to bypass it.
Retry logic
retryPolicy:
strategy: exponential
baseDelaySeconds: 60
multiplier: 4
maxAttempts: 5
maxAge: 24h
jitter: true
retryOn: [soft_bounce, 429, 5xx, timeout]
neverRetryOn: [hard_bounce, complaint, suppressed, invalid_payload]
Attempts are visible on Delivery_Attempt__c. Messages that exhaust the policy move to Status__c = Failed and publish a failure Platform Event so an owning team can be notified.
Warm-up
New IPs and domains require a ramp. RME enforces a configurable warm-up schedule and holds volume above the daily ceiling rather than burning reputation.
Continue to Salesforce Integration.
Was this helpful?
Last updated 1 month ago