{
  "id": "CON-163",
  "slug": "con-163",
  "title": "Keyword consent is bounded by what the advertisement promised",
  "statement": "Consent given by texting a keyword extends only to the programme advertised alongside that keyword.",
  "rationale": "With text-to-join, the advertisement is the whole disclosure — the consumer decided before the first message existed. So a keyword advertised for shipping alerts collects consent for shipping alerts, and the promotional programme it actually enrols people into was never disclosed to anybody who joined.",
  "layer": "CONSENT_FLOW",
  "layerSlug": "consent-flow",
  "object": "keyword advertisement copy vs campaign content",
  "severity": "HIGH",
  "detectability": [
    "AI_FORM"
  ],
  "failureClass": "TERMINAL_ARTIFACT",
  "artifact": "keyword_cta_copy",
  "authorities": [
    "Klaviyo",
    "CTIA"
  ],
  "applicability": {
    "consentMethods": [
      "keyword"
    ]
  },
  "applicabilityText": "Applies when consent was collected by text-to-join keyword.",
  "universal": false,
  "remediation": "Make the advertised copy describe everything the keyword enrols the consumer into, or split the programmes and advertise a keyword for each. Done when the samples contain nothing a reader of the advertisement would not have expected.",
  "example": "Text JOIN to 55512 for Acme Coffee offers and rewards updates. Msg frequency varies. Msg & data rates may apply. Reply STOP to cancel, HELP for help.",
  "pitfalls": [
    "Running one keyword across several campaigns is the usual cause, and it fails here even when each campaign is individually compliant."
  ],
  "phase": "approval",
  "automated": true,
  "url": "https://ekas.io/rules/10dlc/consent-flow/con-163/",
  "markdown": "https://ekas.io/rules/10dlc/consent-flow/con-163.md",
  "registry": "https://ekas.io/rules/10dlc/",
  "updated": "2026-07-25",
  "licence": "CC BY 4.0 — https://creativecommons.org/licenses/by/4.0/"
}
