{
  "id": "MSG-SAMPLES-DISTINCT",
  "slug": "msg-samples-distinct",
  "title": "Sample messages must be materially different from one another",
  "statement": "Each sample must illustrate a genuinely different message the campaign will send, not a near-duplicate of another sample.",
  "rationale": "The point of multiple samples is to show a reviewer the range of what will actually be sent. Three variations on the same sentence demonstrate nothing about the rest of the program, so reviewers read near-duplicates as padding to satisfy a field count and reject the campaign as unrepresentative. Exact-duplicate detection catches only the laziest version of this; the common failure is three messages that differ by a product name.",
  "layer": "MESSAGE_CONTENT",
  "layerSlug": "message-content",
  "object": "campaign.sample[]",
  "severity": "HIGH",
  "detectability": [
    "AI_FORM"
  ],
  "failureClass": "RETRY_FIELD",
  "authorities": [
    "TCR",
    "Twilio",
    "Bandwidth",
    "AWS"
  ],
  "codes": [
    {
      "provider": "Twilio",
      "code": "30893",
      "remediable": true,
      "generation": "gen1"
    }
  ],
  "applicabilityText": "Applies to every 10DLC registration.",
  "universal": true,
  "remediation": "Replace near-duplicate samples with messages covering genuinely different scenarios from the same campaign — for a marketing campaign, one promotion, one product launch, one loyalty or event message rather than three discount offers.",
  "example": "1. \"Acme Coffee: 20% off all beans this weekend. Shop https://acmecoffee.com/sale Reply STOP to opt out, HELP for help.\"\n2. \"Acme Coffee: your rewards balance is 240 points — enough for a free drink. Reply STOP to opt out.\"\n3. \"Acme Coffee: our Mission St store opens Saturday at 8am, first 50 customers get a free pastry. Reply STOP to opt out.\"",
  "pitfalls": [
    "Changing only a discount percentage or a product name between samples is not material difference.",
    "Do not solve this by making one sample an opt-out confirmation — samples must show campaign content."
  ],
  "catalogIds": [
    "MSG-029"
  ],
  "phase": "approval",
  "automated": true,
  "url": "https://ekas.io/rules/10dlc/message-content/msg-samples-distinct/",
  "markdown": "https://ekas.io/rules/10dlc/message-content/msg-samples-distinct.md",
  "registry": "https://ekas.io/rules/10dlc/",
  "updated": "2026-07-25",
  "licence": "CC BY 4.0 — https://creativecommons.org/licenses/by/4.0/"
}
