{
  "id": "MSG-152",
  "slug": "msg-152",
  "title": "Transactional campaigns must contain no promotional element",
  "statement": "A campaign declared transactional or informational must have no coupon, offer, upsell, or promotional content in its samples.",
  "rationale": "Transactional use cases receive better throughput and lighter filtering precisely because they are not marketing. A single coupon inside an otherwise transactional set means the campaign obtained that treatment under a false description, which is why one offending sample is enough to reject.",
  "layer": "MESSAGE_CONTENT",
  "layerSlug": "message-content",
  "object": "campaign.sample[] + campaign.usecase",
  "severity": "BLOCKING",
  "detectability": [
    "AI_FORM"
  ],
  "failureClass": "RETRY_FIELD",
  "authorities": [
    "TCR",
    "Twilio",
    "Bandwidth",
    "AWS"
  ],
  "applicabilityText": "Applies to every 10DLC registration.",
  "universal": true,
  "remediation": "Remove promotional content from transactional samples, or move the campaign to MIXED and collect promotional-grade consent.",
  "example": "ACCOUNT_NOTIFICATION: \"Acme Coffee: your payment of $24.50 was received.\" — no offer attached.",
  "pitfalls": [
    "A discount code appended to an order confirmation converts the whole campaign into marketing."
  ],
  "phase": "approval",
  "automated": true,
  "url": "https://ekas.io/rules/10dlc/message-content/msg-152/",
  "markdown": "https://ekas.io/rules/10dlc/message-content/msg-152.md",
  "registry": "https://ekas.io/rules/10dlc/",
  "updated": "2026-07-25",
  "licence": "CC BY 4.0 — https://creativecommons.org/licenses/by/4.0/"
}
