# MSG-152 — Transactional campaigns must contain no promotional element

> A campaign declared transactional or informational must have no coupon, offer, upsell, or promotional content in its samples.

- **Rule ID:** MSG-152
- **Layer:** Message content (`MESSAGE_CONTENT`)
- **Checks:** `campaign.sample[] + campaign.usecase`
- **Severity:** BLOCKING — Breaking this rule gets the submission rejected outright.
- **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-152/

## Why this rule exists

Transactional use cases receive better throughput and lighter filtering precisely because they are not marketing. A single coupon inside an otherwise transactional set means the campaign obtained that treatment under a false description, which is why one offending sample is enough to reject.

## How to fix it

Remove promotional content from transactional samples, or move the campaign to MIXED and collect promotional-grade consent.

## Example of a compliant value

```text
ACCOUNT_NOTIFICATION: "Acme Coffee: your payment of $24.50 was received." — no offer attached.
```

## Common mistakes

- A discount code appended to an order confirmation converts the whole campaign into marketing.
