System Events

System events are a group of events available to all Bloomreach Engagement customers by default without the need for a specifically-tailored integration. As opposed to custom events, system events should be the same for all Bloomreach Engagement users. In this article, we will list and explain the attributes of these events.

session_start, session_end, first_session

event namedescription
session_startThis event is tracked when the customer visits your website.
session_endThis event is generated 20 minutes after the customer leaves your website or closes the browser tab. Its timestamp is that of the last session ping from the Javascript SDK + 30 seconds.
first_sessionThis event is derived from the session_start event. It is tracked when the customer visits your website for the very first time.

🚧

Ghost sessions

A session_start and session_end (but not page_visit) can occasionally be tracked without the customer being active. This can happen when the customer leaves your website running, their computer falls asleep, and then their browser gets randomly active and generates a session ping without any page_visit. Read more about this occurrence and our solutions for it in Ghost sessions.

The duration of the session will be the difference between the timestamps of session_start and session_end in seconds. The timestamp of the session_end will have a timestamp within 2 minutes after the customer closed the last page (the 20-minute timeout is ignored for the purpose of calculating the session duration).

In other words, the timeout ensures that if someone closes the page but returns within 20 minutes, this will still be counted as a single session. However, if they don't return, those 20 minutes will not be counted into the session duration.

The events are tracked with the following properties (you can add custom ones using the Javascript SDK's ping options):

AttributeDescriptionExample
cityName of the city from which the user is visiting your website.Little Rock
stateName of the state/region from which the user is visiting your website.Arkansas
countryName of the country from which the user is visiting your website.United States
latitudeLatitude from which the user is visiting your website.80.5293
longitudeLongitude from which the user is visiting your website.40.5293
sourceName of the platform from which the user visited your website. It is determined based on session_ping event URL by comparison with the list of knows referrers. This is done via async-api-worker by a referrer-parser.Facebook
referrerUrl of the platform from which the user visited your website.https://facebook.com
campaign_idAutomatically-generated ID of the campaign that brought the customer on your website. More about UTM parameters
utm_campaignUTM code of the campaign that brought the customer on your website. By default, this will be equal to the name of the email node / web push node within the scenario.
More about UTM parameters
autumn_campaign
utm_sourceUTM code of the platform from which the user visited your website. More about UTM parametersfacebook_ads
utm_mediumUTM code of the campaign method used to bring the customer on your website. More about UTM parametersemail / push_notification
utm_contentUTM code of the content that brought the customer on your website. More about UTM parametersbanner / logolink / product-feed
utm_termUTM code based on terms defining the product. Present if the campaign redirected the customer on a particular product page. More about UTM parameterssubject-STREETWEAR-category-Clothing-T-shirts-Everyday-With + sleeve-brand-Nike + men
gclidGoogle Click Identifier is a code added by Google to the website's url when the customer visits your site through a Google Ad campaign.EAwaSSdkbEAQ112
ipIP address of the user who visited your website.129.233.109.145
deviceMobile device from which the user visited your website. If the visit was not through a mobile device then it is marked as "other".Iphone
osOperating system of the device through which the user visited your website.Android
browserBrowser through which the user visited your website.Chrome
locationURL of the page where the user's session started.http://eshop.exponea.com/chaz-kangeroo-hoodie.html
pathLocation URL without the domain and parameterschaz-kangeroo-hoodie.html
duration (only for session_end)The amount of time the user spent on the website during this session measured in seconds .2415.980319

📘

Using Google Analytics ID for first_session

If you have just started using Bloomreach Engagement and you had tracked your customers using Google Analytics before, you can use the Google Analytics ID to immediately distinguish between old and new customers also in Bloomreach Engagement. You can get the Google Analytics ID from the Google Analytics tracker. Google Analytics ID is written in the form 1.2.286403989.1366364567 and it's last part (behind the last dot) is the timestamp of the first session. In Bloomreach Engagement, you can extract it from Google Analytics ID using an expression and store it as a customer attribute.

🚧

Customer's location inaccuracies

As all the attributes that localize the customers are based on their IP, they depend on the quality of the IP infrastructure. The country and city attributes are generally very reliable, however, the latitude and longitude are often not (as they are a more precise measure of the customer's location).

session_start custom attributes (deprecated)

session_start is often complemented with these manually-added custom attributes. These attributes are deprecated.
If you want to try to add some of them as custom attributes, read on how to add default attributes to events & set up advanced tracking parameters in the Web tracking article.

AttributeDescriptionExample
page_load_msNumber of milliseconds it took to load the page.632
screen_heightHeight of the screen the customer used to visit your webpage.900
screen_widthWidth of the screen the customer used to visit your webpage.1440
screen_resolutionResolution of the screen the customer used to visit your webpage.1440x900
versionVersion of a browser the customer used to visit your webpage.Chrome 75

session_start and session_end activity properties

activity properties are sent by the Javascript SDK in session pings.

PropertiesDescription
activityIt is set by the SDK when ping.activity is enabled in the configuration.
createdIt is the timestamp of the ping that originally started the session (in other words, it is the session start timestamp).
last_updateIt is the time of the last session_ping received (so stripped of the internal logout timeout before the session_end appears).

page_visit

page_visit happens each time the customer opens one of the pages of your website. Note that these events are disabled by default but you can enable them using the track options of the Javascript SDK.

AttributeDescriptionExample
deviceMobile device from which the user visited the page. If the visit was not through a mobile device then it is marked as "other".Iphone
referrerUrl of the platform from which the user visited the page.https://m.facebook.com
osOperating system of the device through which the user visited the page.Android
locationURL of the page that the user visited.http://eshop.exponea.com/chaz-kangeroo-hoodie.html
browserBrowser through which the user visited the page.Chrome

🚧

Issues with the tracking

If you are using our CDN page outside of your own domain for giving out surveys/getting consent, no page_visit or session_start events will be generated.

campaign

The campaign event is generated when working with emails, text messages, push notifications, or webhooks.

AttributeDescriptionExampleTracked on
statusStatus of the user's interaction with the campaign mainly based on the SMTP code.sent / delivered / clicked ...Email, Transactional email, SMS, Webhook, Ads, Browser Push Notification, Mobile Push Notification. See below for details.
campaign_nameName you gave to the campaign.September newsletterEmail, Transactional email, SMS, Webhook, Ads, Browser Push Notification, Mobile Push Notification
campaign_idAutomatically-generated ID of the campaign.5c584sa5729971a4f992sj9Email, Transactional email, SMS, Webhook, Ads, Browser Push Notification, Mobile Push Notification
action_typeType of action node or communication channel used for the campaign.email / sms / webhook / ads / browser notification / mobile notification / transactional_email / split / facebook messageEmail, Transactional email, SMS, Webhook, Ads, Browser Push Notification, Mobile Push Notification
action_nameName you gave to the specific action within the campaign scenario. In case of emailing through Email campaigns and not scenarios, action_name is the same as campaign_name.Shoes emailEmail, SMS, Webhook, Ads, Browser Push Notification, Mobile Push Notification
action_idUnique ID number of the action. The number rises proportionally with the order in which you created the action in the scenarios. The action_id of the first action is 1, for the second action it is 2 etc.12Email, SMS, Webhook, Ads, Browser Push Notification, Mobile Push Notification
integration_idUnique ID of the used integration to send the campaign e.g. email provider.5bdc56b593bfb20013ea6af3Email, Transactional email, SMS, Ads
integration_nameThe name of the used integration/Email, Transactional email, Ads
integration_typeThe type of the Ads integrationAdform, ...Ads
campaign_policyName of the policy used in the campaign shown to the particular user. More on policydefaultEmail, SMS, Webhook, Browser Push Notification, Mobile Push Notification
consent_categoryName of the consent category used with the campaign, or simply General ConsentGeneral ConsentEmail, Transactional email, SMS, Webhook, Ads, Browser Push Notification, Mobile Push Notification
subjectCustom-given subject of the e-mail sent in the campaign.Autumn CollectionEmail, Transactional email, Browser Push Notification, Mobile Push Notification
languageLanguage used in the campaign shown to the particular user.skEmail, Transactional email, SMS, Browser Push Notification, Mobile Push Notification
recipientThe user's email address where the campaign email was delivered.[email protected]Email, Transactional email, SMS, Mobile Push Notification
sent_timestampThe timestamp of when the message was sent (sent from Bloomreach Engagement)/Email, Transactional email, Browser Push Notification, Mobile Push Notification
message//Email, SMS, Webhook, Ads, Mobile Push Notification
message_idUnique ID of the email message on the side of the email provider (ESP)/Email
comment//Email, SMS
error//Email, SMS
codeThe SMTP code received from a server after you sent out an email.422Email. See below for details.
cumulativeWhether the cumulative bounce logic should be applied.true/falseEmail
ipIP address of the user targeted by the campaign.129.233.109.145Email, Transactional email
user-agentName of the email client from which the campaign link was clicked from.MozillaEmail, Transactional email
urlURL campaign link that was clicked on by the user./Email, Transactional email
city/KosiceEmail, Transactional email
country/SlovakiaEmail, Transactional email
latitude/48.7164Email, Transactional email
longitude/21.2611Email, Transactional email
sending_ip//Email
state//Email, Transactional email
type//Email
xpath//Email, Transactional email
template_idThe unique system ID of the template used, if a template has been used instead of raw HTML./Transactional email
template_nameThe name of the template used, if a template has been used instead of raw HTML./Transactional email
audience_idID of the ads audience/Ads
operationType of the audience operation - add or remove from audienceadd_customers / remove_customersAds
number_of_message_parts//SMS (Sinch/Infobip)
sender//SMS
status_codeResponse status code/SMS, Webhooks
preset_channelType of the webhook presetwhatsappWebhooks
platformType of the push platformbrowser / ios / androidBrowser Push Notification, Mobile Push Notification

🚧

Permissioned Access to Campaign Event Settings

Campaign settings now have permission access. Any change to mapping can be executed only after a discussion with Account Managers.

Values of the status attribute

StatusExplanation
enqueuedBloomreach Engagement enqueued the email to the email provider
enqueue_failedBloomreach Engagement could not enqueue the email
suppressedSend suppressed by Bloomreach Engagement; by either frequency or consent policy, or by suppression lists.
deliveredEmail provider confirmed delivery
openedThe email was opened = pixel in the email was loaded.
Note that some services block these pixels, which may result in customers who only have the clicked event tracked, without opened
clickedThe customer clicked on a link inside the email or SMS (using the Campaign Link Shortener). This also includes clicking on the unsubscribe link.
soft_bounced, droppedThe email provider notified Bloomreach Engagement that the email was bounced with a temporary error. Further emails will be tried to be delivered. This error may happen for example due to a full inbox.
hard_bounced, bouncedEmail provider notified Bloomreach Engagement that the email was bounced with a permanent error. This may happen for example due to the email adress being a non-existent one.
preblockedThe mail service provider had put the domain on the suppression list and so emails from the domain will not be delivered to the customer.
complainedEmail provider notified Bloomreach Engagement that the customer marked the email as "Spam"
unsubscribedCustomer unsubscribed from email inbox using the List unsubscribe feature.
sent The message was submitted to the network for delivery.
failedCommunication error between Bloomreach Engagement and the provider
closed
incoming_messageText of an SMS reply from the campaign recipient upon activating two-way messaging.
rejectedThe provider notified Bloomreach Engagement that the message was rejected for delivery.
successThe customer was successfully added to ads audience
abortedThe campaign was aborted by using the jinja abort function with custom message.

Which status attributes are generated by what channel

StatusEmailSMS (CM Telecom)SMS (Sinch/Infobip)MMS (Sinch/Infobip)WebhooksAdsBrowser PushMobile Push
enqueuedYes/YesYes////
enqueue_failedYes/YesYes////
suppressedYes///////
deliveredYes/YesYes//YesYes
openedYes///////
clickedYesYes (using Campaign Link Shortener)Yes (using Campaign Link Shortener)Yes (using Campaign Link Shortener)//YesYes
soft_bouncedYes///////
hard_bouncedYes///////
preblockedYes///////
complainedYes///////
unsubscribedYes///////
sent/Yes//Yes/YesYes
failed/YesYesYesYesYesYesYes
closed//////Yes/
incoming_message//YesYes////
rejected//YesYes////
success/////Yes//

Values of the code attribute

Code attribute gives you the SMTP error or reply code received from a server after you send out a campaign email. The status attribute is based on these codes, however, it is useful to also know the code itself as it is more precise in assessing what happened to the email. The following link contains a list of codes and their corresponding meanings. For these to work correctly, you need to have a Mailgun integration. Even though SMTP codes are reliable for most customers, beware that small email providers often send alternative SMTP codes that will not be recognized.

📘

Tracking clicked event

Links to your webpage sent out in a campaign firstly lead to our CDN domain so that the clicked event is tracked. After that, the customer is immediately redirected from the CDN domain to your webpage.

🚧

Issues with the opened event

Opened event tracked for Gmail does not guarantee that the recipient had indeed opened your email. Gmail's servers sometimes download external images from emails into their cache in advance. As we use these images to track whether the customers opened the email, we get a fake open event every time Gmail's servers do this. Moreover, email providers sometimes block the loading of the images we use for the tracking of the opened event so even if your email seems to be just delivered it might, in fact, be opened.

1080

Bounce management

When an email does not get delivered, there might be multiple reasons why it happened. We collect the failure feedback from our email providers and automatically assign them to standard bounce categories such as soft bounce (e.g. full inbox) or hard bounces (e.g. invalid email). Bloomreach Engagement also works with our custom type of bounce, what we call a “cumulative bounce”! Read all the details in our article for Bounce Management.

Status name change and filters migration

In 1.173 we unified the statuses of email campaign events from email providers and renamed them to meet the industry standards and improve user experience.

In the following table you can find the naming changes:

Previous status nameNew status name
droppedsoft_bounced
soft bouncedsoft_bounced
bouncedhard_bounced
rejectedpreblocked

Along with renaming, an automatic migration was carried out, in order to update event filters as defined below. The new naming along with the original one was used in the migration to ensure backwards compatibility. So don't worry, you probably don't have to update your analytics and campaigns manually, but keep an eye on your business critical use cases after the change to make sure everything works as expected.

The following change was done in all filters that use the renamed statuses:

  • Operators equals have been changed to in and does not equal to not in and extended with new statuses.
  • Operators in and not in have been extended with new statuses.

🚧

Rest of the string filters contains, does not contain, starts with, ends with and matches regex were not changed as they are unlikely to be used for this purpose. Manual change is needed in case you want to use those filters in combination with the renamed statuses.

For any other custom usage such as jinja or webhooks a manual change is needed as well.

Example:
equals dropped ->in [dropped, soft_bounced]

861

in [dropped, x, y] -> in [dropped, soft_bounced, x, y]

survey

survey happens when the customer is shown a survey question you had created. More on surveys

AttributeDescriptionExample
questionQuestion given in the survey.How likely are you to recommend Bloomreach Engagement to your friends?
answerAnswer given by the user in the survey. (has value only if the customer answers the question)Very likely.
interactionInformation on whether the user filled and sent the survey.true
survey nameName you gave to the survey.Satisfaction survey
survey_idRandomly generated ID of the survey,5c584sa5729971a4f992sj9
question_indexOrder of the question in which it appears in the survey.2.00 (second question of the survey)

merge

merge when two customer profiles are merged into one

AttributeDescriptionExample
source_internal_idsInternal IDs of merged customers["58244a8dfb6009d9d3213198", "5820734f83043485f66795eb"]
destination_internal_idInternal ID of final customer"5820734f83043485f66795eb"
original_external_idsExternal IDs (registered, cookie) of merged customers{"5820734f83043485f66795eb":{"registered":["[email protected]"]},"58244a8dfb6009d9d3213198":{"cookie":["c50961e7-9086-4169-8066-1ee47615108b"]}}
final_external_idsList of all external IDs (registered, cookie) from two initial profiles{"cookie":["c50961e7-9086-4169-8066-1ee47615108b"],"registered":["[email protected]"]}
requested_idsList of external IDs (registered, cookie) in the request which merged the clients{"cookie":"c50961e7-9086-4169-8066-1ee47615108b","registered":"[email protected]"}

ab test

ab test happens when the customer sees one of the variants of a page/banner/recommendation you had created in an A/B split. More on A/B testing

AttributeDescriptionExample
variantName of the A/B split variant loaded on the webpage.Variant A/control group
variant_idAutomatically-generated ID of the variant.c584sa5729971a4f992sj9
locationURL of the particular variant of the user sees.http://eshop.exponea.com/chaz-kangeroo-hoodie-variant-a.html
deviceMobile device from which the user sees the particular variant. If the visit was not through a mobile device then it is marked as "other".Iphone
osOperating system of the device through which the user sees the particular variant.Windows
browserBrowser through which the the user sees the particular variant.Chrome
nameWeblayer's or experiment's name.
banner_id/experiment_idWeblayer's or experiment's ID

experiment

experiment happens when an experiment is shown to the customer. More on experiments

AttributeDescriptionExample
experiment_nameCustom-given name of the experiment.Experiment 1
experiment_idAutomatically-generated ID of the experiment.584sa5729971a4f992sj9
variant_nameName of the A/B split variant used in the experiment loaded on the webpage.Variant A
variant_idAutomatically-generated ID of the variant used in the experiment loaded on the webpage.c584sa5729971a4f992sj9
actionNature of the engagement the user had with the experiment. "Show" is a default standard for indicating that the experiment has loaded on the page.show/close/submit/click
locationURL of the page with the experiment.http://eshop.exponea.com/chaz-kangeroo-hoodie-experiment-1.html
pathLocation URL without the domain and parameterschaz-kangeroo-hoodie-experiment-1.html
deviceMobile device from which the user sees the page with the experiment. If the visit was not through a mobile device then it is marked as "other".Iphone
osOperating system of the device through which the user sees the page with the experiment.Windows
browserBrowser through which the the user sees the page with the experiment.Chrome

anonymization

anonymization happens when you remove the customer's identification but still keep their data for analytics purposes. You can read more about anonymization in Individual Rights.

AttributeDescriptionExample
sourceSource through which the user's information was anonymized.events_ext_api, app
access_group_idAPI Group Identifier (This property will only appear if anonymization was performed through the API)API_Group_ID
user_idUser's Internal Identification (This property will only show if the Customer Profile was anonymized manually using the UI)USER_ID

📘

Efficient Engagement usage

When generated, system events get procesed and stored, thus counting toward your Monthly Processed Events (MPE) and Maximum Events Storage (MES) covered by your contract. Learn how to optimize your MPE and MES in this best practices article to get the most out of your Engagement experience!