{
  "id": "MSG-SAMPLES-OPTOUT",
  "slug": "msg-samples-optout",
  "title": "At least one sample must show opt-out language",
  "statement": "Sample messages must demonstrate that recipients are told how to stop receiving messages.",
  "rationale": "Reviewers use the samples to confirm the opt-out instruction reaches consumers in the actual message body, not just in the registration paperwork. Where every sample omits it, the reasonable inference is that live traffic omits it too.",
  "layer": "MESSAGE_CONTENT",
  "layerSlug": "message-content",
  "object": "campaign.sample[]",
  "severity": "BLOCKING",
  "detectability": [
    "AI_FORM"
  ],
  "failureClass": "RETRY_FIELD",
  "authorities": [
    "TCR",
    "CTIA",
    "Bandwidth",
    "Plivo",
    "Vonage"
  ],
  "codes": [
    {
      "provider": "Bandwidth",
      "code": "8100",
      "remediable": true
    }
  ],
  "applicabilityText": "Applies to every 10DLC registration.",
  "universal": true,
  "remediation": "Add \"Reply STOP to opt out\" to your samples. Include it in every promotional sample; for transactional programs at minimum the first message in a series.",
  "example": "Acme Coffee: 20% off all beans this weekend. Reply STOP to opt out, HELP for help.",
  "catalogIds": [
    "MSG-047"
  ],
  "phase": "approval",
  "automated": true,
  "url": "https://ekas.io/rules/10dlc/message-content/msg-samples-optout/",
  "markdown": "https://ekas.io/rules/10dlc/message-content/msg-samples-optout.md",
  "registry": "https://ekas.io/rules/10dlc/",
  "updated": "2026-07-25",
  "licence": "CC BY 4.0 — https://creativecommons.org/licenses/by/4.0/"
}
