This page contains information about your email campaign-related data views. For more information on Open Data - Data views, see Data views overview.
Please note that there can be multiple reasons for not seeing contact_ids, for example, in the email_sends_[customer_ID]
, email_opens_[customer_ID]
views:
- Test emails are stored with empty
contact_id
field:- Test campaigns are visible in the campaign_v2 table and in the Opens table (without contact_id).
- Test campaigns are not visible in the Sends table.
- We keep send data only for 60 days, for this reason, campaigns launched (NOT opened) more than 60 days ago may contain some empty fields in the Big Query email-related tables.
- Deleted contacts which were deleted less than 30 days ago as not all the behaviour data may be deleted yet in such cases.
Email campaigns
View name: email_campaigns_[customer_ID]
(where customer_ID
is your Emarsys account ID)
This data view contains all your email campaigns. By running a query, you can get information about all the campaigns that were created or modified in your account.
A campaign may have multiple versions depending on how many times you modified it.
Please use the data view Email campaigns v2, as the Email campaigns data view is going to be deprecated shortly.
This view contains data from August 1st, 2017 onwards.
Data Field | Description | Type |
---|---|---|
category_id | The category ID. | integer |
customer_id | The unique ID of the account. | integer |
event_time | Campaign creation/modification time (UTC). | timestamp |
id | The ID of the email campaign. | integer |
language | The two-character language code. | string |
loaded_at | Loading date to Data Platform (UTC). | timestamp |
name | The name of the email campaign. | string |
parent_campaign_id | The ID of the parent campaign. | integer |
program_id | The ID of the Automation Center program, in which the campaign is used. | integer |
sub_type | The email campaign sub-type. Possible values are ab, multi_launch, external and unknown. | string |
type | The email campaign type. Possible values are test, recurring, onevent, unknown and batch. | string |
version_name | The name of the campaign version. | string |
Email campaigns v2
View name: email_campaigns_v2_[customer_ID]
(where customer_ID
is your Emarsys account ID)
This data view contains all your email campaigns with a lot of additional information beyond the basic campaign data. By running a query, you can get information about all the campaigns that were created or modified in your account.
A campaign may have multiple versions depending on how many times you modified it.
This view contains data from August 1st, 2017 onwards.
Data Field | Description | Type |
---|---|---|
campaign_id | The ID of the campaign. | integer |
campaign_type | The campaign type. Possible values are test, batch and transactional. | string |
category_name | The category you defined. | string |
customer_id | The unique ID of the account. | integer |
defined_type |
The combination of suite_type, suite_event and campaign_type.
|
string |
event_time | Campaign creation/modification time (UTC). | timestamp |
is_recurring | If it is a recurring campaign or not. | boolean |
language | The two-character language code. | string |
loaded_at | Loading date to Data Platform (UTC). | timestamp |
name | The name of the campaign. | string |
origin_campaign_id | The ID of the parent campaign in case of an email used in a recurring Automation Center program, or the ID of the root campaign in case of AB testing. | integer |
program_id | The ID of the Automation Center program, in which the campaign is used. | integer |
program_version_id | The version of the Automation Center program, in which the campaign is used. | integer |
status | The status of the campaign. Possible values: ready_to_launch_paused , launched_paused , in_design_paused , in_design , tested , tested_paused , launched , ready_to_launch , aborted , unknown
|
string |
subject | The non-personalized subject line. | string |
suite_event | The sub-type of the campaign. | string |
suite_type | The type of the campaign. | string |
timezone | The timezone of the campaign. | string |
version_name | The name of the campaign version. | string |
Please note that this table does not only contain entries related to modifications made by you, but other events as well. Also, note that campaigns are not deduplicated in this table, they are listed based on their modification date.
The suite_type parameter component of defined_type can take up the following values:
adhoc
recurring
newsletter
onevent
testmail
multilanguage
virtual contact
The campaign_type parameter component of defined_type can take up the following values:
The suite_event parameter component of defined_type can take up the following values:
- none
- registration
- birthday
- tell-a-friend
- change profile
- contact us
- import
- date
- abandoned (shopping cart)
- program (AC)
- external
- multilanguage
- external RTI
The parameter defined_type
has a calculated value. This means that it can give a more detailed result compared to campaign_type
or suite_type
.
For example, A/B test emails will have child email campaigns whose version_name
will show if they are the parent campaign (version A) or only a following test (rest of the versions). (Parent campaigns will have the same root_campaign
as their own ID.)
If we looked only at the value of suite_type, we would see 3 ad-hoc campaigns.
The same is true for recurring campaigns. suite_type
would be able to show only recurring, but defined_type
differentiates between parent and child campaigns with the parent_campaign ID (parent campaigns have their own ID as a parent_campaign ID).
The parameter defined_type
remains unknown
if the campaign is not yet launched, namely it is still being edited.
Email campaign category
View name: email_campaign_categories_[customer_ID]
(where customer_ID
is your Emarsys account ID)
This data view contains all your campaign categories.
It contains data from January 1st, 2016 onwards.
Data Field | Description | Type |
---|---|---|
customer_id | The unique ID of the account. | integer |
event_time | Category creation time (UTC). | timestamp |
id | The ID of the campaign category. | integer |
loaded_at | Loading date to Data Platform (UTC). | timestamp |
name | The name of the campaign category. | string |
Email sends
View name: email_sends_[customer_ID]
(where customer_ID
is your Emarsys account ID)
This data view contains all your sent emails. By running a query, you can get data on which emails were sent in which campaign to which customers.
This view contains data from January 1st, 2016 onwards.
Test campaigns are not listed in the Email sends table. Bounced testmails can be found in the Email bounces table.
Data field | Description | Type |
---|---|---|
campaign_id | Unique campaign ID. | integer |
campaign_type | Whether it is batch or transactional. | string_enum |
contact_id | Emarsys internal unique contact ID. Same as the user_id values in the contact export files. |
integer |
customer_id | The unique ID of the account. | integer |
domain | The recipient's domain. | string |
event_time | Send time (UTC). | timestamp |
launch_id | The unique ID of a launch. | integer |
loaded_at | Loading date to Data Platform (UTC). | timestamp |
message_id | The unique ID of the message in a given campaign. This is the launch list id that identifies an individual email sent to a contact. For example, when emails are sent out to multiple contacts during a launch, all emails sent by Emarsys have an individual identifier called message ID. | integer |
Email opens
View name: email_opens_[customer_ID]
(where customer_ID
is your Emarsys account ID)
This data view contains data collected when your customers opened your emails. By running a query, you can get data on which email has been opened, how many times, by whom, in which campaign, where, and on what device type.
This view contains data from January 1st, 2016 onwards.
This data type may include duplicate entries. Handle this potential redundancy accordingly during consumption.
Data field | Description | Type |
---|---|---|
campaign_id | Unique campaign ID. | integer |
campaign_type | Batch or transactional. | string_enum |
contact_id | Emarsys internal unique contact ID. Same as the user_id values in the contact export files. |
integer |
customer_id | The unique ID of the account. | integer |
domain | The recipient's domain. | string |
email_sent_at | Send time (UTC). | timestamp |
event_time | Open time (UTC). | timestamp |
generated_from | No info available on opens as the tracking pixel was not allowed to download. | string |
geo | This record contains all geo-related information. | record |
geo_country_iso_code | The country or region associated with the IP address. | string |
geo.accuracy_radius | The approximate accuracy radius in kilometres around the latitude and the longitude for the geographical entity. | integer |
geo.city_name | The city associated with the IP address. | string |
geo.continent_code | The code of the continent associated with the IP address. | string |
geo.latitude | Approximate latitude of the postal code / city / country or region associated with the IP address. | float |
geo.longitude | Approximate longitude of the postal code / city / country or region associated with the IP address. | float |
geo.postal_code | The postal code associated with the IP address. | string |
geo.time_zone | The time zone associated with the location. | string |
ip | The IP address of the device on which the email was opened. | string |
is_anonymized | True if the
user_agent was anonymized. Note: This is a legacy feature, it is not supported anymore. |
bool |
is_mobile | True if the email was opened on a mobile device. | bool |
launch_id | The unique ID of a launch. | integer |
loaded_at | Loading date to Data Platform (UTC). | timestamp |
md5 | User_agent string md5 hash. | string |
message_id | The unique ID of the message in a given campaign. This is the launch list id that identifies an individual email sent to a contact. For example, when emails are sent out to multiple contacts during a launch, all emails sent by Emarsys have an individual identifier called message ID. | integer |
platform | Identifies the platform (e.g. Iphone, Windows, etc.). | string |
uid | A random hash, generated for the contact as a unique identifier. | string |
user_agent | Device and browser info. | string |
For privacy opens, please see:
According to our tests, iOS 15 opens the emails using a generic user agent, "Mozilla/5.0" to mask the device of the user. The location of the opens is also masked and it returns a generic address, for example: "America/Chicago" or "Europe/Berlin".
Email clicks
View name: email_clicks_[customer_ID]
(where customer_ID
is your Emarsys account ID)
This view shows all clicks related to your sent emails, including multiple clicks on the same link. If you are interested in campaign statistics by platform, this view also tells you on which platform your customers click the most.
It contains data from August 1st, 2018 onwards.
Data field | Description | Type |
---|---|---|
campaign_id | Unique campaign ID. | integer |
campaign_type | Batch or transactional. | string_enum |
category_id | The ID of the link category. | integer |
category_name | The category of the link given in the email editor. | string |
contact_id | Emarsys internal unique contact ID. Same as the user_id values in the contact export files. |
integer |
customer_id | The unique ID of the account. | integer |
domain | The recipient's domain. | string |
email_sent_at | Send time (UTC). | timestamp |
event_time | Click time (UTC). | timestamp |
geo | This record contains all geo-related information. | record |
geo_country_iso_code | The country or region associated with the IP address. | string |
geo.accuracy_radius | The approximate accuracy radius in kilometers around the latitude and the longitude for the geographical entity. | integer |
geo.city_name | The city associated with the IP address. | string |
geo.continent_code | The code of the continent associated with the IP address. | string |
geo.latitude | Approximate latitude of the postal code / city / country or region associated with the IP address. | float |
geo.longitude | Approximate longitude of the postal code / city / country or region associated with the IP address. | float |
geo.postal_code | The postal code associated with the IP address. | string |
geo.time_zone | The time zone associated with the location. | string |
ip | The IP address of the device on which the user clicked a link. | string |
is_anonymized | True if the user
agent was anonymized. Note: This is a legacy feature, it is not supported anymore. |
bool |
is_img | True if the user clicked an image. Note: This field has valid (true) data only for campaigns created in the old VCMS editor. False for all campaigns created in HTML or VCE. |
bool |
is_mobile | True if the email was opened on a mobile device. | bool |
launch_id | The unique ID of a launch. | integer |
link_id | The ID of the link. | integer |
link_name | The name of the link given in the email editor. | string |
loaded_at | Loading date to Data Platform (UTC). | timestamp |
md5 | User agent string md5 hash. | string |
message_id | The unique ID of the message in a given campaign. This is the launch list id that identifies an individual email sent to a contact. For example, when emails are sent out to multiple contacts during a launch, all emails sent by Emarsys have an individual identifier called message ID. | integer |
platform | Identifies the platform (e.g. Iphone, Windows, etc.) | string |
section_id | The ID of the section in the email. It refers to the different sections of emails sent using the old VCMS template. | integer |
uid | A random hash, generated for the contact as a unique identifier. | string |
user_agent | Device and browser info. | string |
Email bounces
View name: email_bounces_[customer_ID]
(where customer_ID
is your Emarsys account ID)
If you find that your open rate is below your expectations, your contact list is probably outdated and our mail sending system cannot deliver all your messages. In this view, you can run queries in order to have a look at the bounces, those messages which could not be delivered for various reasons.
This view contains data from January 1st, 2016 onwards.
Data field | Description | Type |
---|---|---|
bounce_type | Bounce type. Possible values are block, soft and hard. | string |
campaign_id | Unique campaign ID. | integer |
campaign_type | Batch or transactional. | string_enum |
contact_id | Emarsys internal unique contact ID. Same as the user_id values in the contact export files. |
integer |
customer_id | The unique ID of the account. | integer |
domain | The recipient's domain. | string |
email_sent_at | Send time (UTC). | timestamp |
event_time | Bounce time (UTC). | timestamp |
launch_id | The unique ID of a launch. | integer |
loaded_at | Loading date to Data Platform (UTC). | timestamp |
message_id | The unique ID of the message in a given campaign. This is the launch list id that identifies an individual email sent to a contact. For example, when emails are sent out to multiple contacts during a launch, all emails sent by Emarsys have an individual identifier called message ID. | integer |
dsn_reason | The original bounce response code from the SMTP server. This is translated into the bounce_type .
|
string |
Email content reporting
View name: contents_[customer_ID]
(where customer_ID
is your Emarsys account ID)
This data view contains images, links and other contents parsed from the online version of the emails.
This view contains data from May 15th, 2023 onwards.
This data is only populated where online version is available and there is a 60-day expiration on the partitions.
Data field | Description | Type |
---|---|---|
customer_id | The ID of the account. Parsed from the name of the HTMLfile. | integer, nullable |
campaign_id | The ID of the campaign. Parsed from the name of the HTML file. | integer, nullable |
message_id | The unique ID of the message in a given campaign. Parsed from the name of the HTML file. | integer, nullable |
uid | A random hash, generated for the contact as a unique identifier. Parsed from the name of the HTML file. | string, nullable |
locale | The IETF language tag of the language version for a multi-language VCE campaign. Parsed from the e-is-locale attribute of the <html> element. null for non-VCE campaigns. |
string, nullable |
is_multilanguage |
TRUE if a VCE campaign has more than 1 language version, FALSE if it has only 1, null for non-VCE campaigns. Parsed from the e-is-multilanguage attribute of the <html> element. |
boolean, nullable |
contents | A list of the parsed contents in the email. | record, repeated |
contents.content_type | The type of the
parsed content. It can have the following values: - "image_link": An image that has a link ancestor.- "image" : An image without link ancestor.- "link" : A link without any other parsed content inside it.- "text_link" : A text content (see below) that has a link ancestor and no other parsed content inside it.- "text" : A text content (see below) without a link ancestor or any other parsed content inside it.Images are <img> elements.Links are <a> elements. Text contents are either of the following: - any element with an "e-block" attribute: A block in a VCE campaign.- any element except <img> or <a> with an "e-editable" attribute: An editable text in a VCE campaign.- any element with an "external-id" attribute: Used for tagging some content with a value and marking it for parsing. |
string, nullable |
contents.src | The source of the image. Populated for "image" and "image_link" type contents. Parsed from src attribute of the <img> element. |
string, nullable |
contents.relative_link_id | The relative link id for a tracked link. Populated for "image_link" , "text_link" type contents. Parsed from the href attribute of the a element. It's the number after the 4th _ character in the p query parameter. |
integer, nullable |
contents.content_index | The index of the content in the email. It starts from 0 and increases continuously following the order in the email. Populated for all contents. | integer, nullable |
contents.is_open_time_content | True if the image is on recommender.scarabresearch.com (Predict) or kickdyn.com (Kickdynamic).Populated for "image" and "image_link" type contents.Parsed from the src attribute of the <img> element. |
boolean, nullable |
contents.is_tracking_pixel |
True if the image is the tracking pixel, i.e. the image source contains mo/${uid} (where uid is interpolated) and ends with .gif .Populated for "image" and "image_link" type contents, but can only be true for the former.Parsed from the src attribute of the <img> element. |
boolean, nullable |
contents.e_editable | In a VCE campaign
if the content is editable or any of it’s ancestors, this field
will contain the ID of the editable. Populated for all contents, if possible. Parsed from the e-editable attribute of the content or it’s closest ancestor with one. |
string, nullable |
contents.e_block_id | In a VCE campaign
if the content is inside a block (or it is the block itself), it
will contain the ID of the block. Populated for all contents, if possible. Parsed from the e-block-id attribute of the content or it’s closest ancestor with one. |
string, nullable |
contents.external_id | If the content is
tagged with an external id or it is inside such an element, it will
contain its ID. Populated for all contents, if possible. Parsed from the external-id attribute of the content or it’s closest ancestor with one. |
string, nullable |
loaded_at | A timestamp generated when the parsing of the email was finished. | timestamp, nullable |
batch_filename | The name and path of the batch file on OVCS. | string, nullable |
html_filename | The name of the html file in the batch. | string, nullable |
Email cancels
View name: email_cancels_[customer_ID]
(where customer_ID
is your Emarsys account ID)
This data view contains all your cancelled email sends. By running a query you can get data on those messages which could not be sent and they were cancelled. An email send can be cancelled by various reasons, for example the contact filed a spam complaint or the contact doesn't have a valid email address. Possible cancel reasons listed below.
This view contains data from November 20th, 2017 onwards.
Data field | Description | Type |
---|---|---|
campaign_id | Unique campaign ID. | integer |
campaign_type | Batch or transactional. | String |
contact_id | Emarsys internal unique contact ID. Same as the user_id values in the contact export files. |
integer |
customer_id | The unique ID of the account. | integer |
event_time | Cancel time (UTC). | timestamp |
launch_id | The unique ID of a launch. | integer |
loaded_at | Loading date to Data Platform (UTC). | timestamp |
message_id | The unique ID of the message in a given campaign. This is the launch list id that identifies an individual email sent to a contact. For example, when emails are sent out to multiple contacts during a launch, all emails sent by Emarsys have an individual identifier called message ID. | Integer |
reason | See Possible cancel reasons. | string |
suite_event | The sub-type of the campaign. | string |
suite_type | The type of the campaign. | string |
Possible cancel reasons
Cancel reason | Description |
---|---|
alternative_text_error | Generation of alternative text failed. |
attachment_missing | Attachment cannot be found. |
email_duplication | This email is a duplicate, it was already sent to the contact. |
empty_address_error | Empty email address. |
empty_mail | No content. |
encoding_conversion_error | Converting from one charset to another failed. |
frequency_cap_blocked | Sending blocked by frequency cap. |
html_error | Cannot generate html version of the email. |
invalid_email_address_error | Email address doesn't contain “@". |
invalid_email_address_rejected_by_pmta | SMTP server found the email address invalid. |
invalid_fax_number | Invalid fax number. |
missing_or_outdated_data_error | No data or outdated data available for Incentive Recommendation. |
opted_out | Contact opted-out before mail launch. |
pers_error | Personalization error occured. |
program_interrupted | Already scheduled emails canceled because AC program was interrupted. |
spamcomplaint_blocked | Contact is on the customer's spamcomplaint list. |
system_blocked | Contacts address is on a global blocklist. (e.g. robinson list) |
text_error | Cannot generate text version of the email. |
too_many_retries | Personalization failed because of too many failed personalization attempts. |
triggered_email_blocked | Contact is on triggered email blocklist. |
user_blocked | Contacts address is on a customer level blocklist. (e.g: Contact asked not to be disturbed by emails.) |
Email complaints
View name: email_complaints_[customer_ID]
(where customer_ID
is your Emarsys account ID)
This data view contains all complaint events. When a contact complains about a campaign by reporting it as a spam, a new row will be added to this data view.
This view contains data from November 20th, 2017 onwards.
Data field | Description | Type |
---|---|---|
campaign_id | Unique campaign ID. | integer |
campaign_type | Batch or transactional. | string |
contact_id | Emarsys internal unique contact ID. Same as the user_id values in the contact export files. |
integer |
customer_id | The unique ID of the account. | integer |
domain | The recipient's domain. | string |
email_sent_at | Send time (UTC). | timestamp |
event_time | Complaint time (UTC). | timestamp |
launch_id | The unique ID of a launch. | integer |
loaded_at | Loading date to Data Platform (UTC). | timestamp |
message_id | The unique ID of the message in a given campaign. This is the launch list id that identifies an individual email sent to a contact. For example, when emails are sent out to multiple contacts during a launch, all emails sent by Emarsys have an individual identifier called message ID. | integer |
Email unsubscribes
View name: email_unsubscribes_[customer_ID]
(where customer_ID
is your Emarsys account ID)
This data view contains all unsubscribe events, except the ones that happened through import or on the UI.
This view contains data from January 1st, 2017 onwards.
Data field | Description | Type |
---|---|---|
campaign_id | Unique campaign ID. | integer |
campaign_type | Batch or transactional. | string |
contact_id | Emarsys internal unique contact ID. Same as the user_id values in the contact export files. |
integer |
customer_id | The unique ID of the account. | integer |
domain | The recipient's domain. | string |
email_sent_at | Send time (UTC). | timestamp |
event_time | Unsubscribe time (UTC). | timestamp |
launch_id | The unique ID of a launch. | integer |
loaded_at | Loading date to Data Platform (UTC). | timestamp |
message_id | The unique ID of the message in a given campaign. This is the launch list id that identifies an individual email sent to a contact. For example, when emails are sent out to multiple contacts during a launch, all emails sent by Emarsys have an individual identifier called message ID. | integer |
Source | See Possible sources. | string |
Possible sources
Source | Description |
---|---|
unsubscribe | Contact used the unsubscribe link in the email to unsubscribe from all marketing email communication. |
list_unsubscribe | Contact used the unsubscribe button in their email client to unsubscribe from all marketing email communication. |
unsubscribe_from_campaign | Unsubscribe event registered through the API to unsubscribe contact from a specific campaign. Please note that unsubscribe events from custom unsubscribe procedures only appear in Open Data if they used the /v2/email/unsubscribe API call. The API call /v2/email/unsubscribe only registers the unsubscribe event, the actual unsubscribe must be done with v2/contacts/update-contacts. |
Calling the /v2/email/unsubscribe API endpont in case of Custom Unsubscribe Solution is crucial for the unsubscribe to show up in Open Data and the Email reporting Screens.