# MSG-SAMPLES-DISTINCT — Sample messages must be materially different from one another

> Each sample must illustrate a genuinely different message the campaign will send, not a near-duplicate of another sample.

- **Rule ID:** MSG-SAMPLES-DISTINCT
- **Layer:** Message content (`MESSAGE_CONTENT`)
- **Checks:** `campaign.sample[]`
- **Severity:** HIGH — Rejected by at least one carrier or provider, and a common cause of failure at the rest.
- **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, Bandwidth, AWS
- **Applies:** Applies to every 10DLC registration.
- **Canonical URL:** https://ekas.io/rules/10dlc/message-content/msg-samples-distinct/

## Why this rule exists

The point of multiple samples is to show a reviewer the range of what will actually be sent. Three variations on the same sentence demonstrate nothing about the rest of the program, so reviewers read near-duplicates as padding to satisfy a field count and reject the campaign as unrepresentative. Exact-duplicate detection catches only the laziest version of this; the common failure is three messages that differ by a product name.

## How to fix it

Replace near-duplicate samples with messages covering genuinely different scenarios from the same campaign — for a marketing campaign, one promotion, one product launch, one loyalty or event message rather than three discount offers.

## Example of a compliant value

```text
1. "Acme Coffee: 20% off all beans this weekend. Shop https://acmecoffee.com/sale Reply STOP to opt out, HELP for help."
2. "Acme Coffee: your rewards balance is 240 points — enough for a free drink. Reply STOP to opt out."
3. "Acme Coffee: our Mission St store opens Saturday at 8am, first 50 customers get a free pastry. Reply STOP to opt out."
```

## Common mistakes

- Changing only a discount percentage or a product name between samples is not material difference.
- Do not solve this by making one sample an opt-out confirmation — samples must show campaign content.

## Provider rejection codes

| Provider | Code | Resubmission allowed |
| --- | --- | --- |
| Twilio (gen1) | `30893` | yes |
