{
  "id": "MSG-026",
  "slug": "msg-026",
  "title": "Samples must not contain mustache or curly-brace template tokens",
  "statement": "Curly-brace and mustache tokens such as {order_id} or {{name}} must not appear in sample messages.",
  "rationale": "Square brackets are the convention reviewers read as \"this varies at send time\"; curly braces read as an unrendered template that leaked into the registration. The distinction is arbitrary but it is the one applied, and the fix costs nothing.",
  "layer": "MESSAGE_CONTENT",
  "layerSlug": "message-content",
  "object": "campaign.sample[]",
  "severity": "MEDIUM",
  "detectability": [
    "DETERMINISTIC"
  ],
  "failureClass": "RETRY_FIELD",
  "authorities": [
    "TCR",
    "Twilio"
  ],
  "applicabilityText": "Applies to every 10DLC registration.",
  "universal": true,
  "remediation": "Convert every curly-brace or mustache token to square-bracket notation with a readable name.",
  "example": "Acme Coffee: hi [first name], order [order number] ships today. Reply STOP to opt out.",
  "phase": "approval",
  "automated": true,
  "url": "https://ekas.io/rules/10dlc/message-content/msg-026/",
  "markdown": "https://ekas.io/rules/10dlc/message-content/msg-026.md",
  "registry": "https://ekas.io/rules/10dlc/",
  "updated": "2026-07-25",
  "licence": "CC BY 4.0 — https://creativecommons.org/licenses/by/4.0/"
}
