> ## Documentation Index
> Fetch the complete documentation index at: https://docs.orbit.devotel.io/llms.txt
> Use this file to discover all available pages before exploring further.

# Opt-Out Keyword Aliases

> The canonical opt-out, opt-in, and HELP keyword aliases Orbit matches on inbound replies — the complete language-by-language table, how normalization and dedup work, and where the shipped list is maintained.

# Opt-Out Keyword Aliases

A recipient who wants off your list may type `STOP`, `BAJA`, `DUR`, `PARAR`, or `ARRÊT` — this page tabulates the exact alias vocabulary Orbit matches on every inbound reply, per keyword family and language. Use it when you need to know *which word does what*; the editorial walk-through (markets, channel propagation, suppression scoping) stays on the [Opt-Out Keyword Alias Table](/compliance/opt-out-keyword-alias-table) compliance page.

<Note>
  Keyword matching is a **tenant-owned** control. The shipped list below is a
  deterministic seed, not a platform mandate — you prune and extend your own
  rule rows, and only the regulatory floor (`STOP` / `START`) is not removable.
</Note>

***

## 1. Alias table by family

Orbit groups opt keywords into three families. All inbound matching runs one normalization pass (see §2), so the words below match in any case, accent, or zero-width-character variant.

### Opt-out family (STOP)

A match suppresses the number — channel scope `all` on the suppression record.

| Language | Aliases |
| - | - |
| English | `STOP` `STOPALL` `UNSUBSCRIBE` `QUIT` `OPT OUT` `OPTOUT` `CANCEL` `END` `REMOVE` `BLOCK` `BLOCKED` |
| Turkish | `DUR` `RED` `IPTAL` `İPTAL` `IPTAL ET` `DURDUR` `ÇIKIŞ` `CIKIS` `IPTL` |
| German | `STOPP` `ABBESTELLEN` `ABMELDEN` `ENDE` `ABBRECHEN` |
| Spanish | `BAJA` `CANCELAR` `SALIR` `FIN` |
| French | `ARRÊT` `ARRET` `ANNULER` `STOP` `FIN` |
| Portuguese | `PARAR` `CANCELAR` `SAIR` `FIM` |
| Italian | `FERMA` `CANCELLA` `FINE` `ANNULLA` |
| Arabic | `إلغاء` `أوقف` `توقف` `STOP` |
| Dutch | `STOP` `STOPPEN` `UITSCHRIJVEN` `OPZEGGEN` |

### Opt-in family (START)

A match re-subscribes the number after a prior opt-out.

| Language | Aliases |
| - | - |
| English | `START` `YES` `SUBSCRIBE` `OPT IN` `OPTIN` `UNSTOP` |
| Turkish | `BAŞLA` `BASLA` `EVET` `KATIL` `ABONE` (dotted-İ and dotless-i variants both resolve) |
| German | `START` `JA` `ANMELDEN` `ABONNIEREN` |
| Spanish | `ALTA` `SÍ` `SI` `COMENZAR` `SUSCIBIR` |
| French | `DÉMARRER` `DEMARRER` `OUI` `ABONNER` |
| Portuguese | `INICIAR` `SIM` `COMEÇAR` `COMECAR` `ASSINAR` |
| Italian | `INIZIA` `SÌ` `SI` `ISCRIVITI` |
| Arabic | `ابدأ` `نعم` `START` |
| Dutch | `START` `JA` `AANMELDEN` `ABONNEREN` |

### Help family (HELP)

A match triggers an auto-reply — no consent change. The reply template is localized per language and must identify the program, state the local HELP and STOP verbs, and carry the message-and-data-rates disclosure.

| Language | Aliases |
| - | - |
| English | `HELP` `INFO` `SUPPORT` |
| Turkish | `YARDIM` `YARDİM` `BILGI` `DESTEK` |
| German | `HILFE` `INFO` |
| Spanish | `AYUDA` `INFO` |
| French | `AIDE` `INFO` |
| Portuguese | `AJUDA` `INFO` |
| Italian | `AIUTO` `INFO` |
| Arabic | `مساعدة` `HELP` |
| Dutch | `HULP` `HELP` `INFO` |

