{
  "id": "MSG-088",
  "slug": "msg-088",
  "title": "Public URL shorteners are prohibited in every registration field",
  "statement": "No public URL shortener may appear in the description, message flow, samples, HELP reply, or either confirmation message.",
  "rationale": "Shorteners hide the destination, so carriers cannot assess where a message leads and block them categorically. Tools typically check only the sample messages, but the prohibition covers every field — a shortener in the HELP reply or the opt-in confirmation is rejected exactly the same way.",
  "layer": "MESSAGE_CONTENT",
  "layerSlug": "message-content",
  "object": "campaign.* (every text field)",
  "severity": "BLOCKING",
  "detectability": [
    "DETERMINISTIC"
  ],
  "failureClass": "RETRY_FIELD",
  "authorities": [
    "CTIA",
    "TCR",
    "Twilio",
    "Bandwidth",
    "AWS"
  ],
  "codes": [
    {
      "provider": "Twilio",
      "code": "30892",
      "remediable": true,
      "generation": "gen1"
    },
    {
      "provider": "Twilio",
      "code": "30963",
      "remediable": false,
      "generation": "gen2"
    },
    {
      "provider": "Bandwidth",
      "code": "8201",
      "remediable": true
    }
  ],
  "applicabilityText": "Applies to every 10DLC registration.",
  "universal": true,
  "remediation": "Replace every shortened link with the full URL on your own domain. Note the two Twilio generations disagree on whether this is fixable — assume the strict reading, where it is not resubmittable.",
  "example": "https://acmecoffee.com/sale rather than https://bit.ly/3xY2z",
  "phase": "approval",
  "automated": true,
  "url": "https://ekas.io/rules/10dlc/message-content/msg-088/",
  "markdown": "https://ekas.io/rules/10dlc/message-content/msg-088.md",
  "registry": "https://ekas.io/rules/10dlc/",
  "updated": "2026-07-25",
  "licence": "CC BY 4.0 — https://creativecommons.org/licenses/by/4.0/"
}
