{
  "id": "MSG-119",
  "slug": "msg-119",
  "title": "A sample must contain a URL when embeddedLink is declared",
  "statement": "When embeddedLink is true, at least one sample message must actually contain a URL.",
  "rationale": "The attribute tells carriers to apply link-specific filtering, so declaring it without demonstrating a link means the campaign is registered for treatment it never exercises — and a reviewer reads the mismatch as a careless or copied registration.",
  "layer": "MESSAGE_CONTENT",
  "layerSlug": "message-content",
  "object": "campaign.embedded_link + campaign.sample[]",
  "severity": "BLOCKING",
  "detectability": [
    "DETERMINISTIC"
  ],
  "failureClass": "RETRY_FIELD",
  "authorities": [
    "TCR",
    "Twilio",
    "AWS",
    "Bandwidth"
  ],
  "applicabilityText": "Applies to every 10DLC registration.",
  "universal": true,
  "remediation": "Either include a representative link in a sample, or set the embedded-link attribute false if the programme genuinely sends no links.",
  "example": "Acme Coffee: 20% off this weekend. Shop https://acmecoffee.com/sale Reply STOP to opt out.",
  "phase": "approval",
  "automated": true,
  "url": "https://ekas.io/rules/10dlc/message-content/msg-119/",
  "markdown": "https://ekas.io/rules/10dlc/message-content/msg-119.md",
  "registry": "https://ekas.io/rules/10dlc/",
  "updated": "2026-07-25",
  "licence": "CC BY 4.0 — https://creativecommons.org/licenses/by/4.0/"
}
