Iterable logs a bounce event when a receiving server sends an automated response that an email message wasn’t delivered. Emails bounce for a number of reasons, and identifying the cause of a bounce is the first step in troubleshooting delivery and deliverability issues.
This article describes email bounces and how Iterable processes them.
To learn more about the properties of an email bounce event in Iterable, see Email Bounce Event Properties.
To learn about how bounces impact deliverability, and what you can do to improve it, see Troubleshooting Email Deliverability.
In this article
How Iterable handles email bounces
When Iterable sends an email message to a user, the receiving server responds with a bounce message if the email can't be delivered.
When Iterable receives an email bounce response, the following happens:
Iterable logs this response as an event with the
eventType
ofemailBounce
. (For an example of anemailBounce
event, see Email Bounce Event Properties.)Iterable interprets the raw bounce message and assigns a category to the bounce using the
recipientState
event property. (For more information on how Iterable categorizes email bounces, see How Iterable categorizes email bounces.)If the bounce is a hard bounce, Iterable automatically unsubscribes the user from the message channel associated with the campaign and all other marketing email channels in your project.
How Iterable categorizes email bounces
Each inbox provider responds with their own unique reasons for a bounce. You
can find the verbose delivery message in the bounceMessage
event property.
Iterable interprets this raw bounce message and assigns a category to the
bounce using the recipientState
event property. This category indicates the
type of bounce event and determines how Iterable handles it: hard bounce or
soft bounce.
-
Hard bounces are permanent failures and indicate that the email address is invalid to receive messages. This could happen if the email address was mistyped, for example. All hard bounce events are classified as
hardBounce
in therecipientState
event property.Iterable automatically unsubscribes users who hard bounce. To learn more, read How Iterable unsubscribes a user after a hard bounce, below.
-
Soft bounces occur when the email couldn’t be delivered for a temporary reason. For example, a message may soft bounce if the recipient’s inbox is full or if the message is too large. Any reason code besides
hardBounce
is treated as a soft bounce.Iterable doesn't automatically unsubscribe users who soft bounce. To learn more, read Unsubscribing users who soft bounce too many times, below.
For example, a bounce event might have a bounceMessage
that reads:
{ "bounceMessage": "smtp; 550-5.1.1 The email account that you tried to reach does not exist. Please try 550-5.1.1 double-checking the recipient's email address for typos or 550-5.1.1 unnecessary spaces. For more information, go to 550 5.1.1 https://support.google.com/mail/?p=NoSuchUser - gsmtp", }
Iterable categorizes this bounce event as a hardBounce
in the
recipientState
property for the emailBounce
event. The user associated with
this email address is automatically unsubscribed.
To see all possible values for recipientState
, see Email Bounce Event Properties.
How Iterable unsubscribes a user after a hard bounce
In response to a hard bounce, Iterable automatically unsubscribes the user from:
The message channel associated with the campaign (regardless of whether it's a marketing or transactional channel)
All the other marketing message channels for email in your Iterable project.
For example, consider the following message channel and type setup:
Message Channel ID | Channel Type | Channel Medium |
---|---|---|
1 | Marketing | |
2 | Marketing | |
3 | Marketing | Push notification |
4 | Transactional |
For a hard bounce that results from a campaign sent on message channel #1:
Iterable unsubscribes the user from channel #1 (the sending channel) and also from channel #2 (the project's other marketing email channel).
The user stays subscribed to channel #3 (a push notification channel) and channel #4 (a transactional channel not used for the send).
For a hard bounce that results from a campaign sent on message channel #4:
Iterable unsubscribes the user from channel #4 (the sending channel), and also from channel #1 and channel #2 (the project's other marketing email channels).
The user stays subscribed to channel #3 (a push notification channel).
Viewing email bounce events
Here are a few ways to review email bounce events with varying levels of detail.
Viewing email bounce events for a campaign
To see bounces by category for a campaign:
Go to Messaging > Campaigns in Iterable and find your campaign.
Click on View Analytics to open the campaign analytics page.
Click on the Delivery tab.
Find the Bounces tile and expand the reasons section. (If there are no bounces, the tile reflects a 0% bounce rate and bounce reasons are unavailable.)
Exporting bounce reports
Use the same Campaign Analytics view as in the section above to export detailed bounce reports:
Adjust the date range to the desired time frame for the report.
Click Export Events.
-
In the Export Events menu that opens, click into the Select Event drop-down and choose the bounce event you’d like to export. Click Export.
This downloads a CSV file that lists all bounced emails and their bounce types.
Iterable generates a CSV file that contains a header row of event properties and a row for each email address that bounced.
Some important columns to note:
-
recipientState
- the category of bounce event. -
bounceMessage
- the raw bounce message from when the message failed delivery. -
email
- the email address that bounced. -
userId
- the user ID associated with the email address.
Viewing email bounce events for a user
To view the bounce events associated with a particular user:
Go to Audience > Contact Lookup and search for the user.
Go to Events > History to view the Events History page.
Use filters or search to locate email bounce events.
Exporting email bounce events with Iterable APIs
To export email bounce events for a project, use Iterable's export APIs
and for dataTypeName
, specify emailBounce
.
Segmenting bounced users
Iterable's segmentation tool makes it possible to segment for users who have email bounces of various types.
For example, maybe you want to identify users who've recently received bounce notifications so you can clean up your data. Or, maybe you want a list of recently soft-bounced users so you can send them a campaign that they may have missed.
You can segment users based on the recipientState
event property. This
property contains the category of the bounce event.
To create a segment of users who have bounced:
Go to Audience > Segmentation in Iterable.
Where you can Choose a Property, select Email Bounce from the dropdown.
-
Enter additional filter criteria using either the dropdowns or text fields.
To filter for users who have bounced for a particular reason, you can use the
recipientState
property. (To see all possible values forrecipientState
, see Email Bounce Event Properties.)You can even select users based on the particular bounce message received by using the
bounceMessage
property. Once you have entered your criteria, click Refresh Results to see the users who match your segment.
You can save these users as a list, or export a CSV report using the options on the right side of the page.
Unsubscribing users who soft bounce too many times
Iterable automatically unsubscribes users who hard bounce since these addresses are invalid. To learn how Iterable handles hard bounces, read How Iterable Unsubscribes a User After a Hard Bounce.
Iterable does not unsubscribe users after a soft bounce. As a best practice, you may wish to take action and unsubscribe users who soft bounce too many times. This helps maintain a clean list of active users and good deliverability rates.
You can manually perform this task, or create a journey that automates it.
To learn how to unsubscribe users who soft bounce too many times, read Unsubscribing Bounced Users.
Want to learn more?
For more information about some of the topics in this article, check out this Iterable Academy course. Iterable Academy is open to everyone — you don't need to be an Iterable customer!