***

## 2. Dedupe and normalization

Every inbound body is normalized **once**, then compared to the union of all nine language tables at once (there is no per-locale routing — the tables flatten into a single match set, and the language label is a stewardship hint, not a scope).

Normalization steps, in order:

1. **Unicode NFC** — composed and decomposed forms of the same character collapse (`e` + combining accent → `é`).
2. **Strip invisible characters** — zero-width spaces, joiners, and bidirectional control characters are removed, so visually spoofed keyword sandwiches cannot defeat matching.
3. **Locale-pinned case folding** — lowercase is pinned to the `en-US` locale rather than the host default, so the match is identical on any server regardless of ICU locale. Turkish dotted `İ` and dotless `ı` variants both resolve to their matchable forms.
4. **Whitespace** — leading and trailing whitespace is trimmed and internal runs collapse to a single space, so `OPT   OUT` equals `opt out`.

Same-family duplicates dedupe automatically: both alias tables and your custom rule rows converge on the same normalized form, so `STOP`, `stop`, `STOP.` and `Stop!` are one entry, not four.

**Match boundary.** A keyword matches the whole normalized body, optionally followed by whitespace and one terminal punctuation mark (`STOP.`, `Stop!` match). Trailing words or letters break the match: `STOP PLEASE` and `STOPPED` are not opt-outs.

***

## 3. Stewardship notes

The shipped alias data is maintained carrier-side: the source tables carry a per-language stewardship comment that cites the carrier or regulator convention each alias comes from (US CTIA §5, Turkish KVKK Art 11 + BTK 6/A, German UWG, Dutch Telecomwet Art 11.7, the Turkcell / Vodafone TR / KPN / TIM / Etisalat / du carrier sets, and the WhatsApp content-policy `STOP`/`BLOCK` guarantee). A regeneration test re-derives the tables and freezes the shipped set, so any edit to the vocabulary has to update that pin first — do not treat this page as the editable artifact.

Consequences for you, the tenant:

* `STOP` and `START` can never be removed by a workspace edit (TCPA + CTIA floor); every other alias you can prune.
* When you report a carrier behavior change (a new locale, a deprecated alias), the stewardship comment is where the correction lands — the tables regenerate from there.

***

## 4. Add your own synonyms

Custom additions are additive-only and stored per tenant. Open the **Opt-out Rules** editor under Messages → SMS, add a row with the keyword in **Keyword** (uppercase is stored; inbound matching is case-insensitive) and the reply copy in **Auto-reply** — the new synonym fires immediately on every reply-capable number. Over the API, use `POST /api/v1/settings/opt-out-rules` with `keyword`, `channel`, `action` (`opt-out` or `opt-in`), and optional `auto_reply_text` — see [Settings API — keyword and opt-out rules](/api-reference/settings).

Custom aliases never weaken a consent state: they widen the trigger surface and cannot reverse a suppression a real opt-out already wrote. Write access in the dashboard needs the **owner** or **admin** role.

The full walkthrough — seeded-row editing, channel scoping, export — is on [Custom Opt-Out Keyword Lists](/guides/opt-out-lists) and the compliance page in §1. This page deliberately stops at the reference table.

***

## Related pages

* [Opt-Out Keyword Alias Table (compliance)](/compliance/opt-out-keyword-alias-table) — the editorial page this table mirrors.
* [Opt-Out & Suppression Lists](/compliance/opt-out-suppression) — the ledger of what the keywords actually suppressed.
* [Opt-Out & Opt-In Rules (editor)](/guides/opt-out-rules) — the dashboard surface for row edits.
* [Custom Opt-Out Keyword Lists](/guides/opt-out-lists) — API-level keyword lists.
* [Glossary](/reference/glossary) — term-level definitions; this page is the keyword-table counterpart.
