{
  "id": "CMP-095",
  "slug": "cmp-095",
  "title": "A web opt-in must supply the form itself, not just describe it",
  "statement": "A web-form or checkout opt-in must supply the link to the opt-in page, or a screenshot of the form.",
  "rationale": "A reviewer confirms a web opt-in by looking at it, and a description with nothing to look at is an assertion rather than evidence. This is the most common shape of an incomplete submission because the flow text reads as complete — every element is described, and there is simply no way to check that any of it is on the page.",
  "layer": "CAMPAIGN",
  "layerSlug": "campaign",
  "object": "campaign.message_flow + opt-in evidence",
  "severity": "BLOCKING",
  "detectability": [
    "DETERMINISTIC"
  ],
  "failureClass": "TERMINAL_EVIDENCE",
  "authorities": [
    "Bandwidth",
    "Twilio"
  ],
  "codes": [
    {
      "provider": "Twilio",
      "code": "30896",
      "remediable": true
    }
  ],
  "applicability": {
    "consentMethods": [
      "web_form",
      "checkout"
    ]
  },
  "applicabilityText": "Applies when consent was collected by web form and checkout.",
  "universal": false,
  "remediation": "Put the deep link to the page carrying the consent control in the message flow, and attach a screenshot of that control taken on a fresh page load. Done when someone with no account can open the link and see the box you described.",
  "pitfalls": [
    "A link to the homepage is not a link to the opt-in form. If the control is three clicks in, the screenshot is doing the work and the link is not enough on its own."
  ],
  "phase": "approval",
  "automated": true,
  "url": "https://ekas.io/rules/10dlc/campaign/cmp-095/",
  "markdown": "https://ekas.io/rules/10dlc/campaign/cmp-095.md",
  "registry": "https://ekas.io/rules/10dlc/",
  "updated": "2026-07-25",
  "licence": "CC BY 4.0 — https://creativecommons.org/licenses/by/4.0/"
}
