{
  "id": "CMP-040",
  "slug": "cmp-040",
  "title": "Promotional content anywhere requires MARKETING to be declared",
  "statement": "Where any campaign text describes promotional or marketing content, MARKETING must be a declared use case or sub-use case.",
  "rationale": "The use case sets the consent standard the campaign is held to, and promotional content needs express written consent where transactional content does not — so an undeclared marketing programme is being judged against a standard that does not apply to it. Businesses reach this by classifying on intent rather than content: a shipping notification carrying a discount code is filed as a delivery notification because that is what it is for, and it is promotional the moment the code is in it.",
  "layer": "CAMPAIGN",
  "layerSlug": "campaign",
  "object": "campaign.description + message_flow + sample[] ↔ campaign.usecase",
  "severity": "BLOCKING",
  "detectability": [
    "AI_FORM"
  ],
  "failureClass": "RETRY_FIELD",
  "authorities": [
    "Bandwidth",
    "Infobip",
    "Telnyx"
  ],
  "codes": [
    {
      "provider": "Bandwidth",
      "code": "3200",
      "remediable": true
    },
    {
      "provider": "Bandwidth",
      "code": "2200",
      "remediable": true
    },
    {
      "provider": "Bandwidth",
      "code": "8200",
      "remediable": true
    }
  ],
  "applicabilityText": "Applies to every 10DLC registration.",
  "universal": true,
  "remediation": "Either declare MARKETING (or MIXED with a marketing sub-use case) and collect promotional-grade consent for everyone on the list, or take the promotional content out of every field until nothing offers, discounts or advertises. Done when the declared use case and the content agree in both directions.",
  "example": "Samples mention \"20% off all espresso blends this weekend\" → use case MARKETING, not DELIVERY_NOTIFICATION.",
  "pitfalls": [
    "Declaring MARKETING is the cheaper half of the fix; the expensive half is that every number on the list now needs express written consent, and re-labelling the campaign does not re-collect it.",
    "One promotional sentence inside an otherwise transactional message makes the whole message promotional. The reviewer grades the message, not the ratio."
  ],
  "notes": "One rule for four catalog rows because the assertion and the fix are identical wherever the promotional language turns up — description (CMP-040), CTA (CMP-071), samples (MSG-150) and the published privacy policy (POL-077). The providers issue a different reject code per field, which is why the catalog keeps them apart; a submitter fixing one has to fix all of them, so splitting the rule would report one defect four times.",
  "catalogIds": [
    "CMP-071",
    "MSG-150",
    "POL-077"
  ],
  "phase": "approval",
  "automated": true,
  "url": "https://ekas.io/rules/10dlc/campaign/cmp-040/",
  "markdown": "https://ekas.io/rules/10dlc/campaign/cmp-040.md",
  "registry": "https://ekas.io/rules/10dlc/",
  "updated": "2026-07-25",
  "licence": "CC BY 4.0 — https://creativecommons.org/licenses/by/4.0/"
}
