{
  "id": "MSG-008",
  "slug": "msg-008",
  "title": "Opt-in confirmation must be 20–255 characters",
  "statement": "The opt-in confirmation must be at least 20 and at most 255 characters.",
  "rationale": "The confirmation has the longest required element list of the three auto-replies — brand, programme, frequency, rates, HELP and STOP — so it is the one most likely to overrun. Truncation drops the tail, and the tail is where STOP lives.",
  "layer": "MESSAGE_CONTENT",
  "layerSlug": "message-content",
  "object": "campaign.optin_message",
  "severity": "BLOCKING",
  "detectability": [
    "DETERMINISTIC"
  ],
  "failureClass": "RETRY_FIELD",
  "authorities": [
    "TCR",
    "Twilio",
    "Bird",
    "Sinch"
  ],
  "applicabilityText": "Applies to every 10DLC registration.",
  "universal": true,
  "remediation": "Compress to 255 characters while keeping all six required elements. Abbreviate \"Msg & data rates may apply\" rather than dropping it.",
  "example": "Acme Coffee: you're subscribed to offers. Msg frequency varies. Msg & data rates may apply. Reply HELP for help, STOP to cancel.",
  "catalogIds": [
    "CMP-007"
  ],
  "phase": "approval",
  "automated": true,
  "url": "https://ekas.io/rules/10dlc/message-content/msg-008/",
  "markdown": "https://ekas.io/rules/10dlc/message-content/msg-008.md",
  "registry": "https://ekas.io/rules/10dlc/",
  "updated": "2026-07-25",
  "licence": "CC BY 4.0 — https://creativecommons.org/licenses/by/4.0/"
}
