# MSG-120 — Declared attributes must match sample content generally

> Every declared campaign attribute must be consistent with what the sample messages actually contain.

- **Rule ID:** MSG-120
- **Layer:** Message content (`MESSAGE_CONTENT`)
- **Checks:** `campaign attributes + 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, AWS
- **Applies:** Applies to every 10DLC registration.
- **Canonical URL:** https://ekas.io/rules/10dlc/message-content/msg-120/

## Why this rule exists

Attributes are self-declared and drive filtering, so a mismatch either over-restricts your own traffic or under-declares something carriers screen for. The link and phone pairs are checked individually; this catches the rest as a set.

## How to fix it

Walk each attribute against the samples and correct whichever side is wrong.

## Example of a compliant value

```text
Samples mention financing → direct lending: true.
```
