System events are a group of events available to all Exponea customers by default without the need for a specifically-tailored integration. As opposed to custom events, system events should be the same for all Exponea users. In this article, we will list and explain the attributes of these events.
first_session, session_start, session_end
event name | description |
---|---|
| happens when the customer visits your website |
| is derived from the session_start event. It happens when the customer visits your website for the very first time |
| is an auxiliary event that will help you track other events. It is generated on every |
| is generated 20 minutes after the last |
Sleepwalking case
A
session_start
andsession_end
(but notpage_visit
) can occasionally be tracked without customer's actual activity. This can happen when the customer's device is only hybernated and their browser gets active and generates asession_ping
without anypage_visit
.
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.
Attribute | Description | Example |
---|---|---|
city | Name of the city from which the user is visiting your website. | Little Rock |
state | Name of the state/region from which the user is visiting your website. | Arkansas |
country | Name of the country from which the user is visiting your website. | United States |
latitude | Latitude from which the user is visiting your website. | 80.5293 |
longitude | Longitude from which the user is visiting your website. | 40.5293 |
source | Name 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 | |
referrer | Url of the platform from which the user visited your website. | |
campaign_id | Automatically-generated ID of the campaign that brought the customer on your website. More about UTM parameters | |
utm_campaign | UTM 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. | autumn_campaign |
utm_source | UTM code of the platform from which the user visited your website. More about UTM parameters | facebook_ads |
utm_medium | UTM code of the campaign method used to bring the customer on your website. More about UTM parameters | email / push_notification |
utm_content | UTM code of the content that brought the customer on your website. More about UTM parameters | banner / logolink / product-feed |
utm_term | UTM code based on terms defining the product. Present if the campaign redirected the customer on a particular product page. More about UTM parameters | subject-STREETWEAR-category-Clothing-T-shirts-Everyday-With + sleeve-brand-Nike + men |
gclid | Google 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 |
ip | IP address of the user who visited your website. | 129.233.109.145 |
device | Mobile device from which the user visited your website. If the visit was not through a mobile device then it is marked as "other". | Iphone |
os | Operating system of the device through which the user visited your website. | Android |
browser | Browser through which the user visited your website. | Chrome |
location | URL of the page where the user's session started. | |
path | Location URL without the domain and parameters | chaz-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 Exponea and you had tracked your customers using GA before, you can use the GA ID to immediately distinguish between old and new customers also in Exponea. You can get the GA ID from the GA tracker. GA 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 Exponea, 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
andcity
attributes are generally very reliable, however, thelatitude
andlongitude
are often not (as they are a more precise measure of the customer's location).
session_start custom attributes
session_start
is often complemented with these manually-added custom attributes.
Attribute | Description | Example |
---|---|---|
page_load_ms | Number of milliseconds it took to load the page. Read on how to add the attribute to event in the Web tracking article. | 632 |
screen_height | Height of the screen the customer used to visit your webpage. | 900 |
screen_width | Width of the screen the customer used to visit your webpage. | 1440 |
screen_resolution | Resolution of the screen the customer used to visit your webpage. | 1440x900 |
version | Version of a browser the customer used to visit your webpage. | Chrome 75 |
page_visit
page_visit
happens each time the customer opens one of the pages of your website
Attribute | Description | Example |
---|---|---|
device | Mobile device from which the user visited the page. If the visit was not through a mobile device then it is marked as "other". | Iphone |
referrer | Url of the platform from which the user visited the page. | |
os | Operating system of the device through which the user visited the page. | Android |
location | URL of the page that the user visited. | |
browser | Browser 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
orsession_start
events will be generated.
campaign
The campaign
event is generated when working with emails, text messages, push notifications, or webhooks.
Attribute | Description | Example |
---|---|---|
status | Status of the user's interaction with the campaign mainly based on the SMTP code. | |
code | The SMPT code received from a server after you sent out an email. | 422 |
campaign_name | Name you gave to the campaign. | September newsletter |
campaign_id | Automatically-generated ID of the campaign. | 5c584sa5729971a4f992sj9 |
action_type | Type of action node or communication channel used for the campaign. | email/sms/webhook/ads/browser notification/mobile notification/transactional_email/split/facebook message |
action_name | Name 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 email |
action_id | Unique 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. | 12 |
integration_id | Unique ID of the used integration to send the campaign e.g. email provider. | 5bdc56b593bfb20013ea6af3 |
campaign_policy | Name of the policy used in the campaign shown to the particular user. More on policy | default |
subject | Custom-given subject of the e-mail sent in the campaign. | Autumn Collection |
language | Language used in the campaign shown to the particular user. | sk |
recipient | The user's email address where the campaign email was delivered. | |
ip | IP address of the user targeted by the campaign. | 129.233.109.145 |
user-agent | Name of the email client from which the campaign link was clicked from. | Mozilla |
url | URL campaign link that was clicked on by the user. | |
variant | Name of the A/B split variant loaded on the webpage. | Variant A, control group |
new_choice | Information on whether the user saw this variant for the first time. | true/false |
Values of the status attribute
Status | Explanation |
---|---|
enqueued | Exponea enqueued the email to the email provider |
enqueue_failed | Exponea could not enqueue the email |
suppressed | Send suppressed by Exponea; by either frequency or consent policy, or by suppression lists. |
delivered | Email provider confirmed delivery |
opened | The email was opened = pixel in the email was loaded. |
clicked | The customer clicked on a link inside the email. This also includes clicking on the unsubscribe link. |
soft_bounced, dropped | The email provider notified Exponea 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, bounced | Email provider notified Exponea that the email was bounced with a permanent error. This may happen for example due to the email adress being a non-existent one. |
preblocked | The mail service provider had put the domain on the suppression list and so emails from the domain will not be delivered to the customer. |
complained | Email provider notified Exponea that the customer marked the email as "Spam" |
unsubscribed | |
sent | The message was submitted to the network for delivery. |
failed | Communication error between Exponea and the email provider |
closed | |
incoming_message | Text of an SMS reply from the campaign recipient upon activating two-way messaging. |
rejected | The provider notified Exponea that the message was rejected for delivery. |
success |
Which status attributes are generated by what tools
Status | SMS (CM Telecom) | SMS (Sinch) | Webhooks | Ads | Browser Push | Mobile Push | |
---|---|---|---|---|---|---|---|
enqueued | Yes | / | Yes | / | / | / | / |
enqueue_failed | Yes | / | Yes | / | / | / | / |
suppressed | Yes | / | / | / | / | / | / |
delivered | Yes | / | Yes | / | / | Yes | Yes |
opened | Yes | / | / | / | / | / | / |
clicked | Yes | / | Yes | / | / | Yes | Yes |
soft_bounced | Yes | / | / | / | / | / | / |
hard_bounced | Yes | / | / | / | / | / | / |
preblocked | Yes | / | / | / | / | / | / |
complained | Yes | / | / | / | / | / | / |
unsubscribed | Yes | / | / | / | / | / | / |
sent | / | Yes | / | Yes | / | Yes | Yes |
failed | / | Yes | Yes | Yes | / | Yes | Yes |
closed | / | / | / | / | / | Yes | / |
incoming_message | / | / | Yes | / | / | / | / |
rejected | / | / | Yes | / | / | / | / |
success | / | / | / | / | Yes | / | / |
Values of the code attribute
Code
attribute gives you the SMPT 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 SMPT codes are reliable for most customers, beware that small email providers often send alternative SMPT 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 theopened
event so even if your email seems to be justdelivered
it might, in fact, be opened.


Bounced emails and unsubscribing customers
When an email is bounced, the email_invalid
property is set to true
/yes
. When email_invalid
or unsubscribed
is set to true
/yes
, Exponea won't send emails to those customers, even if they satisfy all other conditions, hence using these attributes manually in conditions is not necessary. This serves to prevent undeliverable emails from being sent, protecting the sender's reputation and spam score.
Bounced and dropped statuses
Statuses of the campaign
event are based on the SMTP error codes received. SMTP error codes starting with 4xx are marked as dropped
, while error codes 5xx stand for bounced
. However, some providers send 5xx marked as dropped
. In these cases, Exponea treats them as bounced emails.
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 name | New status name |
---|---|
dropped | soft_bounced |
soft bounced | soft_bounced |
bounced | hard_bounced |
rejected | preblocked |
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 toin
anddoes not equal
tonot in
and extended with new statuses. - Operators
in
andnot in
have been extended with new statuses.
Rest of the string filters
contains
,does not contain
,starts with
,ends with
andmatches 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]


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
Attribute | Description | Example |
---|---|---|
question | Question given in the survey. | How likely are you to recommend Exponea to your friends? |
answer | Answer given by the user in the survey. (has value only if the customer answers the question) | Very likely. |
interaction | Information on whether the user filled and sent the survey. | true |
survey name | Name you gave to the survey. | Satisfaction survey |
survey_id | Randomly generated ID of the survey, | 5c584sa5729971a4f992sj9 |
question_index | Order 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
Attribute | Description | Example |
---|---|---|
source_internal_ids | Two IDs that merged together. | 5c584sa5729971a4f992sj9, 5c584sa5729971a4f992sj9 |
destination_internal_id | The ID resulting from the merger (the older one from the two original ones). | 5c584sa5729971a4f992sj9 |
original_external_ids | Two IDs for external platforms that merged together. | {"cookie":[google_analytics |
final_external_ids | The ID for external platforms resulting from the merger (the older one from the two original ones). | {"cookie":[google_analytics |
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
Attribute | Description | Example |
---|---|---|
variant | Name of the A/B split variant loaded on the webpage. | Variant A/control group |
variant_id | Automatically-generated ID of the variant. | c584sa5729971a4f992sj9 |
location | URL of the particular variant of the user sees. | http://eshop.exponea.com/chaz-kangeroo-hoodie-variant-a.html |
device | Mobile 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 |
os | Operating system of the device through which the user sees the particular variant. | Windows |
browser | Browser through which the the user sees the particular variant. | Chrome |
experiment
experiment
happens when an experiment is shown to the customer. More on experiments
Attribute | Description | Example |
---|---|---|
experiment_name | Custom-given name of the experiment. | Experiment 1 |
experiment_id | Automatically-generated ID of the experiment. | 584sa5729971a4f992sj9 |
variant_name | Name of the A/B split variant used in the experiment loaded on the webpage. | Variant A |
variant_id | Automatically-generated ID of the variant used in the experiment loaded on the webpage. | c584sa5729971a4f992sj9 |
action | Nature 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 |
location | URL of the page with the experiment. | http://eshop.exponea.com/chaz-kangeroo-hoodie-experiment-1.html |
path | Location URL without the domain and parameters | chaz-kangeroo-hoodie-experiment-1.html |
device | Mobile 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 |
os | Operating system of the device through which the user sees the page with the experiment. | Windows |
browser | Browser 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 Data management.
Attribute | Description | Example |
---|---|---|
source | Software through which the user's information was anonymized. | events_ext_api |
access_group_id | Level of access rights of the person who anonymized the user's information. | Group_B |
Updated 2 days ago