Errors & Policy Blocks
Every policy block reason and suppression reason explained.
When a send request is blocked by the policy engine, the response includes a reason field. This page documents every possible reason.
Policy block reasons
| Reason | Description |
|---|---|
duplicate | A request with the same dedupeKey was already processed. Use a unique key per send. |
cooldown | The recipient was emailed too recently. Wait for the cooldown period to expire. |
dnc | The recipient is on a do-not-contact list. This cannot be overridden. |
suppressed | The recipient is on the suppression list (e.g., from a prior bounce or complaint). |
active_opportunity | An active sales opportunity exists for this contact. Automated sends are paused to avoid interference. |
budget_exceeded | The tenant's daily or hourly send budget has been exceeded. |
monthly_budget_exceeded | The tenant's monthly send budget has been exceeded. |
tenant_paused | Sending is paused for this tenant, either manually or due to an incident. |
template_not_approved | The template requires approval and has not been approved yet. |
template_lint_failed | The template failed content linting checks (e.g., missing unsubscribe link, spam triggers). |
rate_limited | One of the rate limit windows (monthly, daily, or hourly) has been exceeded. See Rate Limits. |
risk_budget_exceeded | The tenant has exceeded its risk budget based on bounce and complaint rates. |
negative_signal_budget_exceeded | Too many negative signals (bounces, complaints) received in the current window. |
lease_conflict | Another agent currently holds a coordination lease on this contact. Wait for the lease to expire or be released. |
no_verified_domain | The sender domain is not verified. Add and verify the domain in Dashboard > Domains. |
subscription_expired | Your subscription has expired. Renew or upgrade your plan to resume sending. |
trial_not_activated | Your trial has not been activated yet. Complete onboarding to start sending. |
storage_limit_exceeded | Your plan's storage limit has been exceeded. Free up space or upgrade your plan. |
Suppression reasons
When a recipient is on the suppression list (suppressed block reason), the suppression was created for one of these reasons:
| Reason code | Description |
|---|---|
complaint | The recipient previously marked an email as spam. |
hard_bounce | A previous email to this address hard-bounced (e.g., address does not exist). |
manual_dnc | The recipient was manually added to the do-not-contact list. |
legal_request | A suppression was added due to a legal request (e.g., GDPR erasure). |
role_account | The address is a role account (e.g., info@, admin@) that should not receive automated email. |
Handling blocked sends
- Check the
reasonfield in the response to understand why the send was blocked. - Refer to the table above for the specific reason.
- Take the appropriate action — wait for a cooldown, verify a domain, upgrade your plan, etc.
- Retry the request once the issue is resolved. Use a new
dedupeKeyif the original was consumed.