{
  "id": "WEB-016",
  "slug": "web-016",
  "title": "The website must be machine-crawlable",
  "statement": "The site must be fetchable by an automated vetter — no robots.txt disallow, no noindex, no JS-only render, no geofence.",
  "rationale": "Vetting uses a headless fetcher, not a browser. A single-page app that renders only after JavaScript returns an empty shell to the reviewer, so a fully compliant opt-in becomes invisible and the campaign is rejected for having no discoverable consent flow.",
  "layer": "WEBSITE",
  "layerSlug": "website",
  "object": "brand website",
  "severity": "BLOCKING",
  "detectability": [
    "CRAWL"
  ],
  "failureClass": "TERMINAL_WEBSITE",
  "authorities": [
    "TCR",
    "Twilio",
    "Bandwidth"
  ],
  "applicabilityText": "Applies to every 10DLC registration.",
  "universal": true,
  "remediation": "Server-render the opt-in page, or provide a server-rendered alternative URL carrying the same consent surface. Remove robots.txt disallows on that path and confirm the page returns content from a US IP with JavaScript disabled.",
  "phase": "approval",
  "automated": true,
  "url": "https://ekas.io/rules/10dlc/website/web-016/",
  "markdown": "https://ekas.io/rules/10dlc/website/web-016.md",
  "registry": "https://ekas.io/rules/10dlc/",
  "updated": "2026-07-25",
  "licence": "CC BY 4.0 — https://creativecommons.org/licenses/by/4.0/"
}
