Skip to main content

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.

create-attribute-rules

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.

AggregationDescription
ExistsSets attribute to true if at least one event matched the provided rule.
Most RecentKeep the value of the extracted field for the most recent event.
CountCount all events matching the provided rule.
Unique list concatenationJoin unique extracted values in a list. When the list exceeds the maximum size, values from older events are discarded.
SumSum the values of extracted fields.
OlderKeep the value of the extracted field for the oldest event.
MaxKeep the highest extracted number field.
MinKeep the lowest extracted number field.
AverageKeep the average of the extracted number fields.
Map MergeMerge the object attribute according to a given strategy.
AndApply the logical AND operation between the extracted fields.
OrApply 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 nameTypeDescription
predictions.nextPurchase.v2.allTimestampTimestamp of when the next purchase is estimated to occur.
predictions.nextPurchase.v2.<category_id>TimestampTimestamp 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.

For example: calças_adulto / Slim is normalized to cal_231_as__adulto_32__47__32_Slim.

Churn Factor

Attribute nameTypeDescription
performance.churnFactor.v2.allNumberA factor of the distance to the customer's predicted purchase interval.
performance.churnFactor.v2.<category_id>NumberA 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.
note

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 nameTypeDescription
predictions.purchaseCycle.v2.millis.allNumberThe average number of milliseconds between a user's consecutive purchases.
predictions.purchaseCycle.v2.days.allNumberThe average number of days between a user's consecutive purchases.
predictions.purchaseCycle.v2.millis.<category_id>NumberThe 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>NumberThe 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.
note

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 nameTypeDescription
performance.rfm.recency.12monthsNumberValue between 0-10 for the Recency attribute of the RFM Model based on data from the last year.
performance.rfm.frequency.12monthsNumberValue between 0-10 for the Frequency attribute of the RFM Model based on data from the last year.
performance.rfm.monetaryvalue.12monthsNumberValue between 0-10 for the Monetary Value attribute of the RFM Model based on data from the last year.
performance.rfm.recency.allTimeNumberValue between 0-10 for the Recency attribute of the RFM Model.
performance.rfm.frequency.allTimeNumberValue between 0-10 for the Frequency attribute of the RFM Model.
performance.rfm.monetaryvalue.allTimeNumberValue between 0-10 for the Monetary Value attribute of the RFM Model.

Lifetime Value

Attribute nameTypeDescription
predictions.lifetimeValue.12monthsNumberThe predicted monetary value of the customer in the system's currency for next 12 months.
predictions.lifetimeValue.allTimeNumberThe predicted monetary value of the customer in the system's currency for all time.

Likelihood to Buy

Attribute nameTypeDescription
predictions.likelihoodToBuy.all.1dayNumberValue between 0-1 representing the likelihood to buy in the next day.
predictions.likelihoodToBuy.all.2daysNumberValue between 0-1 representing the likelihood to buy in the next 2 days.
predictions.likelihoodToBuy.all.7daysNumberValue between 0-1 representing the likelihood to buy in the next 7 days.
predictions.likelihoodToBuy.all.14daysNumberValue 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 nameTypeDescription
predictions.likelihoodToBuy.<targeted_category>.1dayNumberValue between 0-1 representing the likelihood to buy a product of the targeted category in the next day.
predictions.likelihoodToBuy.<targeted_category>.2daysNumberValue between 0-1 representing the likelihood to buy a product of the targeted category in the next 2 days.
predictions.likelihoodToBuy.<targeted_category>.7daysNumberValue between 0-1 representing the likelihood to buy a product of the targeted category in the next 7 days.
predictions.likelihoodToBuy.<targeted_category>.14daysNumberValue 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 nameTypeDescription
events.<eventType>.latest.timestampTimestampTime of the most recent event of the type eventType (E.g events.pageView.latest.timestamp).
events.<eventType>.first.timestampTimestampTime of the first event of the type eventType (E.g events.pageView.first.timestamp).
events.<eventType>.historyArray of TimestampTimestamps when eventType was performed, rounded to the day (E.g events.pageView.history).
events.<eventType>.countNumberNumber of events of the type eventType performed all time (E.g events.pageView.count).
events.<eventType>.7days.countNumberNumber of events of the type eventType performed in the last 7 days (E.g events.pageView.7days.count).
events.<eventType>.28days.countNumberNumber of events of the type eventType performed in the last 28 days (E.g events.pageView.28days.count).
events.all.countNumberNumber of events performed all time.
events.all.7days.countNumberNumber of events performed in the last 7 days.
events.all.28days.countNumberNumber of events performed in the last 28 days.
events.last.timestampTimestampTime of the most recent event.
events.first.timestampTimestampTime of the first event.

