# MSG-020 — MMS sample images must not be placeholder or stock artwork

> The attached MMS sample media must show the artwork the campaign will actually send, not a placeholder graphic or an unlicensed stock image standing in for it.

- **Rule ID:** MSG-020
- **Layer:** Message content (`MESSAGE_CONTENT`)
- **Checks:** `campaign.mms_sample_media`
- **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 vision over a consent artifact (screenshot, scan, MMS media)
- **Fix type:** Fix the field — a better value in the form clears it
- **Required by:** AWS
- **Applies:** Applies when `mmsEnabled` is true.
- **Canonical URL:** https://ekas.io/rules/10dlc/message-content/msg-020/

## Why this rule exists

The picture is how a reviewer decides whether an MMS programme is what it claims to be, so a grey "image goes here" block or a generic stock photo leaves them judging the campaign on the caption alone — and campaigns that register with filler artwork are the ones that later send something else. The honest cause is usually sequencing: the artwork is still with the designer when the registration goes in, and a stand-in feels harmless.

## How to fix it

Replace each attachment with the finished creative for that message, carrying your own branding and your own products. Done when someone who has never seen your business could name it from the image alone.

## Example of a compliant value

```text
acme-summer-sale.png: the Acme Coffee wordmark over a photo of the espresso blend on offer, with "20% off this weekend" set in the brand typeface.
```

## Common mistakes

- A licensed stock photo is still a fail here when nothing in the frame identifies the sender — the objection is anonymity, not the licence.

## Provider rejection codes

| Provider | Code | Resubmission allowed |
| --- | --- | --- |
| AWS | `NON_COMPLIANT_MESSAGE_SAMPLES` | yes |
