# OPS-098 — There is a per-recipient daily ceiling even without a state rule

> No more than ten messages should reach one recipient in any 24-hour period without two-way engagement or explicit high-frequency consent.

- **Rule ID:** OPS-098
- **Layer:** Operational (`OPERATIONAL`)
- **Checks:** `per-recipient 24-hour send count`
- **Severity:** HIGH — Rejected by at least one carrier or provider, and a common cause of failure at the rest.
- **When it bites:** Falls due after approval, once you are live and sending
- **How it is detected:** Not knowable before submission — reported with its deadline
- **Fix type:** Wait on an external system or a required interval
- **Required by:** Telnyx
- **Applies:** Applies to every 10DLC registration.
- **Canonical URL:** https://ekas.io/rules/10dlc/operational/ops-098/

## Why this rule exists

Providers apply this as an acceptable-use limit regardless of state law, and crossing it reads as a malfunction rather than a campaign — which is usually what it is. The classic cause is a loop: an automation that fires on a status change, and a status that flaps.

## How to fix it

Cap per-recipient daily volume across all automations and alarm when the cap is hit, since hitting it usually means something is looping. Done when a runaway automation is stopped by the cap rather than by a complaint.

## Example of a compliant value

```text
Per-recipient limit 10 per 24h across every campaign; breach pauses the automation and pages the owner.
```

## Check this yourself

**Does your per-recipient daily cap span every campaign in the account, or sit inside one?**

1. Check where the counter lives. Per-campaign caps are the common implementation and they do not catch a loop.
2. Cap per-recipient daily volume across all automations at ten, and alarm when it is hit — hitting it usually means something is looping.

*What wrong looks like:* An automation fires on a status change and the status flaps. Crossing the ceiling reads as a malfunction rather than a campaign, which is usually exactly what it is.

## Notes

A counter across the whole account. What the user has to check is that the cap spans campaigns rather than sitting inside one — per-campaign caps are the common implementation and they do not catch the loop.
