Skip to main content
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.

Bounce Types

Hard Bounces

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:
Hard-bounced addresses are automatically suppressed and should be removed from your mailing lists. Continuing to send to these addresses damages your sender reputation.

Soft Bounces

Soft bounces are temporary delivery failures. The email might be deliverable if retried later. Common causes:
  • Mailbox is full
  • Server is temporarily unavailable
  • Message is too large
  • Rate limiting by the recipient server
Soft bounces use bounce classes in the 20–70 ranges:
Lettr automatically retries soft bounces with exponential backoff. If delivery continues to fail, the address may eventually be suppressed.

Automatic Handling

Lettr automatically handles bounces for you:
1

Tracks Bounces

All bounces are logged and tracked in your dashboard with full details.
2

Suppresses Hard Bounces

Hard-bounced addresses are automatically added to your suppression list.
3

Retries Soft Bounces

Soft bounces are automatically retried with exponential backoff.
4

Sends Webhooks

Bounce events are sent to your configured webhook endpoints in real-time.

Bounce Classes

Lettr uses numeric bounce classes to categorize bounces. These correspond to the bounce_class field in webhook events:
Hard bounce classes (10, 30, 100) result in automatic suppression. Soft bounce classes may lead to suppression if delivery continues to fail after retries.

Handling Bounces

Webhook Integration

The most reliable way to handle bounces is through webhooks. Set up a webhook endpoint to receive message.bounce events:

Querying Email Events

You can retrieve events for specific emails using the API:
The response includes all events for that email, including bounces:

Bounce Rate Guidelines

Monitor your bounce rates to maintain good deliverability:
ISPs closely monitor bounce rates. A bounce rate consistently above 5% can result in your emails being blocked or filtered to spam.

Preventing Bounces

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.
Use email validation at the point of collection. Check for common typos, invalid formats, and disposable email addresses.
Remove subscribers who haven’t engaged in 6-12 months. Inactive addresses are more likely to bounce over time.
Set up webhook handlers to process bounce events in real-time. Don’t wait for batch processing.
Track open and click rates. Low engagement often precedes bounces as users abandon email addresses.

Delayed Delivery

Sometimes emails are temporarily delayed rather than bounced. These are tracked as message.delay events:
Delayed emails are automatically retried. You don’t need to take action unless delays persist, which may indicate a delivery issue.

Out-of-Band Bounces

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:
Handle OOB bounces the same way as regular bounces — update your records and suppress hard bounces.

Webhook Events

Complete reference for all webhook event types

Handling Webhooks

Best practices for webhook implementation

Sending Best Practices

Tips for improving deliverability

Analytics

Monitor your email performance