{
  "id": "CMP-EMOJI",
  "slug": "cmp-emoji",
  "title": "Registration fields must not contain emoji",
  "statement": "No campaign registration field may contain an emoji character.",
  "rationale": "Emoji are fine in live message traffic but rejected inside the registration record itself, because the downstream systems that parse and display campaign metadata do not handle them consistently. It surfaces only in the DCA vetting reason list rather than in any provider documentation, which is why generic implementations never check for it — and why a generator that writes a cheerful emoji into a description silently creates a rejection.",
  "layer": "CAMPAIGN",
  "layerSlug": "campaign",
  "object": "campaign.* (all text fields)",
  "severity": "BLOCKING",
  "detectability": [
    "DETERMINISTIC"
  ],
  "failureClass": "RETRY_FIELD",
  "authorities": [
    "TCR"
  ],
  "codes": [
    {
      "provider": "TCR/DCA",
      "code": "6103",
      "remediable": true
    }
  ],
  "applicabilityText": "Applies to every 10DLC registration.",
  "universal": true,
  "remediation": "Remove emoji from the registration fields. They are allowed in live message traffic, but not in the registration record itself.",
  "example": "Acme Coffee sends weekly promotional offers to customers who opted in at checkout.",
  "notes": "Surfaces only in the DCA vetting reason list, not in any provider doc — which is why generic implementations miss it entirely.",
  "catalogIds": [
    "CMP-015"
  ],
  "phase": "approval",
  "automated": true,
  "url": "https://ekas.io/rules/10dlc/campaign/cmp-emoji/",
  "markdown": "https://ekas.io/rules/10dlc/campaign/cmp-emoji.md",
  "registry": "https://ekas.io/rules/10dlc/",
  "updated": "2026-07-25",
  "licence": "CC BY 4.0 — https://creativecommons.org/licenses/by/4.0/"
}
