{
  "id": "MSG-VARIABLES",
  "slug": "msg-variables",
  "title": "Template variables must use square-bracket notation",
  "statement": "Personalisation placeholders in samples should use [square brackets] rather than code syntax.",
  "rationale": "Square brackets are the convention reviewers expect, and they make clear which parts vary at send time. Raw code syntax reads as an unfinished integration and invites the reviewer to treat the sample as a placeholder rather than a real message.",
  "layer": "MESSAGE_CONTENT",
  "layerSlug": "message-content",
  "object": "campaign.sample[]",
  "severity": "MEDIUM",
  "detectability": [
    "AI_FORM"
  ],
  "failureClass": "RETRY_FIELD",
  "authorities": [
    "TCR",
    "Twilio"
  ],
  "applicabilityText": "Applies to every 10DLC registration.",
  "universal": true,
  "remediation": "Convert placeholders to square-bracket notation and give them readable names describing the value.",
  "example": "Acme Coffee: hi [first name], your order [order number] ships today. Reply STOP to opt out.",
  "pitfalls": [
    "Bracket placeholders belong in samples only — never send them in live traffic."
  ],
  "catalogIds": [
    "MSG-025"
  ],
  "phase": "approval",
  "automated": true,
  "url": "https://ekas.io/rules/10dlc/message-content/msg-variables/",
  "markdown": "https://ekas.io/rules/10dlc/message-content/msg-variables.md",
  "registry": "https://ekas.io/rules/10dlc/",
  "updated": "2026-07-25",
  "licence": "CC BY 4.0 — https://creativecommons.org/licenses/by/4.0/"
}
