{
  "id": "CMP-FLOW-LEN",
  "slug": "cmp-flow-len",
  "title": "Message flow must be 40–2049 characters",
  "statement": "The opt-in / message-flow field must be at least 40 and at most 2049 characters.",
  "rationale": "The message flow has to hold the opt-in location, the consent wording, and a reference to the evidence, which does not fit in a sentence. The 2049-character ceiling is tighter than the description's, so a thorough flow can be truncated on submission without warning.",
  "layer": "CAMPAIGN",
  "layerSlug": "campaign",
  "object": "campaign.message_flow",
  "severity": "BLOCKING",
  "detectability": [
    "DETERMINISTIC"
  ],
  "failureClass": "RETRY_FIELD",
  "authorities": [
    "Twilio",
    "TCR"
  ],
  "applicabilityText": "Applies to every 10DLC registration.",
  "universal": true,
  "remediation": "Describe where and how consent is collected, including the exact disclosure wording shown to the consumer.",
  "example": "Customers opt in at https://acmecoffee.com/signup by ticking an unchecked box reading \"By checking this box, you agree to receive recurring automated marketing text messages from Acme Coffee…\". Screenshot: https://cdn.acmecoffee.com/compliance/optin.png",
  "catalogIds": [
    "CMP-002"
  ],
  "phase": "approval",
  "automated": true,
  "url": "https://ekas.io/rules/10dlc/campaign/cmp-flow-len/",
  "markdown": "https://ekas.io/rules/10dlc/campaign/cmp-flow-len.md",
  "registry": "https://ekas.io/rules/10dlc/",
  "updated": "2026-07-25",
  "licence": "CC BY 4.0 — https://creativecommons.org/licenses/by/4.0/"
}
