# CON-048 — Every page that collects a number needs consent language

> SMS opt-in language and a consent control must appear on every page of the site that collects a mobile number, not only the page named in the registration.

- **Rule ID:** CON-048
- **Layer:** Consent flow (`CONSENT_FLOW`)
- **Checks:** `all pages containing a phone input`
- **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 website — no form edit clears it
- **Required by:** Telnyx, Commio, Bird
- **Applies:** Applies to every 10DLC registration.
- **Canonical URL:** https://ekas.io/rules/10dlc/consent-flow/con-048/

## Why this rule exists

Numbers reach the sending list from every form on the site — contact, booking, quote, donation, callback — and the ones collected on unlabelled forms carry no consent at all. Reviewers crawl for phone inputs rather than trusting the registered URL, which makes this the single highest-yield finding in the corpus, and the one brands are most surprised by: they fixed the signup page and never thought of the contact form.

## How to fix it

Inventory every form on the site that takes a phone number, and add the consent control and disclosure to each one — or remove the phone field from the forms that do not need it, which is usually the cheaper fix. Done when a site-wide search for phone inputs returns nothing without a consent block beside it.

## Common mistakes

- Forms embedded from a booking or scheduling vendor are the ones most often missed, because nobody thinks of them as pages on the site.

## Provider rejection codes

| Provider | Code | Resubmission allowed |
| --- | --- | --- |
| Telnyx | `803` | yes |

## Notes

Needs a whole-site crawl for phone inputs. The current crawler fetches the registered page only, so this rule will return UNCLEAR in production until that lands — recorded here rather than omitted, because the requirement is real and the gap is the crawler's.
