{
  "id": "OPS-096",
  "slug": "ops-096",
  "title": "A state may black out whole days",
  "statement": "Where a state enacts holiday blackout dates for solicitations, no solicitation may be sent on them.",
  "rationale": "A blackout is not a narrower window, it is a day on which the send must not happen at all — so a scheduler that only knows about hours will happily run a campaign into a prohibited day. These are recent and expanding statutes, which means a programme built correctly two years ago can become non-compliant without anything about it changing.",
  "layer": "OPERATIONAL",
  "layerSlug": "operational",
  "object": "send date against a state holiday calendar",
  "severity": "LOW",
  "detectability": [
    "EXTERNAL_DATA"
  ],
  "failureClass": "TERMINAL_EXTERNAL",
  "authorities": [
    "state law (UT)"
  ],
  "applicabilityText": "Applies to every 10DLC registration.",
  "universal": true,
  "remediation": "Hold a blackout calendar alongside the window table and check the date as well as the time before scheduling. Done when a campaign scheduled across a blackout date skips the affected recipients rather than the whole send.",
  "notes": "State calendars we do not hold, and a list that changes by legislature. What the user has to do is subscribe to a compliance feed or review the statutes annually — this is the rule most likely to have changed since anybody last looked.",
  "phase": "post",
  "automated": false,
  "attestation": {
    "question": "Do you hold a current state holiday blackout calendar, and when was it last reviewed?",
    "howToCheck": [
      "Subscribe to a compliance feed or review the statutes annually — this is the rule most likely to have changed since anybody last looked.",
      "Check the date as well as the time before scheduling, so a campaign crossing a blackout skips the affected recipients rather than the whole send."
    ],
    "failureLooksLike": "A blackout is a day on which the send must not happen at all, so an hours-only scheduler runs the campaign into it. A programme built correctly two years ago becomes non-compliant with nothing about it changing."
  },
  "url": "https://ekas.io/rules/10dlc/operational/ops-096/",
  "markdown": "https://ekas.io/rules/10dlc/operational/ops-096.md",
  "registry": "https://ekas.io/rules/10dlc/",
  "updated": "2026-07-25",
  "licence": "CC BY 4.0 — https://creativecommons.org/licenses/by/4.0/"
}
