{
  "id": "CMP-PHONE-DECL",
  "slug": "cmp-phone-decl",
  "title": "embeddedPhone must match whether samples contain phone numbers",
  "statement": "The embeddedPhone attribute must be true when any sample contains a phone number, and vice versa.",
  "rationale": "Phone numbers inside message bodies are a filtering signal because they are a common redirection tactic, so the declaration must match reality. Several providers carve out a support number in the HELP reply, which is why this is graded below the link rule.",
  "layer": "CAMPAIGN",
  "layerSlug": "campaign",
  "object": "campaign.embedded_phone + campaign.sample[]",
  "severity": "HIGH",
  "detectability": [
    "DETERMINISTIC"
  ],
  "failureClass": "RETRY_FIELD",
  "authorities": [
    "TCR",
    "Twilio",
    "AWS"
  ],
  "applicabilityText": "Applies to every 10DLC registration.",
  "universal": true,
  "remediation": "Set the \"messages contain phone numbers\" flag to match your sample messages.",
  "example": "Samples contain 415-555-0134 → set \"messages contain phone numbers\" to true.",
  "notes": "A HELP-reply support number is an accepted exception at several providers; that carve-out is not yet modelled here.",
  "catalogIds": [
    "MSG-116"
  ],
  "phase": "approval",
  "automated": true,
  "url": "https://ekas.io/rules/10dlc/campaign/cmp-phone-decl/",
  "markdown": "https://ekas.io/rules/10dlc/campaign/cmp-phone-decl.md",
  "registry": "https://ekas.io/rules/10dlc/",
  "updated": "2026-07-25",
  "licence": "CC BY 4.0 — https://creativecommons.org/licenses/by/4.0/"
}
