Docs/Suppression & Suspension
Account

Suppression & Suspension

Understanding how SendFleet handles email bounces, spam complaints, suppressed addresses, and automatic account suspension is essential for maintaining healthy deliverability on Shared SES plans.

BYOC plans: Bounce and complaint handling is entirely within your own AWS SES account. The suppression list and suspension system described here apply only to Shared SES (Growth/Pro) senders.

Suppression list

SendFleet maintains a global suppression list for Shared SES sends. When an email address triggers a hard bounce or a spam complaint, it is automatically added to the suppression list. All subsequent send attempts to that address are rejected before they ever reach SES, returning a 422 error.

Why suppression exists

Re-sending to bounced addresses wastes your monthly quota, harms your sender reputation, and - because all Growth/Pro accounts share our SES infrastructure - can affect every other sender on the platform. The suppression list protects everyone.

What gets suppressed

EventSuppression added?Notes
Hard bounce (Permanent)Yes - immediatelyAddress does not exist or mailbox is full permanently. Never retry.
Soft bounce (Transient)NoTemporary issue (full inbox, server unavailable). SES may retry automatically.
Spam complaintYes - immediatelyRecipient marked your email as spam. Continuing to send is a deliverability risk.
Manual additionAdmin onlySupport can manually add addresses when appropriate.

Suppression error response

When you attempt to send to a suppressed address, the API returns immediately without queuing:

422 Unprocessable Entity
{
  "success": false,
  "error":   "recipient_suppressed",
  "detail":  "'user@example.com' is on the suppression list due to a previous hard bounce or spam complaint."
}

Handling suppressed recipients in your code

Check for "error": "recipient_suppressed" in your response handling. When you receive this, mark the address as undeliverable in your own database and stop attempting to send to it. Do not retry suppressed addresses automatically.

Python - handling suppression
response = requests.post("https://sendfleet.net/api/send/", ...)
data = response.json()

if response.status_code == 422 and data.get("error") == "recipient_suppressed":
    # Mark undeliverable in your own database
    db.mark_undeliverable(recipient_email)
    # Do NOT retry - the address is permanently suppressed

Suppression cache

Suppression lookups are cached for up to 10 minutes to reduce database load. A newly suppressed address will be enforced within 10 minutes across all sends. This is intentional - new suppressions propagate quickly enough to protect reputation without impacting hot-path latency.

Bounce & complaint processing

On Shared SES plans, SendFleet receives bounce and complaint notifications from AWS SES via SNS webhooks. These are processed automatically in the background after each delivery.

Event typeWhat happens
Permanent hard bounce1. Address added to suppression list
2. EmailLog status set to failed
3. email.bounced webhook fired (if configured)
4. Bounce rate counter updated for abuse detection
Spam complaint1. Address added to suppression list
2. email.complained webhook fired (if configured)
3. Complaint rate counter updated for abuse detection
Successful delivery1. EmailLog status set to sent, delivered_at recorded
2. email.delivered webhook fired (if configured)
SES rendering failure1. EmailLog status set to failed
2. email.failed webhook fired with reason

Automatic account suspension

To protect the shared sending pool, SendFleet automatically suspends Shared SES accounts that exceed bounce or complaint rate thresholds. The check runs after every bounce or complaint event is processed.

Thresholds

MetricThresholdWindowMin. sample
Bounce ratePer AWS SES guidelines (industry standard thresholds)Rolling 7 days50 sends
Complaint ratePer AWS SES guidelines (industry standard thresholds)Rolling 7 days50 sends

The minimum sample size prevents accounts with very low volume from being suspended on noise. An account that has sent fewer than 50 emails in the past 7 days is not evaluated, regardless of rate.

These thresholds align with AWS SES guidelines. AWS enforces similar limits on production SES accounts. Staying below these rates protects both your SendFleet account and your AWS sending reputation.

What suspension does

When an account is suspended:

  • All POST /api/send/ calls return 403 Forbidden with "error": "sending_suspended"
  • Dashboard access is preserved - you can still log in, view email history, and contact support
  • Your API keys remain valid - they will work again once reinstated

Suspension error response

403 Forbidden - sending suspended
{
  "success": false,
  "error":   "sending_suspended",
  "detail":  "Your account sending has been suspended. Reason: bounce rate 5.23% exceeds our threshold. Contact support to reinstate."
}

Requesting reinstatement

Reinstatement is a manual process - it is never automatic. This is intentional: an account that breached thresholds and is immediately reinstated will often breach them again within hours.

To request reinstatement, email support@sendfleet.net with:

What to includeWhy it matters
Your account emailSo we can locate your account and suspension event.
Root cause analysisWhat caused the high bounce/complaint rate? Stale list? Misconfigured suppression? Purchased addresses?
Corrective action takenWhat have you changed to prevent recurrence? List cleaning, double opt-in, unsubscribe handling, etc.
Expected future volumeHelps us assess risk and set appropriate expectations.

We aim to respond to reinstatement requests within 2 business days. Accounts that have been suspended multiple times, or that cannot demonstrate corrective action, may not be reinstated on Shared SES and will instead be directed to the BYOC path.

Preventing bounce & complaint issues

PracticeImpact
Use double opt-in for all marketing or newsletter sendsEliminates typos and invalid addresses at source. Dramatically lowers bounces.
Never send to purchased or scraped listsPurchased lists are full of invalid addresses and spam traps. Instant reputation damage.
Honour unsubscribes within 10 business days (legally required in many jurisdictions)Unsubscribers who keep receiving mail become complainers.
Implement list hygiene - remove hard bounces immediatelyOur suppression list handles this for SendFleet sends, but your own CRM should mirror it.
Monitor your dashboard's bounce and complaint events via webhooksCatch rising rates before they hit the threshold.
Send only transactional email through SendFleetBulk marketing email has higher complaint rates. SendFleet is designed for transactional sends only.

Manual suspension by admin

In addition to automatic suspension, SendFleet support can manually suspend accounts for policy violations including spam, abuse, or Terms of Service breaches. Manual suspensions behave identically to automatic ones from your application's perspective - the same sending_suspended error code is returned.

All suspension and reinstatement events are recorded in an append-only audit log with the trigger reason, bounce/complaint rates at the time, and whether the action was automatic or manual. This log cannot be modified or deleted.