User Attributes
User Attributes hold information about a specific user. These attributes can be derived from multiple data sources and can be used as Activated Parameters and to enable Segmentation.
Audience provides an expansive collection of Default Attributes that apply to a broad set of general use cases. For more granular control it is possible to create Custom Attributes that are derived from real-time events. In addition, it is also possible to import attributes from the Offline User Import and to automatically generate Predictive Attributes by configuring Predictions.
Custom Attributes
Custom Attributes are generated by processing the user's events. Configuring a new attribute requires one filter rule to identify which event to consider, an extraction strategy to identify what data to extract from the events, and an aggregation strategy, to define how to make the information available in the user profile. Custom Attributes will typically be available in the Segment Builder UI within 4 hours after creation.
Definition
Custom User Attribute definition is done through the dashboard attribute builder which provides an easy way to create complex event filter rules and specify the attribute extraction strategy visually using information regarding existing events. For more advanced use cases it is possible to write rules manually.
Aggregation
The aggregation strategy to use when combining the extracted value with existing information. Some of the aggregations allow specifying the value that is extracted from the event, in such cases a field selection helper is available. If a custom extraction logic is required, it is possible to define a custom JSONPath expression.
Aggregation | Description |
---|---|
Exists | Sets attribute to true if at least one event matched the provided rule. |
Most Recent | Keep the value of the extracted field for the most recent event. |
Count | Count all events matching the provided rule. |
Unique list concatenation | Join unique extracted values in a list. When the list exceeds the maximum size, values from older events are discarded. |
Sum | Sum the values of extracted fields. |
Older | Keep the value of the extracted field for the oldest event. |
Max | Keep the highest extracted number field. |
Min | Keep the lowest extracted number field. |
Average | Keep the average of the extracted number fields. |
Map Merge | Merge the object attribute according to a given strategy. |
And | Apply the logical AND operation between the extracted fields. |
Or | Apply the logical OR operation between the extracted fields. |
Round Timestamp to the Start of the Day
When creating a User attribute, it is common to look for user activity patterns at a day granularity. For example, "List of days the user visited the website". Such an attribute does not care for how many times the user visited the website in a single day, but rather on which days the user visited the site. This can be achieved with a "Unique list concatenation" aggregation and extracting the Timestamp field while enabling the "Round timestamp to the start of the day" option. The result is a list of timestamps for the first moment of each day, hence, avoiding duplicate entries for the same day.
Default Value
The default value to return if the attribute does not exists for a given user.
Attributes with no default value require special care when creating segment rules,
since they can be undefined
. You can check for undefined
values in segment rules using
the isDefined function.
Period
The period (in days) of past events to consider for the creation of the attribute.
For example, to create a segment of "users who purchased shampoo at least 3 times in the last 7 days," you should define the period as 7
days.
Considerations
Attributes should be viewed as data aggregators, containing the necessary information for later filtering by segmentation rules.
Once the attribute is created, incoming tracking events will immediately populate the attribute. At the same time, we start processing events for up to 100 days and the whole order history to populate the attribute with historical data.
More events and orders in the system result in a longer time to complete the historical processing. If the whole history is irrelevant for an attribute, e.g., "people who purchased shampoo in the last 7 days", we recommend defining a period in the attribute definition so that we can exclude older, irrelevant events.
Attributes begin processing a few minutes after they are defined. If a new one is created, this delay is reset, allowing you to define multiple attributes and allowing Audience to compute them together. Once processing begins, new attributes are put on hold until the previous ones are computed. Additional attributes will be processed after the previous ones are complete.
Predictive Attributes
Predictive User Attributes are automatically generated and continuously updated by Predictions and require no configuration after the Prediction is created. Note that for the Default Predictions the created attributes are readily available for usage and require no interaction with the Prediction itself.
Event Predictions
The Event Predictions generate user attributes with the name pattern predictions.<event-prediction-id>.<prediction-interval>
.
These attributes can be used to segment users with a certain likelihood of triggering an event which follows the event filter of the Event Prediction in the future.
In the Segment Builder, these attributes are available under Predictions > Event Predictions.
Default Predictions
In this section, you can find an overview of all the predictive attributes that are generated by our Default Predictions.
Next Purchase
Attribute name | Type | Description |
---|---|---|
predictions.nextPurchase.v2.all | Timestamp | Timestamp of when the next purchase is estimated to occur. |
predictions.nextPurchase.v2.<category_id> | Timestamp | Timestamp of when the next purchase is estimated to occur for a given category. Contact your Customer Success Manager to enable next purchase predictions for specific categories. |
The category-specific attribute names go through a normalization process in order to become valid identifiers to use inside segmentation rules.
For example: calças_adulto / Slim
is normalized to cal_231_as__adulto_32__47__32_Slim
.
Churn Factor
Attribute name | Type | Description |
---|---|---|
performance.churnFactor.v2.all | Number | A factor of the distance to the customer's predicted purchase interval. |
performance.churnFactor.v2.<category_id> | Number | A factor of the distance to the customer's predicted purchase interval for a given category. Contact your Customer Success Manager to enable churn factor estimations for specific categories. |
The category-specific attribute names go through the same normalization process as discussed in the Next Purchase.
The churn factor enables identifying the current state of a customer's predicted purchase cycle. It is used as a factor
of the distance to the predicted purchase interval. It is calculated as (<current-timestamp> -
<last-purchase-timestamp>) / <predicted-interval-between-purchases>
. It can assume any number larger than or equal
to 0. For example:
- A churn factor of 0.0 means that the user has just purchased something;
- A churn factor of 0.1 means that the user has very recently purchased something, or, putting it another way, that it is 10% closer to its predicted next purchase;
- A churn factor of 0.5 means that the user is halfway in its predicted purchase cycle;
- A churn factor of 1.0 means that the user is expected to buy very soon, or should have already bought something;
- A churn factor of 2.0 means that the user has exceeded its predicted purchase cycle twice.
Purchase Cycle
Attribute name | Type | Description |
---|---|---|
predictions.purchaseCycle.v2.millis.all | Number | The average number of milliseconds between a user's consecutive purchases. |
predictions.purchaseCycle.v2.days.all | Number | The average number of days between a user's consecutive purchases. |
predictions.purchaseCycle.v2.millis.<category_id> | Number | The average number of milliseconds between a user's consecutive purchases of a given category. Contact your Customer Success Manager to enable purchase cycle calculations for specific categories. |
predictions.purchaseCycle.v2.days.<category_id> | Number | The average number of days between a user's consecutive purchases of a given category. Contact your Customer Success Manager to enable purchase cycle calculations for specific categories. |
The category-specific attribute names go through the same normalization process as discussed in the Next Purchase.
RFM
The RFM attributes classify users in 0-10 buckets based on their Recency, Frequency and Monetary Value 10-quantiles.
Since the value distribution can get skewed over time (e.g. due to old users that churned or changes in the business model), those attributes are available both for all-time and last year percentiles.
Such attributes will only be available in users with at least one purchase during the relevant time window.
Attribute name | Type | Description |
---|---|---|
performance.rfm.recency.12months | Number | Value between 0-10 for the Recency attribute of the RFM Model based on data from the last year. |
performance.rfm.frequency.12months | Number | Value between 0-10 for the Frequency attribute of the RFM Model based on data from the last year. |
performance.rfm.monetaryvalue.12months | Number | Value between 0-10 for the Monetary Value attribute of the RFM Model based on data from the last year. |
performance.rfm.recency.allTime | Number | Value between 0-10 for the Recency attribute of the RFM Model. |
performance.rfm.frequency.allTime | Number | Value between 0-10 for the Frequency attribute of the RFM Model. |
performance.rfm.monetaryvalue.allTime | Number | Value between 0-10 for the Monetary Value attribute of the RFM Model. |
Lifetime Value
Attribute name | Type | Description |
---|---|---|
predictions.lifetimeValue.12months | Number | The predicted monetary value of the customer in the system's currency for next 12 months. |
predictions.lifetimeValue.allTime | Number | The predicted monetary value of the customer in the system's currency for all time. |
Likelihood to Buy
Attribute name | Type | Description |
---|---|---|
predictions.likelihoodToBuy.all.1day | Number | Value between 0-1 representing the likelihood to buy in the next day. |
predictions.likelihoodToBuy.all.2days | Number | Value between 0-1 representing the likelihood to buy in the next 2 days. |
predictions.likelihoodToBuy.all.7days | Number | Value between 0-1 representing the likelihood to buy in the next 7 days. |
predictions.likelihoodToBuy.all.14days | Number | Value between 0-1 representing the likelihood to buy in the next 14 days. |
Likelihood to Buy a Category
These attributes are available along a dedicated model to predict the likelihood to buy a product from a single or a set of categories. These attributes are not generated by default, as the strategies adopted for training the models need to be configured on a per-customer basis. To create segments using this strategy contact your Customer Success Manager and we will work with you to set it up.
Attribute name | Type | Description |
---|---|---|
predictions.likelihoodToBuy.<targeted_category>.1day | Number | Value between 0-1 representing the likelihood to buy a product of the targeted category in the next day. |
predictions.likelihoodToBuy.<targeted_category>.2days | Number | Value between 0-1 representing the likelihood to buy a product of the targeted category in the next 2 days. |
predictions.likelihoodToBuy.<targeted_category>.7days | Number | Value between 0-1 representing the likelihood to buy a product of the targeted category in the next 7 days. |
predictions.likelihoodToBuy.<targeted_category>.14days | Number | Value between 0-1 representing the likelihood to buy a product of the targeted category in the next 14 days. |
Since each machine learning model is trained independently, there might be some discrepancy between these values when compared to the more generic likelihood to buy attributes. This is expected and does not affect the overall performance of targeted segments.
Default Attributes
In addition to the attributes you can import via Offline User Import, Kevel Audience automatically generates a series of attributes per event for a user.
Accumulators and Temporal Attributes per Event Type
Attribute name | Type | Description |
---|---|---|
events.<eventType> .latest.timestamp | Timestamp | Time of the most recent event of the type eventType (E.g events.pageView.latest.timestamp). |
events.<eventType> .first.timestamp | Timestamp | Time of the first event of the type eventType (E.g events.pageView.first.timestamp). |
events.<eventType> .history | Array of Timestamp | Timestamps when eventType was performed, rounded to the day (E.g events.pageView.history). |
events.<eventType> .count | Number | Number of events of the type eventType performed all time (E.g events.pageView.count). |
events.<eventType> .7days.count | Number | Number of events of the type eventType performed in the last 7 days (E.g events.pageView.7days.count). |
events.<eventType> .28days.count | Number | Number of events of the type eventType performed in the last 28 days (E.g events.pageView.28days.count). |
events.all.count | Number | Number of events performed all time. |
events.all.7days.count | Number | Number of events performed in the last 7 days. |
events.all.28days.count | Number | Number of events performed in the last 28 days. |
events.last.timestamp | Timestamp | Time of the most recent event. |
events.first.timestamp | Timestamp | Time of the first event. |
Interaction Type
Attribute name | Type | Description |
---|---|---|
events.last.active.timestamp | Timestamp | Time of the most recent event of interaction type 'active'. |
events.first.active.timestamp | Timestamp | Time of the first event of interaction type 'active'. |
events.last.passive.timestamp | Timestamp | Time of the most recent event of interaction type 'passive'. |
events.first.passive.timestamp | Timestamp | Time of the first event of interaction type 'passive'. |
events.last.outbound.timestamp | Timestamp | Time of the most recent event of interaction type 'outbound'. |
events.first.outbound.timestamp | Timestamp | Time of the first event of interaction type 'outbound'. |
Orders
Attribute name | Type | Description |
---|---|---|
orders.all.count | Number | Count of all orders, independently of their status. |
orders.openOrFulfilled.count | Number | Count of orders with at least one line item with the Placed , Paid or Fulfilled status. |
orders.canceled.count | Number | Count of orders with at least one line item with the Cancelled status. |
orders.refunded.count | Number | Count of orders with at least one line item with the Refunded status. |
orders.openOrFulfilled.total | Number | Sum of the price value, in the system's default currency, of orders with at least one line item with the Placed , Paid or Fulfilled status. |
orders.openOrFulfilled.average | Number | Average of the price value, in the system's default currency, of orders with at least one line item with the Placed , Paid or Fulfilled status. |
orders.all.timestamp.first | Timestamp | Creation timestamp of the first order. |
orders.openOrFulfilled.timestamp.first | Timestamp | Creation timestamp of the first order with at least one line item with Placed , Paid or Fulfilled status. |
orders.canceled.timestamp.first | Timestamp | Creation timestamp of the first order with at least one line item with Cancelled status . |
orders.refunded.timestamp.first | Timestamp | Creation timestamp of the first order with at least one line item with Refunded status. |
orders.all.timestamp.last | Timestamp | Creation timestamp of the last order. |
orders.openOrFulfilled.timestamp.last | Timestamp | Creation timestamp of the last order with at least one line item with Placed , Paid or Fulfilled status. |
orders.canceled.timestamp.last | Timestamp | Creation timestamp of the last order with at least one line item with status Cancelled . |
orders.refunded.timestamp.last | Timestamp | Creation timestamp of the last order with at least one line item with status Refunded . |
orders.all.timestamp.history | Array of Timestamp | Array of creation timestamps from all the orders. |
orders.openOrFulfilled.timestamp.history | Array of Timestamp | Array of creation timestamps from all the orders with at least one line item with Placed , Paid or Fulfilled status. |
orders.canceled.timestamp.history | Array of Timestamp | Array of creation timestamps from all the orders with at least one line item with Cancelled status. |
orders.refunded.timestamp.history | Array of Timestamp | Array of creation timestamps from all the orders with at least one line item with Refunded status. |
Email and Campaigns
Attribute name | Type | Description |
---|---|---|
events.emailView.campaignId.latest | String | Name of the most recently seen campaignId from a emailView. |
events.emailClick.campaignId.latest | String | Name of the most recently seen campaignId from a emailClick. |
Geo Location
Attribute name | Type | Description |
---|---|---|
geo.country.latest | String | Name of the country of the most recent event. |
geo.country.list | Array of String | List of the 5 latest countries from the most recent events. |
geo.city.latest | String | Name of the city of the most recent event. |
geo.city.list | Array of String | List of the 5 latest cities from the most recent events. |
geo.latlong.latest | Array of Number | Coordinates of the most recent event. |
geo.latlong.list | Array of Array | List of the 5 latest coordinates from the most recent events. |
Devices
Attribute name | Type | Description |
---|---|---|
devices.type.latest | String | The latest type of device used (E.g. "smartphone", "pc"). |
devices.type.list | Array of String | List of the 5 latest types of devices used. |
devices.family.latest | String | The latest device family used (E.g. "Mac", "iPhone"). |
devices.family.list | Array of String | List of the latest device families used. |
devices.os.latest | String | The latest operating system used (E.g. "Android", "Mac OS X"). |
devices.os.list | Array of String | List of the 5 latest operating systems used. |
devices.userAgent.latest | String | The latest normalized user-agent used (E.g. "Samsung Internet", "Safari") |
devices.userAgent.list | Array of String | List of the 5 latest user-agents used. |
Activations
Attribute name | Type | Description |
---|---|---|
activations.last.timestamp | Timestamp | Time of the most recent activation. |
activations.first.timestamp | Timestamp | Time of the first activation. |