Campaign States and Errors
Campaign Statuses
The current status of your campaign can be any of the following:
Status | Description | Campaign Types |
---|---|---|
Draft | Status of campaigns that are yet to be activated | All Campaign Types |
Active | Status of campaigns that are waiting to be triggered based on schedule, file drop, API request, event, behavior, or experience | One-Time scheduled later, Recurring Time-Based, Recurring File-based, API Broadcast, Triggered Campaigns |
Computing | Status of campaigns when the audience is being computed or when a file is being processed to trigger the campaign | All Campaign Types |
Sampling | Status of campaign when A/B Test versions are still being sent or the winner of the A/B Test is awaiting to be sent. | All Broadcast Campaign Types |
Sending | Status when campaign is currently sending When a campaign is stuck in Sending status, check on the audiences included in the campaign. One or more segments or lists might not have any users in them. | All Broadcast Campaign Types |
Sent | Status when all possible messages have been sent for a campaign | All Broadcast Campaign Types |
Inactive | Status when active campaign had been deactivated | One-Time scheduled later, Recurring Time-Based, Recurring File-based, API Broadcast, Triggered Campaigns |
Archived | Status when campaign had been archived | All Campaign Types |
Paused | Status of the campaign when the sending has been paused. This applies to a |
Approval and Paused status will also be shown when these features are enabled. For more details, see Campaign Approval Management and Campaign Pause & Resume Feature.
Recipient Statuses
At the time of campaign computation, every member of the applicable audience is stored as a campaign recipient entity. A campaign recipient transitions through the following statuses:
Status | Description |
---|---|
pending | A recipient starts in this state when the audience is computed. |
out_of_sample | A certain proportion of "pending" recipients goes to this state in case of A/B/n tests. These recipients are excluded from the test and receive the winning version after the test is concluded. |
control_group | If a certain segment of the audience is used as a control group, this status is used. These recipients do not receive the campaign. |
sto_pending | When sending at prime time, this status determines that the optimum time is yet to be computed for the recipient. |
prepared | All external data (feed, recommendations, file variables) are captured beforehand and recipient transitions to this state after the data fetch is complete. In other words, it indicates the readiness of data for a particular recipient. |
scheduled | At the campaign scheduled time, all "prepared" recipients are sent to a message generation queue, after checking for frequency settings and unsubscribed/not_opted_in contacts, and marked as "scheduled" For scheduled broadcast campaigns, the ZMP begins pre-processing roughly 30 to 90 minutes prior to the launch time. |
generated | Recipient transitions into this state after the message is successfully generated. |
queued | Recipient transitions into this state after the message is successfully transmitted to the message provider (Momentum, Sendgrid, Twilio). |
unsubscribed | During the scheduling phase, recipients with no subscribed contacts transition into this state. |
not_opted_in | During the scheduling phase, recipients without any "opted_in" contacts transition into this state. Applicable only for accounts that have "double opt-in" enabled. |
error | Any recipients with bad/missing data or system errors transition into this state. |
skipped | Any recipients that are intentionally suppressed as part of the campaign transition into this state. |
overlap | When de-duping is switched on for a campaign, any communication to duplicate contact address marks the associated recipient as "overlap"; For multi-version campaigns, any recipient overlapping with the audience in the preceding versions are also marked as "overlap" |
Errors, Skips, Unsubs
Additionally, the errors, skipped, and unsubscribed statuses provide detailed information as explained below:
Status | Reason | Description |
---|---|---|
error | external_content_fetch | The system fails to fetch data from an external content feed. This usually indicates an error with the feed. |
error | recommendation_fetch | The system fails to fetch recommendations for the recipient. This usually indicates strict meta-filters or not enough recommendable content. |
error | invalid_email_address | The email address format is incorrect. |
error | email_subject_missing | The email subject is missing. Normally happens when the subject uses a template variable and turns out to be empty after substitution. |
error | communication_dispatch | Happens when an error occurs while transmitting the message to the message providers after the configured amount of retries (currently set to 5). |
error | communication_generation | Happens when a system error occurs while generating the message. |
error | aws_throttling | Happens when Amazon SES throttles email transmission. Applicable only for customers using SES. |
error | coupon_allocation | Not enough coupons available for the recipient to be used in the template. |
error | standard | Default error category when none of the known errors are captured. |
error | bad_data | Default error category for missing data. |
error | resource_fetch | The system encounters an error while fetching a resource from the resources API. |
error | liquid_internal | The system encounters an error due to a bad liquid tags. |
error | socket_error | The socket error may come due to any temporary error in the external service used in the campaign content and can be resolved in the retry process being added in the pipeline while trying to fetch the data from the external service. |
skipped | throttled | Used when system throttling happens due to high bounce rate. |
skipped | custom_skip | Message skipped due to user-defined conditions. Used when a "custom_skip" liquid tag satisfies the skip condition specified as part of the template. |
skipped | frequency_settings | The message is skipped due to frequency settings set up at account or segment level. |
unsubscribed | missing_contact_address | The recipient has no contact applicable to the channel. |
unsubscribed | unsubscribed | The recipient has one or more contacts applicable to the channel, but none of them are active; also taking into account opt_in/transactional campaign settings. |
unsubscribed | cascade | When a contact email is unsubscribed by the system, all contacts with same email from other users will be deactivated and an unsubscribed event would be fired on those users. |
Communication Events
Event | Communication state | Description |
---|---|---|
N/A | new | This is the starting state of communication when it is created. |
queued | queued | Communication has been successfully transmitted to the message provider. |
delivered | delivered | Communication has been successfully delivered to the end-user. |
opened | opened | Communication has been at least opened once by the end-user. |
clicked | clicked | Communication has been at least clicked once by the end-user. Any click on "view in browser" URL or "unsubscribe" URL is ignored. |
throttled | throttled | Communication is not sent to the message provider due to throttling having kicked in because of a high bounce rate. |
error | error | The system encountered any error while transmitting the message to the message providers. In the case of both "throttled" and "error", a "Message Skipped" user activity is raised which also shows up on the UI in the user journey. If the event has been passed with an old time stamp, we don’t send the campaign and message is skipped with the reason as 'old_activity'. |
N/A | duplicate | When de-duping is switched on for a campaign, any communication to duplicate contact address goes into this state. |
unsubscribed | No change from previous. | When the end-user unsubscribes from the mailing list. A "system:: unsubscribed" user activity is also raised for this state additionally providing the reason for action. Possible values are:
|
bounced | No change from previous. | The email failed to be delivered to the user and bounced. There are 4 different bounce types - hard, soft, blocked, other. A hard bounce immediately deactivates the associated contact. For other bounce types, the system waits for 7th consecutive non-hard bounce to deactivate the associated contact. |
complained | No change from previous. | The system receives a spam/abuse complaint. This also deactivates the associated contact immediately. User activity is also raised with additional reason, values being "IMH_FBL_UNSUBSCRIBE", "EC2_ABUSE" |
Bounce Events
Bounce type | Reason | Description |
---|---|---|
hard | unknown_recipient | Recipient is unknown. |
hard | server_error | The remote system was busy or was unable to take a call. |
hard | mailbox_does_not_exists | Mailbox does not exist on this recipient server. |
hard | message_is_big | The message was too big. |
hard | mailbox_malformed | Mailbox name is either malformed or does not exist. |
hard | unsubscribe | The message is an unsubscribe request. |
hard | challenge_response | The message is a challenge-response probe. |
soft | temporarily_deferred | Temporarily Deferred. |
soft | mailbox_locked | Mailbox locked. |
soft | insufficient_storage | The message has been deferred due to insufficient system storage. |
soft | dns_failure | The message bounced due to a DNS failure. |
soft | time_out | The message timed out. |
soft | auto_reply | The message is an auto-reply/vacation mail. |
soft | transient_failure | Message transmission has been temporarily delayed. |
soft | mailbox_full | The recipient's mailbox is full. |
blocked | mail_block | The message was blocked by the receiver. |
blocked | spam_block | The message was blocked by the receiver as coming from a known spam source. |
blocked | spam_content | The message was blocked by the receiver as spam. |
blocked | prohibited_attachement | The message was blocked by the receiver because it contained an attachment. |
blocked | relaying_denied | The message was blocked by the receiver because relaying is not allowed. |
other | subscribe | The message is a subscribe request. |
other | generic_delivery_failure | Planetary alignment, tides of the moon, or just plain bad luck. |
other | admin_failure | The message was failed by SparkPost configured policies. |
other | others | Others |