Iterable logs a bounce event when a receiving server sends an automated response that an email message wasn’t delivered.
This article describes the properties of an email bounce event in Iterable. To learn more about email bounces and how Iterable processes them, see Email Bounces.
Here is an example emailBounce
event:
{ "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", "campaign": { "campaignAlertsEnabled": false, "campaignState": "Running", "createdAt": 1718758126808, "createdByUserId": "user@example.com", "dataScienceOptimizations": [], "id": 12345678, "ignoreFrequencyCap": false, "isArchived": false, "isDryRun": false, "isHidden": false, "labelIds": [], "messageMedium": "Email", "mobileAppIds": [], "name": "Some Campaign Name", "projectId": 00000, "quietHoursSendSkip": false, "teamId": 00000, "templateId": 12345678, "updatedAt": 1718758236048, "updatedByUserId": "user@example.com", "useCustomRateLimit": false, "wasEverRecurring": false }, "campaignId": 10202758, "createdAt": "2024-07-16T21:28:21.000Z", "email": "some-bounced-email@example.com", "eventType": "emailBounce", "itblInternal": { "documentCreatedAt": "2024-07-16 21:28:21 +00:00", "documentUpdatedAt": "2024-07-16 21:28:21 +00:00" }, "messageId": "3698fb1456486446fda1f4a620eda70ff2", "recipientState": "HardBounce", "status": "5.1.1", "templateId": 12345678 }
The following properties are included in an email bounce event. (Additional properties may be included depending on your project's configuration.)
- bounceMessage
- campaign
- campaignId
- createdAt
- eventType
- itblInternal
- messageId
-
recipientState
- DNSFailure
- HardBounce
- MailBlockAttachmentDetected
- MailBlockGeneral
- MailBlockKnownSpammer
- MailBlockRelayDenied
- MailBlockSpamDetected
- SoftBounceAttachmentRejected
- SoftBounceAutoReply
- SoftBounceContentRejected
- SoftBounceDnsFailure
- SoftBounceGeneral
- SoftBounceMailboxFull
- SoftBounceMessageTooLarge
- SoftBounceSpamDetected
- SoftBounceTimeout
- SoftBounceUndetermined
- Suppressed
- UnhandledState
- status
- templateId
bounceMessage
The full message returned by the receiving server that explains why the email bounced. This is the raw bounce message that contains the most detailed information about the bounce reason. It may contain status codes such as those defined by RFC 3463, messages specific to your ESP, and/or messages from the receiving server.
Iterable interprets this message and categorizes the event using the
recipientState
property.
For more information about bounce messages coming from your ESP, see:
- Bounce types in Amazon SES
- Bounce classification codes in Sparkpost
- Bounce codes in Mailgun
- RFC 3463
campaign
A JSON object that contains information about the campaign that triggered the email bounce event.
This object includes the following properties for an email bounce event:
-
campaignAlertsEnabled
- Whether alerts are enabled for the campaign. -
campaignState
- The state of the campaign. Possible values for email are:Draft
Ready
Scheduled
Running
Aborted
Finished
-
createdAt
- The date and time the campaign was created. -
createdByUserId
- The ID of the user who created the campaign. -
dataScienceOptimizations
- Data science optimizations applied to the campaign. -
id
- The ID of the campaign. -
ignoreFrequencyCap
- Whether the campaign ignores frequency caps. -
isArchived
- Whether the campaign is archived. -
isDryRun
- Whether the campaign is a dry run. -
isHidden
- Whether the campaign is hidden. -
labelIds
- The IDs of the labels associated with the campaign. -
messageMedium
- The medium used to send the campaign. For email bounce events, this value is alwaysEmail
. -
mobileAppIds
- The IDs of the mobile apps associated with the campaign. -
name
- The name of the campaign. -
projectId
- The ID of the project that contains the campaign. -
quietHoursSendSkip
- Whether the campaign skips sending during quiet hours. -
teamId
- The ID of the team that owns the campaign. -
templateId
- The ID of the template used in the campaign. -
updatedAt
- The date and time the campaign was last updated. -
updatedByUserId
- The ID of the user who last updated the campaign. -
useCustomRateLimit
- Whether the campaign uses a custom rate limit. -
wasEverRecurring
- Whether the campaign was ever recurring.
Additional properties may be included depending on your project's configuration and how the originating message was sent.
campaignId
The ID of the campaign that triggered the email bounce event.
createdAt
The date and time the email bounce event was created.
email
The email address that bounced.
eventType
The type of event. For email bounce events, this is always emailBounce
.
itblInternal
Internal Iterable properties.
messageId
The ID of the email message that bounced.
recipientState
A categorical reason that the message bounced. Iterable interprets the
bounce event based on the raw bounceMessage
returned by the
receiving server and assigns a category for simplified deliverability analysis.
Possible values are:
DNSFailure
The message bounced due to a DNS failure.
HardBounce
The mailbox provider rejected the email with the message “This user doesn’t exist” (or similar).
Iterable automatically unsubscribes users who hard bounce since these addresses are invalid. To learn more, read Email Bounces.
MailBlockAttachmentDetected
Message blocked because it contained an attachment.
MailBlockGeneral
These are treated as a soft bounce because Iterable can't determine the exact reason for delivery failure. It could be a non-standard error message, or too vague to be useful.
MailBlockKnownSpammer
The recipient server has blocked messages as it believes you have been sending spam.
MailBlockRelayDenied
Message blocked because relaying isn't allowed
MailBlockSpamDetected
The mailbox provider has detected content from your email that resembles spam. The trigger can be related to your content, or the poor reputation of your IP address or sending domain.
SoftBounceAttachmentRejected
Message rejected due to attachment.
SoftBounceAutoReply
Recipient has an auto responder, or is out of office.
SoftBounceContentRejected
The recipient's email server has blocked your email on the basis that the content resembles spam. This mail block is often triggered by something detected in your email content.
SoftBounceDnsFailure
Message undelivered due to a DNS problem.
SoftBounceGeneral
Iterable can't determine the exact reason for delivery failure. It could be a non-standard error message, or too vague to be useful.
SoftBounceMailboxFull
The email server cannot deliver your message because the recipient's inbox is full.
SoftBounceMessageTooLarge
Message file size was too large. Each inbox provider has its own thresholds.
SoftBounceSpamDetected
The inbox provider has detected content from your email that resembles spam. The trigger can be related to your content, or the poor reputation of your IP address or sending domain.
SoftBounceTimeout
The connection timed out while trying to deliver the message.
SoftBounceUndetermined
These are treated as a soft bounce because Iterable can't determine the exact reason for delivery failure. It could be a non-standard error message, or too vague to be useful.
Suppressed
The user's email is on the ESP’s suppression list (not Iterable's). This happens when a user unsubscribes or reports spam but for some reason they are not unsubscribed in Iterable. Iterable attempted to send the message, but the ESP you're sending from suppressed the message from sending.
UnhandledState
Iterable couldn’t identify the inbox provider’s bounce reason.
status
The status code returned by the receiving server.
templateId
The ID of the template used in the campaign that triggered the email bounce event.