# CMP-118 — A pop-up opt-in must be declared as one

> Where the opt-in is presented in a pop-up or modal, the message flow must say so.

- **Rule ID:** CMP-118
- **Layer:** Campaign (`CAMPAIGN`)
- **Checks:** `campaign.message_flow`
- **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:** Telnyx
- **Applies:** Applies when consent was collected by web form and checkout.
- **Canonical URL:** https://ekas.io/rules/10dlc/campaign/cmp-118/

## Why this rule exists

A reviewer opening the page sees no consent control, because the modal fires on a timer, on exit intent, or only for new visitors — so a perfectly compliant pop-up opt-in looks like a page with no opt-in on it. Saying "the opt-in appears in a modal after a few seconds on first visit" is the difference between an approval and a rejection for a form that was there the whole time.

## How to fix it

State that the opt-in is a pop-up, what triggers it, and attach a screenshot of it open. Done when a reviewer who sees no form on the page has already been told why and has an image of it.

## Example of a compliant value

```text
The opt-in appears in a pop-up shown to first-time visitors after 5 seconds on https://acmecoffee.com; screenshot attached: https://cdn.acmecoffee.com/compliance/popup-optin.png
```

## Notes

Tagged to the web methods because a modal is a web presentation; a spoken or paper opt-in cannot have one. The rule asks only that the presentation be declared — whether a pop-up is an acceptable surface at all is CON-DISC-NO-POPUP, which grades the disclosure inside it.
