Manage bounces, complaints, and unsubscribes to protect your sender reputation
Suppressions prevent emails from being sent to addresses that have bounced, complained, or requested removal. Managing suppressions properly is critical for maintaining good deliverability.
Ark automatically adds email addresses to your suppression list to protect your sender reputation:
Event
Action
Reason in API
Hard bounce
Immediately suppressed on first occurrence
hard fail
Soft bounce exhausted
Suppressed after 18 failed retry attempts (~48 hours)
too many soft fails
Spam complaint
Immediately suppressed
complaint
Unsubscribe click
Immediately suppressed
unsubscribe
Hard bounces trigger immediate suppression. Unlike some email providers that wait for multiple failures, Ark adds recipients to the suppression list on the very first hard bounce. This aggressive approach protects your sender reputation by preventing repeated delivery attempts to invalid addresses.
Bounces indicate that an email could not be delivered. Understanding the difference between bounce types is crucial for managing your email program effectively.
A hard bounce is a permanent delivery failure. The email will never be deliverable to this address.Common causes:
Email address doesn’t exist (user unknown, mailbox not found)
Domain doesn’t exist or has no mail servers
Recipient server permanently rejected the message
Email address was disabled or deleted
Ark’s behavior: Immediately adds the recipient to the suppression list on the first hard bounce. No retries are attempted.SMTP codes: Typically 5xx errors (500-599)
Copy
{ "status": "HardFail", "details": "550 5.1.1 The email account that you tried to reach does not exist", "suppression_added": true, "suppression_reason": "hard fail"}
Permanent delivery failure at send time (SMTP 5xx)
Yes - reason hard fail
Bounced
NDR received after initial acceptance
No - handle via webhook
SoftFail
Temporary failure (SMTP 4xx), will retry
No - retries up to 18 times
Important distinction: Only HardFail status triggers automatic suppression. The Bounced status (from NDR messages) does NOT automatically add to the suppression list. You should handle the MessageBounced webhook and manually suppress via the API if desired.
Suppressions automatically expire after 30 days by default. This allows addresses to become deliverable again if the underlying issue was resolved (e.g., the user recreated their account).You can specify a custom retention period when adding suppressions manually:
Python
cURL
Copy
# Suppress for 90 daysclient.suppressions.create( email="[email protected]", reason="hard_bounce", days=90)# Suppress for 365 daysclient.suppressions.create( email="[email protected]", reason="complaint", days=365)
Especially for older email lists, check each address before sending. This prevents wasted API calls and maintains clean metrics.
Never remove hard bounced emails
Hard bounces are permanent failures. Removing them from the suppression list will just cause another bounce, harming your reputation. Only remove if you’ve verified the address is now valid.
Act on complaints immediately
If someone marks your email as spam, they don’t want to hear from you. Keep them suppressed and update your application’s user preferences.
Sync with your database
Use webhooks to keep your user database updated. Mark email addresses as invalid when they bounce so you don’t need to query suppressions on every send.
Clean your list proactively
Don’t wait for bounces. Periodically remove subscribers who haven’t engaged in 6+ months, and use double opt-in to verify new addresses.
Monitor your bounce rate
Keep your bounce rate below 2%. Higher rates indicate list quality issues and will harm deliverability.