Interaction Type

Attribute nameTypeDescription
events.last.active.timestampTimestampTime of the most recent event of interaction type 'active'.
events.first.active.timestampTimestampTime of the first event of interaction type 'active'.
events.last.passive.timestampTimestampTime of the most recent event of interaction type 'passive'.
events.first.passive.timestampTimestampTime of the first event of interaction type 'passive'.
events.last.outbound.timestampTimestampTime of the most recent event of interaction type 'outbound'.
events.first.outbound.timestampTimestampTime of the first event of interaction type 'outbound'.

Orders

Attribute nameTypeDescription
orders.all.countNumberCount of all orders, independently of their status.
orders.openOrFulfilled.countNumberCount of orders with at least one line item with the Placed, Paid or Fulfilled status.
orders.canceled.countNumberCount of orders with at least one line item with the Cancelled status.
orders.refunded.countNumberCount of orders with at least one line item with the Refunded status.
orders.openOrFulfilled.totalNumberSum 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.averageNumberAverage 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.firstTimestampCreation timestamp of the first order.
orders.openOrFulfilled.timestamp.firstTimestampCreation timestamp of the first order with at least one line item with Placed, Paid or Fulfilled status.
orders.canceled.timestamp.firstTimestampCreation timestamp of the first order with at least one line item with Cancelled status .
orders.refunded.timestamp.firstTimestampCreation timestamp of the first order with at least one line item with Refunded status.
orders.all.timestamp.lastTimestampCreation timestamp of the last order.
orders.openOrFulfilled.timestamp.lastTimestampCreation timestamp of the last order with at least one line item with Placed, Paid or Fulfilled status.
orders.canceled.timestamp.lastTimestampCreation timestamp of the last order with at least one line item with status Cancelled.
orders.refunded.timestamp.lastTimestampCreation timestamp of the last order with at least one line item with status Refunded.
orders.all.timestamp.historyArray of TimestampArray of creation timestamps from all the orders.
orders.openOrFulfilled.timestamp.historyArray of TimestampArray of creation timestamps from all the orders with at least one line item with Placed, Paid or Fulfilled status.
orders.canceled.timestamp.historyArray of TimestampArray of creation timestamps from all the orders with at least one line item with Cancelled status.
orders.refunded.timestamp.historyArray of TimestampArray of creation timestamps from all the orders with at least one line item with Refunded status.

Email and Campaigns

Attribute nameTypeDescription
events.emailView.campaignId.latestStringName of the most recently seen campaignId from a emailView.
events.emailClick.campaignId.latestStringName of the most recently seen campaignId from a emailClick.

Geo Location

Attribute nameTypeDescription
geo.country.latestStringName of the country of the most recent event.
geo.country.listArray of StringList of the 5 latest countries from the most recent events.
geo.city.latestStringName of the city of the most recent event.
geo.city.listArray of StringList of the 5 latest cities from the most recent events.
geo.latlong.latestArray of NumberCoordinates of the most recent event.
geo.latlong.listArray of ArrayList of the 5 latest coordinates from the most recent events.

Devices

Attribute nameTypeDescription
devices.type.latestStringThe latest type of device used (E.g. "smartphone", "pc").
devices.type.listArray of StringList of the 5 latest types of devices used.
devices.family.latestStringThe latest device family used (E.g. "Mac", "iPhone").
devices.family.listArray of StringList of the latest device families used.
devices.os.latestStringThe latest operating system used (E.g. "Android", "Mac OS X").
devices.os.listArray of StringList of the 5 latest operating systems used.
devices.userAgent.latestStringThe latest normalized user-agent used (E.g. "Samsung Internet", "Safari")
devices.userAgent.listArray of StringList of the 5 latest user-agents used.

Activations

Attribute nameTypeDescription
activations.last.timestampTimestampTime of the most recent activation.
activations.first.timestampTimestampTime of the first activation.