{
  "id": "CMP-021",
  "slug": "cmp-021",
  "title": "Reference id must be 50 characters or fewer",
  "statement": "The campaign reference id must be at most 50 characters, and unique within the CSP.",
  "rationale": "The reference id is your own key for finding this campaign again when a rejection arrives months later, and an over-long value is rejected at submission rather than truncated. Teams reach the cap by concatenating a customer name, a use case and a timestamp into one string, which is also what makes it collide with a sibling campaign.",
  "layer": "CAMPAIGN",
  "layerSlug": "campaign",
  "object": "campaign.reference_id",
  "severity": "MEDIUM",
  "detectability": [
    "DETERMINISTIC"
  ],
  "failureClass": "RETRY_FIELD",
  "authorities": [
    "TCR",
    "Bandwidth",
    "Telnyx"
  ],
  "applicabilityText": "Applies to every 10DLC registration.",
  "universal": true,
  "remediation": "Use a short opaque key you can look up on your side rather than a descriptive sentence, and confirm no other campaign in your CSP account already uses it. Done when the value is under 50 characters and unique.",
  "example": "reference_id: SP-2026-0142",
  "notes": "Only the length half is settled here. Uniqueness needs the CSP's whole campaign list, which a single registration does not carry — a duplicate surfaces at submission as \"Duplicate campaign\", and the remediation says to check it because we cannot.",
  "catalogIds": [
    "BRD-179"
  ],
  "phase": "approval",
  "automated": true,
  "url": "https://ekas.io/rules/10dlc/campaign/cmp-021/",
  "markdown": "https://ekas.io/rules/10dlc/campaign/cmp-021.md",
  "registry": "https://ekas.io/rules/10dlc/",
  "updated": "2026-07-25",
  "licence": "CC BY 4.0 — https://creativecommons.org/licenses/by/4.0/"
}
