# CMP-097 — A keyword opt-in must give the keyword and the number to text it to

> A keyword opt-in must state the exact keyword and the exact destination number in the message flow.

- **Rule ID:** CMP-097
- **Layer:** Campaign (`CAMPAIGN`)
- **Checks:** `campaign.message_flow`
- **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:** Aerialink, Telnyx
- **Applies:** Applies when consent was collected by text-to-join keyword.
- **Canonical URL:** https://ekas.io/rules/10dlc/campaign/cmp-097/

## Why this rule exists

A reviewer verifies a keyword programme by texting the keyword to the number and seeing what comes back, and a flow missing either half makes that impossible. Both halves are usually known to everyone involved and written down nowhere, because the signage carries them and the form does not ask for them in so many words.

## How to fix it

Write the keyword and the destination number into the flow exactly as they appear on your signage, including the short code or long code digits. Done when someone holding only the flow text could join the programme from their own phone.

## Example of a compliant value

```text
Supporters text SHELTER to 55512, as printed on the shelter posters.
```

## Common mistakes

- The keyword in the flow, the keyword on the signage and the keyword configured on the campaign have to be the same word — JOIN and JOINUS are different programmes to a reviewer comparing them.

## Provider rejection codes

| Provider | Code | Resubmission allowed |
| --- | --- | --- |
| Twilio | `30909` | yes |
