{
  "id": "CON-071",
  "slug": "con-071",
  "title": "The decline path must be as usable as the accept path",
  "statement": "The control that lets a consumer skip or decline messaging must not be disabled, greyed out, or hidden.",
  "rationale": "A greyed-out \"No thanks\" is a refusal the interface has already made for the consumer, and it produces opt-ins that look voluntary in the data and were not. Design teams reach for the muted style to steer people toward the primary action without realising that here the primary action is a legal consent, where steering is the violation.",
  "layer": "CONSENT_FLOW",
  "layerSlug": "consent-flow",
  "object": "decline/skip control rendering",
  "severity": "HIGH",
  "detectability": [
    "VISION"
  ],
  "failureClass": "TERMINAL_WEBSITE",
  "authorities": [
    "Twilio",
    "FCC"
  ],
  "codes": [
    {
      "provider": "Twilio",
      "code": "30931",
      "remediable": true,
      "generation": "gen2"
    }
  ],
  "applicability": {
    "excludeConsentMethods": [
      "verbal_live",
      "verbal_ivr",
      "keyword",
      "qr",
      "imported"
    ]
  },
  "applicabilityText": "Applies when consent was NOT collected by live verbal, IVR, text-to-join keyword, QR code and imported list.",
  "universal": false,
  "remediation": "Render the decline control enabled, at a legible contrast, and in the same visual weight class as the accept control. Keep it in the same place on the screen — a \"No thanks\" moved below the fold is hidden even when it is styled correctly.",
  "pitfalls": [
    "Making the decline control a plain text link beside a large button is the usual compromise, and it is normally accepted; making it grey-on-grey or 10px is not."
  ],
  "notes": "Excluded from the methods where declining means simply not acting — a caller who says no, a consumer who never texts the keyword, a code nobody scans. There is no rendered control to grey out, so the rule would be asking a question the registration cannot answer. The catalog states the same carve-out as CON-069's method list.",
  "phase": "approval",
  "automated": true,
  "url": "https://ekas.io/rules/10dlc/consent-flow/con-071/",
  "markdown": "https://ekas.io/rules/10dlc/consent-flow/con-071.md",
  "registry": "https://ekas.io/rules/10dlc/",
  "updated": "2026-07-25",
  "licence": "CC BY 4.0 — https://creativecommons.org/licenses/by/4.0/"
}
