Managing opt-outs correctly keeps your program compliant and protects subscribers who want to stop receiving messages. How you handle opt-outs depends on your sender type: whether it can receive inbound replies or not.Documentation Index
Fetch the complete documentation index at: https://documentation.onesignal.com/llms.txt
Use this file to discover all available pages before exploring further.
Opt-out keywords
STOP, HELP, and START are the canonical carrier-mandated compliance keywords. Their default replies are protected and cannot be changed via the OneSignal dashboard or API:
STOPopts the user out of SMS messages from a specific sender. Recognized aliases (UNSUBSCRIBE,CANCEL) share the same protected reply.HELPreturns information about your messaging program.STARTlets the user opt back in after opting out. Recognized aliases (UNSTOP,YES) share the same protected reply.
support@onesignal.com with your App ID and the new response message.
By default, when a user texts STOP, OneSignal replies: “You have successfully been unsubscribed. You will not receive any more messages from this number. Reply START to resubscribe.”
By default, an opt-out only prevents messages from the specific sender the subscriber texted. This ensures opt-outs are scoped to the use case. A subscriber who texts STOP to your promotional sender continues to receive transactional messages and OTPs from your other senders.
Managing opt-outs for alphanumeric senders
Alphanumeric sender IDs (e.g., “ACME” instead of a phone number) cannot receive inbound replies, which means subscribers can’t text STOP to opt out. To stay compliant, you must provide a web-based unsubscribe page that processes the opt-out and updates the subscriber’s status in OneSignal via the API.Include an unsubscribe link in every message
Add a URL to a hosted unsubscribe page in each SMS you send. Use OneSignal Liquid tags to identify the subscriber in the URL:OneSignal renders
{{ onesignal_id }} (or {{ subscription_id }}) into the subscriber’s actual ID at send time, so each recipient gets a personalized unsubscribe link.Build the unsubscribe page
Host a simple web page at that URL. When the page loads, it reads the subscriber ID from the query parameter. The page should:
- Confirm to the subscriber what they’re opting out of (e.g., “You will no longer receive promotional text messages from ACME.”)
- Display a confirmation button. Don’t auto-unsubscribe on page load, since accidental clicks and link previews could trigger unintended opt-outs.
- Optionally let the subscriber choose which message types to opt out of, if you send multiple types from the same sender.
Call the OneSignal API to process the opt-out
When the subscriber confirms, call the OneSignal API to update their subscription status. Two options depending on the scope:
- Full unsubscribe from the sender: Use the Update Subscription API to set the subscription’s status to unsubscribed.
- Opt out of a specific message type: Use the Edit Tags API to set a tag (e.g.,
promo = false), then exclude subscribers with that tag when sending that message type.
SMS opt-in and collection
Collect valid consent before sending SMS, so subscribers reach this opt-out flow only after opting in.
Managing opt-outs for shared senders
If you do have a shared sender, you can use custom keywords to let subscribers opt out of specific message types without unsubscribing from everything. This works by tagging subscribers when they text an opt-out keyword, then excluding those subscribers when sending that type of message. How it works:- A subscriber texts a custom opt-out keyword to your sender (e.g., NOPROMO).
- OneSignal applies a data tag to that subscriber’s profile (e.g.,
promo = false). - When you send a promotional campaign, you filter your audience to exclude subscribers where
promo = false.
- Enter the keyword text (e.g., NOPROMO).
- Set audience scope to Anyone.
- Select or create a reply template (e.g., “You’ve been unsubscribed from promotional messages. You’ll still receive order and account notifications. Text STOP to unsubscribe from all messages.”).
- Assign a data tag:
promo = false.
transactional = false.
Excluding opted-out subscribers at send time:
When building a campaign or Journey for a specific use case, use the User Tag filter in Segments to exclude subscribers who have opted out. For example, when sending a promotional message, exclude subscribers where promo = false.
Important limitations:
- Default compliance keywords (STOP, HELP, START) still apply to the entire sender and cannot be scoped to a use case.
- You must include the custom opt-out keyword in every message of that type (e.g., “Reply NOPROMO to stop promotional texts”).
- Alphanumeric sender IDs cannot receive replies and do not support keywords.
- Reply syncing must be enabled. Go to Settings > Platforms > SMS Settings > Senders > Setup Replies.
SMS keywords
Full reference for setting up custom keywords, including two-way campaigns and preference centers.
Resubscribing
Once a user has opted out using a default opt-out keyword, they cannot be resubscribed through the OneSignal dashboard or API. The user must text a resubscribe keyword (START, UNSTOP, or YES) to the same sender number.
HELP keyword
By default, when a user texts HELP, OneSignal replies: “Reply STOP to unsubscribe. Msg&Data Rates May Apply.”Auto-responder
Set an auto-reply for any incoming message that doesn’t match a keyword. Use this to redirect users to customer support, collect their intent, or notify your team for follow-up.Viewing a subscriber’s opt-out status
To see which senders a subscriber is opted out of:- Go to Audience > Subscriptions in the OneSignal dashboard.
- Search for the subscriber by External ID, email, or phone number.
- Open their SMS subscription and look under Consent by Sender.
FAQ
What happens when a user texts STOP to a shared sender?
They are opted out of all messages from that sender, including transactional messages and OTPs. This is why we strongly recommend using separate senders for each program type. Once opted out via STOP, the user must text START (or another resubscribe keyword) to the same sender to receive messages again.Can I change the STOP or HELP response messages?
Yes, but not via the dashboard or API. Contactsupport@onesignal.com with your App ID and the new response text.