SMS Opt-In and Opt-Out Best Practices for Salesforce Messaging
A reliable Salesforce SMS program needs more than a consent checkbox. Teams must be able to show what a person agreed to, connect that permission to the correct mobile number and messaging purpose, block ineligible sends, process revocation quickly, and explain every status change later.
The most effective design treats consent as an operational record used by every outbound path—not as a note collected once and forgotten. That means Salesforce users, Flow automation, journeys, bulk sends, and API integrations all evaluate the same current decision before a message leaves the system.
Core principle: the audience record answers who you want to message. The consent and suppression process answers whether that exact message may be sent now. Keep those decisions separate.
Why a Single Opt-In Field Is Often Not Enough
A field such as “SMS Opted In” can be useful for filtering, but by itself it rarely preserves the evidence or scope behind the value. It may not identify the phone number covered, the disclosure presented, the purpose of the messages, the source of consent, the timestamp, the business unit or sender, or the reason the status changed.
This becomes important when a Contact has multiple phone numbers, two Salesforce records share a household number, several departments send different kinds of messages, or imported data conflicts with an inbound STOP. A durable model should preserve the latest actionable state while retaining enough history for investigation.
Define the Scope of SMS Consent
Before configuring fields or automation, decide what one consent record means. The answer should reflect the organization’s approved messaging policy and the rules that apply to its audience and use cases. Avoid assuming that permission for one purpose automatically covers every future text.
A practical Salesforce consent model may capture:
- Identity: the Lead, Contact, Person Account, customer, or other record connected to the permission.
- Destination: the normalized mobile number that was presented or confirmed.
- Channel: SMS as a distinct permission, separate from WhatsApp, email, or other channels.
- Purpose: the approved category of messaging, such as service alerts or promotional updates.
- Source: web form, inbound keyword, signed form, agent-assisted process, import, or another approved path.
- Evidence: timestamp, disclosure or form version, capture method, source record, and operator where applicable.
- Scope: sender, brand, department, business unit, program, or region when these distinctions matter.
- Status: pending, opted in, opted out, expired, invalid, or another controlled state used by the organization.
Design Clear Opt-In Capture Paths
Each capture path should collect affirmative permission through an approved disclosure and write consistent data to Salesforce. A form submission, inbound keyword, service interaction, event registration, or imported record should not create different meanings for the same status value.
- Present the approved disclosure before the person submits or confirms.
- Validate and normalize the mobile number without silently moving consent to a different number.
- Record the source, timestamp, purpose, disclosure version, and related Salesforce record.
- Use a pending state when an additional confirmation step is required by the approved process.
- Activate the consent only after the required confirmation event is received and matched.
- Send only the approved confirmation content and store the outcome in message history.
For legacy or imported audiences, do not convert a mobile number into permission by assumption. Map the evidence available, identify records with unknown status, and keep them suppressed until the organization’s approved remediation or re-consent process is complete.
Check Eligibility Again at Send Time
Consent can change between list selection and delivery. A person may opt out while a scheduled Flow interview, journey step, campaign send, or integration job is still waiting. For that reason, every message should pass a final eligibility gate immediately before it is handed to the messaging provider.
That gate should evaluate more than the latest opt-in value:
- The intended Salesforce record still matches the destination number.
- The current SMS consent covers the message purpose and applicable sender scope.
- No global, channel, purpose, sender, or provider suppression blocks the number.
- The number is usable and has not been replaced, invalidated, or reassigned in the business process.
- Quiet hours, frequency limits, campaign rules, and other approved controls pass.
- The same business event has not already produced an equivalent message.
Enforcement pattern: make one reusable eligibility service or decision layer available to Flow, Apex, bulk tools, journeys, APIs, and manual sends. A field filter in only one automation leaves gaps.
Process STOP and Other Revocation Requests End to End
An inbound opt-out is not complete when a message record merely shows the word STOP. The event must update the authoritative consent state, propagate suppression to every connected sender and sending path that falls within scope, cancel queued messages, and prevent automation from recreating the audience before the next send.
Define an ordered process:
- Receive the inbound message and preserve the original timestamp, sender, destination, and message identifier.
- Normalize the response and apply the approved keyword or intent rules without losing the original text.
- Resolve the number to the applicable consent record, including shared-number and duplicate-record handling.
- Set the correct opt-out state and append a status-history event.
- Publish suppression to provider, Salesforce, Marketing Cloud, and other authorized sending systems.
- Stop pending campaigns, journey steps, Flow paths, scheduled work, and agent follow-ups within scope.
- Send only the approved confirmation response, then monitor for propagation failure.
Also provide a controlled manual path for plain-language requests received by an employee, such as a customer asking a service representative not to text again. Staff should not need to wait for a perfectly formatted keyword when the intent is clear and the organization’s policy calls for revocation.
Handle Re-Consent as a New Event
Re-consent should not be implemented as an unrestricted checkbox override. Use an approved affirmative path and preserve the prior opt-out in history. The new event should identify the number, purpose, source, timestamp, and disclosure that restored permission, plus any provider-level activation needed before delivery can resume.
Limit who can change consent manually, distinguish data correction from genuine re-consent, and consider an approval or review path for exceptional cases. If Salesforce and the provider disagree, default to the more restrictive state until reconciliation succeeds.
Build an Audit Trail and Operating Dashboard
Good reporting should answer why a message was allowed or blocked, not only whether it was delivered. Preserve consent history independently from message history so an administrator can reconstruct the decision using the status and rules that existed at send time.
- Opt-ins by source, purpose, sender, disclosure version, and reporting period
- Pending confirmations, expired permissions, unknown legacy records, and failed captures
- Opt-outs by source, keyword or manual path, sender, and messaging program
- Time from inbound revocation to Salesforce update and complete suppression propagation
- Send attempts blocked by consent, suppression, quiet hours, frequency, or data-quality rules
- Conflicts between Salesforce, provider, and connected journey or campaign systems
- Manual consent changes, overrides attempted, and re-consent evidence
Assign owners for daily failures, periodic consent reviews, disclosure changes, integration monitoring, and audit requests. Operations, legal, compliance, security, and Salesforce teams should agree on the model before production use. This article offers implementation guidance, not legal advice for a particular jurisdiction.
Test Every Salesforce Sending Path
Test the rules where messages actually originate. A correct Flow does not protect an Apex callout, installed bulk action, Marketing Cloud journey, external API, or manual composer unless each route uses the same current decision.
- Capture consent through every approved source and verify the complete evidence record.
- Confirm that eligible records send and ineligible, pending, expired, or unknown records are blocked.
- Send STOP and every configured revocation variant, including different casing and surrounding whitespace.
- Verify queued and scheduled sends stop after revocation, even during integration delay or provider outage.
- Test duplicate Leads and Contacts, shared numbers, changed numbers, unmatched replies, and record merges.
- Exercise the approved re-consent path and verify that casual field edits do not restore messaging.
- Compare Salesforce status with provider and connected-system suppression after each scenario.
- Confirm dashboards, alerts, history, and administrator troubleshooting steps.
Implementation Checklist
- Document consent scope, approved sources, message purposes, senders, and status values.
- Choose authoritative Salesforce records and define duplicate and shared-number behavior.
- Normalize phone numbers while keeping consent attached to the correct identity and destination.
- Preserve source, timestamp, disclosure version, method, status history, and related record IDs.
- Apply one send-time eligibility decision to Flow, Apex, bulk, journey, API, and manual paths.
- Map inbound revocation through Salesforce, providers, suppression lists, and queued automation.
- Restrict manual changes and create a controlled re-consent process.
- Monitor propagation time, conflicts, blocked attempts, failed updates, and unusual manual activity.
- Run regression tests whenever fields, integrations, senders, disclosures, or campaigns change.
Frequently Asked Questions
What should an SMS opt-in record contain in Salesforce?
Store the covered identity or mobile number, channel, purpose, status, source, disclosure or form version, timestamp, capture method, and any applicable sender or business-unit scope. Preserve history when status changes.
Is storing one SMS opt-in checkbox enough?
A checkbox is useful for filtering but usually cannot explain who consented, which number and purpose it covered, how it was collected, or when it changed. Use a consent record or a documented group of fields that retains evidence.
When should Salesforce check SMS consent?
Check when an audience is selected and again immediately before each outbound send. Include suppression, phone validity, message purpose, sender scope, quiet hours, frequency limits, and relevant business rules.
What should happen when someone texts STOP?
Record the inbound request, update the applicable consent and suppression state, stop queued automation, send only the approved confirmation if required, and prevent new sends across every connected path within scope.
Can a Salesforce user manually override an SMS opt-out?
Users should not casually override a revocation. Re-consent should capture a new affirmative action, source, timestamp, disclosure, and scope before messaging resumes. Restrict exceptional manual corrections.
How should teams test SMS opt-in and opt-out automation?
Test each capture source, allowed and blocked sends, STOP and re-consent paths, queued automation, duplicate records, shared numbers, integration delays, provider errors, and all bulk, Flow, journey, API, and manual paths.
Make Consent Enforcement Part of Every Salesforce Send
SMS opt-in and opt-out management works best when capture, enforcement, revocation, re-consent, and reporting are designed as one lifecycle. Salesforce can keep the record and automation context together, while WatBox can help teams connect consent-aware SMS messaging with Salesforce workflows, conversations, and operational follow-up.
Start with one authoritative decision, route every sending path through it, and test the failure cases that could leave stale permission or queued messages behind. That foundation supports clearer operations and a more respectful messaging experience as the program grows.

