{
  "id": "CMP-187",
  "slug": "cmp-187",
  "title": "The wider opt-out keyword set is required on some platforms",
  "statement": "Where the platform publishes a wider standard opt-out set, the declared keywords must cover HALT and STOPALL as well as the universal five.",
  "rationale": "A consumer who texts HALT has opted out as far as they are concerned, and on a platform that treats HALT as a recognised opt-out the message is suppressed whether or not you declared it — so a declaration that omits it puts your suppression list out of step with what the platform has already done. You then keep sending to someone the platform believes unsubscribed, which is the pattern complaint volume is measured on.",
  "layer": "CAMPAIGN",
  "layerSlug": "campaign",
  "object": "campaign.optout_keywords",
  "severity": "BLOCKING",
  "detectability": [
    "DETERMINISTIC"
  ],
  "failureClass": "RETRY_FIELD",
  "authorities": [
    "Twilio"
  ],
  "codes": [
    {
      "provider": "Twilio",
      "code": "30887",
      "remediable": true
    }
  ],
  "applicabilityText": "Applies to every 10DLC registration.",
  "universal": true,
  "remediation": "Add HALT and STOPALL to the declared opt-out keywords, and confirm your platform suppresses on both. Done when the declared set covers STOP, STOPALL, UNSUBSCRIBE, CANCEL, END, QUIT, HALT, OPTOUT and REVOKE.",
  "example": "optout_keywords: STOP, STOPALL, UNSUBSCRIBE, CANCEL, END, QUIT, HALT, OPTOUT, REVOKE",
  "notes": "Twilio's published set adds HALT and STOPALL to the seven FCC per-se revocation keywords that CON-KW-REVOCATION-SET requires. Kept out of the universal baseline deliberately: neither the FCC nor CTIA lists them, so demanding them everywhere would fail compliant registrations to satisfy one platform. On an unknown submission target the rule passes and names the two additions rather than failing, because we cannot yet know whether they are owed. An incomplete or empty list is OPS-026 and OPS-027's finding, not this one.",
  "phase": "approval",
  "automated": true,
  "url": "https://ekas.io/rules/10dlc/campaign/cmp-187/",
  "markdown": "https://ekas.io/rules/10dlc/campaign/cmp-187.md",
  "registry": "https://ekas.io/rules/10dlc/",
  "updated": "2026-07-25",
  "licence": "CC BY 4.0 — https://creativecommons.org/licenses/by/4.0/"
}
