IOSOR Learn
Inbound MO to suppressions: STOP on a DID protects reputation
Technical analysis of handling inbound MO opt-out keywords on E.164 DIDs, suppression list execution, webhook status payloads, and prepaid account safeguards.
Inbound MO to suppressions.
The Architecture of Automatic Opt-Out via Inbound MO
When an end-user replies with STOP, UNSUBSCRIBE, or QUIT to an inbound Mobile Originated (MO) message on a dedicated E.164 DID, your platform must process this signal immediately. Storing numbers on a suppression list at the API layer prevents subsequent outbound Mobile Terminated (MT) traffic from violating carrier compliance rules. If an outbound message is attempted toward a suppressed recipient, the gateway must drop or mark the payload as skipped before network transmission occurs. The architecture relies on strict signal integrity.
Mapping Inbound Keywords to Suppression Lists
Incoming MO payloads arrive via webhooks containing the sender E.164 number, destination DID, timestamp, and raw message body. The suppression subsystem parses standard compliance keywords including STOP, CANCEL, END, QUIT, and OPTOUT. Upon detecting a match, the ingestion engine normalizes the string by stripping whitespace and accents, converting characters to uppercase, and running a regular expression parser. If the body contains an isolated match or leading keyword, the engine triggers an atomic write operation to the persistent suppression store.
Webhooks, Status Codes, and Why Skipped Is Not Failed
When an outbound dispatch request targets a suppressed E.164 destination, the CPaaS engine blocks transmission before sending data to upstream routing paths. The platform returns a HTTP 200 OK response with a status payload indicating 'skipped_suppressed'. Returning a 4xx or 5xx HTTP status code for an opt-out block is an anti-pattern, as it implies an infrastructure error or client payload malformation, which triggers unnecessary retry logic in API client SDKs. By returning HTTP 200 OK alongside 'skipped_suppressed', the system maintains clean error logs.
Operational Rules and Prepaid Balance Controls
Managing inbound MO processing and suppression engines requires stable financial guardrails. CPaaS platforms operate on a strict prepaid structure featuring a USD 20 prepaid floor to maintain uninterrupted webhook processing and DID routing. If an account balance falls below this minimum threshold, inbound MO webhooks are buffered in a queue for up to 72 hours rather than dropped, preserving critical opt-out compliance signals. As monthly throughput scales, account managers evaluate inbound volume to ensure sufficient headroom.
Compliance Matrix: Inbound Opt-Out Handling
| Keyword | Action Taken | Outbound Status | Billing Impact |
|---|---|---|---|
| STOP | Add to Suppression List | Skipped (Blocked) | No Outbound Fee |
| UNSTOP | Remove from Suppression | Allowed | Standard Rate |
| HELP | Trigger Info Webhook | Allowed | Standard Rate |
| CANCEL | Add to Suppression List | Skipped (Blocked) | No Outbound Fee |
Start with IOSOR
When STOP lands on the DID, write the originating MSISDN onto that tenant’s suppression list before the next MT. Prove a follow-up send is refused. Export the MO timestamp and the list row. A webhook 2xx with no list write is not this job; E.164 cleanup is a different gate.
Related: Caller ID vs messaging From: voice live does not mean SMS live E.164 normalize before DID bind: plus, zeros, and spaces Prepaid hold before first debit.
IOSOR takeaway
An inbound MO on a DID is a list write, not a log souvenir.
Do: suppress before the next MT. Don’t: mark STOP as noted while MT continues, or wait for a weekly dump.
Was this guide helpful?
Related guides
- Second-owner DID handover: who may assign and release
Master operational boundaries, JIT provisioning, and prepaid financial thresholds during second-owner DID handovers.
- Spend Cap Per DID: Rent Plus MT Burn On One Number
Control per-number exposure in your white-label CPaaS with a combined spend cap for MRC and outbound mobile terminated traffic.
- Inbound webhook routing on DID: MO without owner loses STOP
Route inbound webhooks to the owning account securely. Prevent orphan MO events and missed opt-outs in white-label prepaid CPaaS.