# MSG-105 — The advertised offer must match the landing page

> The offer described in a sample message must be the offer a recipient finds on the page the message links to.

- **Rule ID:** MSG-105
- **Layer:** Message content (`MESSAGE_CONTENT`)
- **Checks:** `campaign.sample[] <-> landing page`
- **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 crawled website or policy page
- **Fix type:** Fix the field — a better value in the form clears it
- **Required by:** Twilio
- **Applies:** Applies to every 10DLC registration.
- **Canonical URL:** https://ekas.io/rules/10dlc/message-content/msg-105/

## Why this rule exists

Bait-and-switch is the complaint consumers actually make — they were told about a discount, clicked, and found a signup wall or a different price — and it is one of the named triggers for Twilio's deceptive-marketing code, which is not eligible for resubmission. Honest campaigns drift into it through timing rather than intent: the sample was written against last quarter's promotion and the page has moved on, or the deep link rots and lands on a generic homepage where the advertised offer is nowhere in sight.

## How to fix it

Rewrite each sample so it describes what is genuinely on the page it links to, or point the link at the page that carries the offer. Deep-link to the offer rather than to the site root, so the recipient sees the thing they were promised without hunting for it. Done when the headline on the landing page and the offer in the message say the same number.

## Example of a compliant value

```text
Acme Coffee: 20% off all espresso blends this weekend. Shop https://acmecoffee.com/sale — and the page at /sale leads with "20% off all espresso blends, this weekend only". Reply STOP to opt out.
```

## Common mistakes

- A page that carries the offer somewhere below three screens of other content still reads as a switch — reviewers judge what is visible on arrival.

## Provider rejection codes

| Provider | Code | Resubmission allowed |
| --- | --- | --- |
| Twilio (gen2) | `30962` | no |
