{
  "id": "OPS-050",
  "slug": "ops-050",
  "title": "The opt-out confirmation is worth sending inside five minutes",
  "statement": "The single permitted opt-out confirmation should reach the consumer within five minutes of the revocation.",
  "rationale": "A prompt confirmation is what buys the presumption that the revocation was honoured, and it is also the only signal the consumer gets that anything happened. Sent late it does the opposite work: a confirmation arriving the next day reads as another unwanted message from a programme they already left, and it is a common trigger for the complaint the confirmation was meant to prevent.",
  "layer": "OPERATIONAL",
  "layerSlug": "operational",
  "object": "opt-out confirmation latency",
  "severity": "MEDIUM",
  "detectability": [
    "UNDETECTABLE_PRE_SUBMISSION"
  ],
  "failureClass": "TERMINAL_EXTERNAL",
  "authorities": [
    "FCC"
  ],
  "applicabilityText": "Applies to every 10DLC registration.",
  "universal": true,
  "remediation": "Send the confirmation from the same handler that performs the suppression, synchronously, rather than from a batch job. Done when the confirmation arrives while the consumer still has the conversation open.",
  "example": "STOP received 09:12:03 → suppressed 09:12:03 → confirmation delivered 09:12:05.",
  "notes": "A latency only measurable against real receipts. What the user has to confirm is that the confirmation is not queued behind an unrelated batch — the common cause of a slow one is that it shares a sending queue with marketing.",
  "phase": "post",
  "automated": false,
  "attestation": {
    "question": "Does the opt-out confirmation arrive while the consumer still has the conversation open?",
    "howToCheck": [
      "Send STOP to your own programme and time the confirmation.",
      "Check it is sent synchronously by the same handler that performs the suppression, not by a batch job sharing a queue with marketing."
    ],
    "failureLooksLike": "A confirmation arriving the next day reads as another unwanted message from a programme they already left — and triggers the complaint it was meant to prevent."
  },
  "url": "https://ekas.io/rules/10dlc/operational/ops-050/",
  "markdown": "https://ekas.io/rules/10dlc/operational/ops-050.md",
  "registry": "https://ekas.io/rules/10dlc/",
  "updated": "2026-07-25",
  "licence": "CC BY 4.0 — https://creativecommons.org/licenses/by/4.0/"
}
