When a user subscribes to or unsubscribes from a message channel, an individual message type, or a list, Iterable sets the following fields in the user profile to a value that identifies the action that triggered the event:
When an
emailSubscribe
event is triggered, Iterable adds asignupSource
field.When an
emailUnSubscribe
,hostedUnsubscribeClick
, oremailComplaint
event is triggered, Iterable adds anunsubSource
field.
NOTE
emailSubscribe
and emailUnSubscribe
are used universally for all message
channels.
In this article
Viewing unsubscribe and subscribe events
View information about a user's subscribe or unsubscribe events using one of the following methods:
-
For subscribes, set the
dataTypeName
field toemailSubscribe
and review thesignupSource
field in the exported data.For unsubscribes, set the
dataTypeName
field toemailUnSubscribe
and review theunsubSource
field in the exported data.
-
System webhooks Email Subscribe or Email Unsubscribe
A system webhook sends data from Iterable to third-party system when particular campaign-related events are created. To learn how to set up an Email Subscribe or Email Unsubscribe system webhook, read System Webhooks.
For the source of an subscribe or unsubscribe event, look at the
signupSource
orunsubSource
fields in the system webhook data that's captured by the third-party system. -
The user profile page in Iterable
To view a user's profile, navigate to Audience > Contact Lookup and enter their email address or their user ID (the search box reflects the necessary field).
On the Event History tab, find the unsubscribe or subscribe event and look for the
unsubSource
orsignupSource
field.
Types of unsubscribe events
The unsubSource
field provides one of the following reasons a user was
unsubscribed.
API
An API call was made to one of these endpoints:
DELETE /api/subscriptions/{subscriptionGroup}/{subscriptionGroupId}/byUserId/{userId}
PUT /api/subscriptions/{subscriptionGroup}/{subscriptionGroupId}
Complaint
The user marked an email they received as spam, so Iterable automatically unsubscribed them from all email channels.
IMPORTANT
Some providers limit their spam complaint reports to aggregated, anonymous data to protect user privacy. Iterable can't associate an anonymous spam complaint to a particular user. For users of these mailbox providers, their user histories can't reflect spam complaint events, and they aren't auto-unsubscribed.
This limitation is true for Gmail users, for example. To learn more, read Are Gmail Users Who Make Spam Complaints Automatically Unsubscribed?
EmailLink
The user clicked an unsubscribe link in the email template: {{unsubscribeUrl}}
,
{{unsubscribeMessageTypeUrl}}
, or
{{hostedUnsubscribeUrl}}
.
ESP
The email service provider (ESP) has placed the user on a suppression list.
HardBounce
An email was sent to the user, and it was returned as a hard bounce. Iterable unsubscribes users who hard bounce. To learn more, read Email Bounces.
Import
On the Audience > Segmentation page, an Iterable member selected the user and then clicked Other Actions > Remove Contacts from List.
On the Audience > List page, the user was included in a list of users provided after clicking the Remove Subscribers link.
On the Audience > List page, the user was included in a list of users provided after clicking Channel Unsubscribe Users.
ISP
Iterable received an unsubscribe email from the ISP, triggered because the user
clicked the unsubscribe link near the top of the email (perhaps in a mailto
header).
ListAPI
An API call was made to POST /api/lists/unsubscribe
.
SMS
The user replied to an SMS message with one of the following keywords:
STOP
CANCEL
STOPALL
UNSUBSCRIBE
QUIT
END
UpdateSubscriptionsAPI
An API call was made to one of these endpoints:
WebApp
The unsubscribe was triggered manually on the user profile page in Iterable.
Workflow
The user was unsubscribed because of an unsubscribe tile in a journey.
Attributing unsubscribe events to a campaign
The following unsubscribe event types can be used to attribute an unsubscribe to a particular campaign:
API
(if the API passes the optionalcampaignId
field)Complaint
EmailLink
ESP
ISP
ListAPI
(if the API passes the optionalcampaignId
field)SMS
(if a SMS campaign is sent and the system receives an opt-out keyword response, such as STOP or NO, within three hours of the send—read more)UpdateSubscriptionsAPI
(if the API passes the optionalcampaignId
field)
TIP
To find the campaignId
associated with a certain unsubscribe event, you can
create a user list in segmentation that filters for unsubscribes, or you can use the
GET /api/events/{email}
API endpoint to locate the campaignId
field for the type of unsubscribe event
you're interested in for a specific user.
Types of subscribe events
The signupSource
event field provides one of the following reasons a user was
subscribed.
API
An API call was made to one of these endpoints:
PATCH /api/subscriptions/{subscriptionGroup}/{subscriptionGroupId}/user/{userEmail}
PATCH /api/subscriptions/{subscriptionGroup}/{subscriptionGroupId}/byUserId/{userId}
}PUT /api/subscriptions/{subscriptionGroup}/{subscriptionGroupId}
CartAPI
An API call was made to POST /api/commerce/updateCart
.
DeviceAPI
An API call was made to POST /api/users/registerDeviceToken
call from one of Iterable's mobile SDKs.
DoubleOptInAPI
A user has confirmed their subscription to a SMS Double Opt-In message type.
Before this happens, an API call is made to POST /api/subscriptions/subscribeToDoubleOptIn
.
This triggers the SMS Double Opt-In subscription flow. The subscribe event is
recorded when the user confirms their subscription by replying "Y" via SMS.
To learn more about SMS Double Opt-In, read SMS Double Opt-In Overview.
Import
On the Audience > List page, the user was included in a list of users provided after clicking the Add Subscribers / Modify List link.
On the Audience > List page, the user was included in a list of users provided after clicking Channel Subscribe Users.
A new static list was saved (perhaps by saving a dynamic list as a new static list or creating static list from another static list).
ListAPI
An API call was made to POST /api/lists/subscribe
.
PurchaseAPI
An API call was made to POST /api/commerce/trackPurchase
.
ResubscribePage
The user subscribed to a message type or channel using the Resubscribe button on an unsubscribe success page.
SendMessageAPI
An API call was made to POST /api/email/target
(the user was
sent a triggered campaign).
UpdateSubscriptionsAPI
An API call was made to one of these endpoints:
WebApp
A user was added manually on the user profile page in Iterable.
In a userID-based project, a user was created when you sent a proof of template.
WebForm
The user subscribed through an HTML signup form like the example shown in Building a Signup Form for Static Lists.
Workflow
The user was added to a journey by an API call to POST /api/workflows/triggerWorkflow
.
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!