User Attributes | Kevel Audience

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 or 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.

Customers can send any user attribute relevant to their business, using any value they choose. However, for Demographic Data, we recommend following a specific schema to ensure a better navigational experience in Audience.

Attribute Naming

While attribute values are unrestricted, attribute names must be valid identifiers: they have to start with a letter or an underscore and may otherwise contain only letters, numbers, underscores (_) and dots (.). See Attribute Name Requirements for details and examples.

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.

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.

note

The category-specific attribute names go through a normalization process in order to become valid identifiers to use inside segmentation rules.

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 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.

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.

RFM

The RFM attributes classify users in 0-10 buckets based on their Recency, Frequency and Monetary Value 10-quantiles.

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.

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.

Demographic Attributes

The Audience UI is prepared to receive a set of demographic user attributes. Note that Audience does not generate these attributes, they have to be explicitly sent.

Attribute name Type Description
gender String Gender of the user (E.g. "female").
ageBand String Interval of ages (E.g. "Under 15").
annualIncome Number Value of annual income.