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.
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. |
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 events to consider for the attribute.
For example, to have an attribute which counts the number of events in the past
week, a period of 7
should be defined here.
Considerations
Attributes should be looked at as data aggregators, they should contain the necessary information to be later filtered by the segmentation rule.
Once created, new tracking events will start populating the configured attribute in the user's profiles. Additionally, we will also process all past events from the last 3 months.
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 | Timestamp | Timestamp of when the next purchase is estimated to occur. |
predictions.nextPurchase.<category> | Timestamp | Timestamp of when the next purchase is estimated to occur for a specific category . |
The category-specific attribute names go through the same normalization process as discussed in the Product interaction attributes.
Churn Factor
Attribute name | Type | Description |
---|---|---|
performance.churnFactor | Number | A factor of the distance to the customer's predicted purchase interval. |
performance.churnFactor.<category> | Number | A factor of the distance to the customer's predicted purchase interval for a specific category. |
The category-specific attribute names go through the same normalization process as discussed in the Product interaction attributes.
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.
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 support specialist 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.
Likelihood to Interact with Email
Attribute name | Type | Description |
---|---|---|
predictions.likelihoodToClickOnEmail.14days | Number | Value between 0-1 representing the likelihood to click on email in the next 14 days. |
predictions.likelihoodToOpenEmail.14days | Number | Value between 0-1 representing the likelihood to open an email in the next 14 days. |
predictions.likelihoodToUnsubscribeFromEmail.14days | Number | Value between 0-1 representing the likelihood to unsubscribe in the next 14 days. |
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. |
Custom Events also generate attributes based on the customType
of the event.
Attribute name | Type | Description |
---|---|---|
events.custom.<customType> .latest.timestamp | Timestamp | Time of the most recent custom event with the custom type customType (E.g events.custom.bannerclick.latest.timestamp). |
events.custom.<customType> .first.timestamp | Timestamp | Time of the first custom event with the custom type customType (E.g events.custom.bannerclick.first.timestamp). |
events.custom.<customType> .history | Array of Timestamp | Timestamps when custom event with the custom type customType was performed, rounded to the day (E.g events.custom.bannerclick.history). |
events.custom.<customType> .total.count | Number | Number of custom events with the custom type customType performed all time (E.g events.custom.bannerclick.total.count). |
events.custom.<customType> .7days.count | Number | Number of custom events with the custom type customType performed in the last 7 days (E.g events.custom.bannerclick.7days.count). |
events.custom.<customType> .28days.count | Number | Number of custom events with the custom type customType performed in the last 28 days (E.g events.custom.bannerclick.28days.count). |
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 |
---|---|---|
ordersTotal (Deprecated) | Number | Sum of all orders' price in the system's default currency. Deprecated - Use orders.openOrFulfilled.total . |
ordersAvg (Deprecated) | Number | Average of all orders' price in the system's default currency. Deprecated - Use orders.openOrFulfilled.average . |
completedOrders (Deprecated) | Number | Number of completed orders. Deprecated - Use orders.openOrFulfilled.count . |
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. |
Purchases
Attribute name | Type | Description |
---|---|---|
purchaseTotal | Number | Sum of all purchases' price in the system's default currency. |
purchaseAvg | Number | Average of all purchases' price in the system's default currency. |
events.purchase.latest.value | Number | Value of the latest purchase in the system's defaut currency. |
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. |
Product Interaction (Deprecated)
The following attributes are deprecated and their use should be avoided, feel free to visit the deprecation guide for more information.
Attribute name | Type | Description |
---|---|---|
brands.<brand> .<eventType> .list | Array of Timestamp | List of the 5 latest timestamp for when a eventType occurred for that product brand (E.g. brands.Nike.productView.list ). |
categories.<category> .<eventType> .list | Array of Timestamp | List of the 5 latest timestamp for when a eventType occurred for that product category (E.g. brands.Shirts.productView.list ). |
sizes.<size> .<eventType> .list | Array of Timestamp | List of the 5 latest timestamp for when a eventType occurred for that product size (E.g. brands.XL.productView.list ). |
productInteraction.customFields.list.<list> .<eventType> .list | Array of Timestamp | List of the 5 latest timestamp for when a eventType occurred for that product list (E.g. productInteraction.customFields.list.Trousers_32__47__32_Jeans.productView.list ). |
Attribute names derived from events like the ones above (E.g. "brand", "category", "sizes") 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
.
Activations
Attribute name | Type | Description |
---|---|---|
activations.last.timestamp | Timestamp | Time of the most recent activation. |
activations.first.timestamp | Timestamp | Time of the first activation. |