Ctrl K
ring2all.com

SMS Opt-outs

Ring2All Platform — SMS Opt-out Management
Parent Module: SMS Messaging

---

Overview

SMS Opt-outs manage phone numbers that have requested to stop receiving text messages. The system automatically handles STOP/START keywords and maintains a blocklist for compliance with messaging regulations.

Admin Panel → SMS → Opt-outs

---

Configuration Fields

Field NameTechnical DescriptionUser-Friendly TooltipExampleNotes
Phone NumberE.164 format in phone_number.Phone number that opted out.+15551234567Messages to this number are blocked.
ReasonOpt-out keyword in reason.Why the number was added to opt-out list.STOPCaptured from the inbound message.
Created AtTimestamp in created_at.When the opt-out was recorded.2026-01-15 10:30:00For audit trail and compliance.
Created ByUser ID or source in created_by.Who/what added this opt-out.systemSystem for auto, user ID for manual.
---

Automatic Keyword Handling

The system automatically processes these keywords from inbound messages:

Opt-Out Keywords (Block)

KeywordAction
STOPAdd to opt-out list
STOPALLAdd to opt-out list
UNSUBSCRIBEAdd to opt-out list
CANCELAdd to opt-out list
ENDAdd to opt-out list
QUITAdd to opt-out list

Opt-In Keywords (Unblock)

KeywordAction
STARTRemove from opt-out list
YESRemove from opt-out list
UNSTOPRemove from opt-out list
SUBSCRIBERemove from opt-out list

Help Keywords (No Action)

KeywordAction
HELPSend help message (configurable)
INFOSend info message (configurable)
---

Automatic Response Messages

When keywords are detected, the system can send automatic responses:

STOP Response

"You have been unsubscribed and will not receive any more messages from this number. Reply START to resubscribe."

START Response

"You have been resubscribed to messages from this number. Reply STOP to unsubscribe."

HELP Response

"For help, visit [your website] or call [your phone number]. Reply STOP to unsubscribe."
💡 Tip: Response messages are configurable in SMS Settings.

---

Opt-out Behavior

When a message is sent to an opted-out number:

Plaintext
Outbound Message to +15551234567
           │
           â–ŧ
┌─────────────────────┐
│ Check Opt-out List  │
└──────────â”Ŧ──────────┘
           │
     Number found?
      Yes  │  No
      ─────â”ŧ─────
      │    └──â–ļ Continue sending
      │
      â–ŧ
┌─────────────────────┐
│ Reject Message      │
│ Status: "rejected"  │
│ Error: "opt-out"    │
└─────────────────────┘

The message:

  • Is NOT sent to the carrier
  • Is logged with status rejected
  • Error code indicates opt-out block

---

Manual Opt-out Management

Adding an Opt-out

  1. Go to SMS → Opt-outs
  2. Click + Add Opt-out
  3. Enter phone number in E.164 format
  4. Select reason (STOP, UNSUBSCRIBE, Manual, etc.)
  5. Click Save

Removing an Opt-out

  1. Find the opt-out in the list
  2. Click Delete icon
  3. Confirm removal

âš ī¸ Warning: Manually removing an opt-out should only be done with explicit consent from the recipient.

Bulk Import/Export

For managing large opt-out lists:

Export:
  • Download current opt-out list as CSV

Import:
  • Upload CSV with phone numbers
  • Format: phone_number,reason

---

Compliance Requirements

TCPA (US)

The Telephone Consumer Protection Act requires:

RequirementImplementation
Honor opt-outs within 10 daysImmediate blocking
Provide opt-out mechanismSTOP keyword
Confirm opt-outAutomatic response
Maintain opt-out listsms_optouts table
Penalties: $500-$1500 per violation

CAN-SPAM

For commercial messages:

RequirementImplementation
Include opt-out instructionsMessage templates
Honor opt-outs within 10 daysImmediate blocking
Identify senderFrom number/name

CASL (Canada)

Canadian Anti-Spam Legislation:

RequirementImplementation
Unsubscribe mechanismSTOP keyword
Process within 10 daysImmediate blocking
Maintain recordsAudit trail

GDPR (EU)

For European recipients:

RequirementImplementation
Right to objectOpt-out processing
Record of consentOpt-in/out logs
Data portabilityExport functionality
---

Opt-out List Best Practices

Do ✅

  • Import existing opt-out lists when migrating
  • Test opt-out with a test number before go-live
  • Regularly audit opt-out list for data quality
  • Keep records for at least 5 years
  • Sync opt-outs across all messaging channels

Don't ❌

  • Don't message opted-out numbers "just once"
  • Don't require login to opt-out
  • Don't charge for opt-out
  • Don't share opt-out lists with third parties
  • Don't remove opt-outs without explicit consent

---

Troubleshooting

IssueCauseSolution
STOP not workingInbound webhook misconfiguredCheck webhook URL in provider
Opted-out number still gets messagesNumber not in standard formatVerify E.164 format matches
Bulk import failsInvalid CSV formatCheck format: +15551234567,STOP
"Already opted out" errorDuplicate entryNumber already in list
Manual opt-out not blockingTypo in numberVerify number format
---

Audit and Reporting

Opt-out Report Fields

FieldDescription
Phone NumberThe opted-out number
ReasonKeyword or manual entry
Added DateWhen added to list
SourceSystem (auto) or User (manual)
Messages BlockedCount of blocked messages

Exporting for Compliance

To generate a compliance report:

  1. Go to SMS → Opt-outs
  2. Set date range filter
  3. Click Export to CSV
  4. Keep file for audit records

---

Database Schema

Sql
CREATE TABLE sms_optouts (
    id          SERIAL PRIMARY KEY,
    uuid        UUID DEFAULT gen_random_uuid(),
    domain_id   INTEGER NOT NULL,
    phone_number VARCHAR(20) NOT NULL,
    reason      VARCHAR(50) DEFAULT 'STOP',
    created_at  TIMESTAMP DEFAULT NOW(),
    created_by  INTEGER,
    UNIQUE(domain_id, phone_number)
);

CREATE INDEX idx_sms_optouts_phone ON sms_optouts(phone_number);
CREATE INDEX idx_sms_optouts_domain ON sms_optouts(domain_id);

---

API Reference

Check Opt-out Status

Http
GET /api/sms/optouts/check?phone=+15551234567

Response:

Json
{
  "opted_out": true,
  "reason": "STOP",
  "opted_out_at": "2026-01-15T10:30:00Z"
}

Add Opt-out

Http
POST /api/sms/optouts
Content-Type: application/json

{
  "phone_number": "+15551234567",
  "reason": "Manual - customer request"
}

Remove Opt-out

Http
DELETE /api/sms/optouts/{id}

---

See also: SMS Messages | SMS Settings | SMS Module Overview

Glossary

TermDefinition
Opt-outCompliance mechanism allowing recipients to unsubscribe from SMS lists
---

Lua Script Status â„šī¸

Integration Module

ComponentStatusNotes
SMS Opt-outsâ„šī¸ Configuration moduleCompliance rules verified by the main SMS handler
AI Assistant

👋 Hello! I'm your Ring2All documentation assistant. I can help you find information about configuring and using the Ring2All PBX platform.

How can I help you today?