Understanding bounce types, categories, and how to handle them
Bounces occur when an email cannot be delivered to the recipient. Understanding different bounce types and handling them correctly is essential for maintaining good deliverability.
Hard bounces are permanent delivery failures. The recipient’s mail server has definitively rejected the email, and retrying will not succeed.Common causes:
Email address doesn’t exist
Domain doesn’t exist
Recipient has blocked the sender
Mailbox has been deactivated
When a hard bounce occurs, you receive a message.bounce webhook event. Hard bounces use bounce classes in the 10–30 and 100 ranges:
Copy
[{ "msys": { "message_event": { "type": "bounce", "timestamp": "1705312205", "transmission_id": "12345678", "message_id": "abcd-1234-efgh", "rcpt_to": "invalid@nonexistent.com", "bounce_class": "10", "error_code": "550", "reason": "User Unknown", "raw_reason": "550 5.1.1 The email account that you tried to reach does not exist", "friendly_from": "you@example.com", "subject": "Your Order Confirmation", "sending_ip": "192.168.1.1" } }}]
Hard-bounced addresses are automatically suppressed and should be removed from your mailing lists. Continuing to send to these addresses damages your sender reputation.
Lettr uses numeric bounce classes to categorize bounces. These correspond to the bounce_class field in webhook events:
Bounce Class
Category
Type
Description
Recommended Action
1
Undetermined
Varies
Bounce could not be classified
Review manually
10
Invalid Recipient
Hard
Email address does not exist
Remove from list
20
Soft Bounce
Soft
General temporary failure
Automatic retry
21
DNS Failure
Soft
Domain DNS lookup failed temporarily
Automatic retry
22
Mailbox Full
Soft
Recipient’s mailbox is over quota
Wait and retry
25
Admin Failure
Soft
Mailbox admin-related issue
Review and retry
30
Generic Bounce (no RCPT)
Hard
Rejected without valid recipient
Remove from list
40
Generic Bounce
Soft
Temporary generic failure
Automatic retry
50
Mail Block (General)
Soft
Blocked by receiving server
Investigate
51
Mail Block (Spam Related)
Soft
Blocked as spam by receiving server
Review content
52
Mail Block (Content)
Soft
Blocked due to content filtering
Review content
60
Auto-Reply
N/A
Automatic reply (vacation, etc.)
No action needed
70
Transient Failure
Soft
Temporary infrastructure issue
Automatic retry
100
Relay Denied
Hard
Relay not permitted
Remove from list
Hard bounce classes (10, 30, 100) result in automatic suppression. Soft bounce classes may lead to suppression if delivery continues to fail after retries.
Require subscribers to confirm their email address before adding them to your list. This ensures addresses are valid and owned by the person who signed up.
Validate on Collection
Use email validation at the point of collection. Check for common typos, invalid formats, and disposable email addresses.
Clean Lists Regularly
Remove subscribers who haven’t engaged in 6-12 months. Inactive addresses are more likely to bounce over time.
Process Bounces Immediately
Set up webhook handlers to process bounce events in real-time. Don’t wait for batch processing.
Monitor Engagement
Track open and click rates. Low engagement often precedes bounces as users abandon email addresses.
Some bounces arrive asynchronously after the initial delivery attempt appears successful. These are called out-of-band (OOB) bounces and are tracked as message.out_of_band events: