# MSG-VARIABLES — Template variables must use square-bracket notation

> Personalisation placeholders in samples should use [square brackets] rather than code syntax.

- **Rule ID:** MSG-VARIABLES
- **Layer:** Message content (`MESSAGE_CONTENT`)
- **Checks:** `campaign.sample[]`
- **Severity:** MEDIUM — Usually survives review, but lowers your trust score or invites manual review.
- **When it bites:** Gates approval — get this wrong and registration is refused
- **How it is detected:** AI judgement over the submitted form
- **Fix type:** Fix the field — a better value in the form clears it
- **Required by:** TCR, Twilio
- **Applies:** Applies to every 10DLC registration.
- **Canonical URL:** https://ekas.io/rules/10dlc/message-content/msg-variables/

## Why this rule exists

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.

## How to fix it

Convert placeholders to square-bracket notation and give them readable names describing the value.

## Example of a compliant value

```text
Acme Coffee: hi [first name], your order [order number] ships today. Reply STOP to opt out.
```

## Common mistakes

- Bracket placeholders belong in samples only — never send them in live traffic.
