# OPS-232 — A spoken opt-in needs a per-consumer artifact, not just a script

> Verbal consent must be evidenced per consumer by a recording, a transcript, or documented contemporaneous notes — never by the script alone.

- **Rule ID:** OPS-232
- **Layer:** Operational (`OPERATIONAL`)
- **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:** FTC, practice
- **Applies:** Applies when consent was collected by live verbal and IVR.
- **Canonical URL:** https://ekas.io/rules/10dlc/operational/ops-232/

## Why this rule exists

The script proves what the programme intends to say. It is silent about any particular call, so a brand holding only a script has one document and no evidence, and finds that out when a single complaint asks about a single consumer. The transcript or the note is the substitute a reviewer accepts when a recording does not exist, which is why the rule names three acceptable forms rather than demanding audio.

## How to fix it

Name in the message flow which artifact is kept per consumer — recording, transcript, or a contemporaneous CRM note carrying the verbatim assent — and keep it against the number. Done when the flow says what exists for one named consumer, not what the agents are told to say.

## Example of a compliant value

```text
Each phone opt-in retains the call recording; where the consumer declines recording, the agent stores the verbatim assent and the script version in the CRM against the number.
```

## Notes

Absorbs OPS-234, which states the transcript fallback inside the same record requirement. Whether a recording can stand as WRITTEN consent for a marketing programme is a different question and is judged by CON-156; this rule asks only whether any per-consumer artifact exists.
