Skip to main content


Classification is the ability to consider things that are known about an individual at a point in time in order to make decisions such as what content to display. For example, if an individual living in California is visiting a web site, you might classify the individual as a resident of the United States so that you can present that person with offers that are available in that market.

Classification involves assigning values to visitor dimensions. Uniform supports a variety of dimensions, each designed to accomodate a specific kind of information.

Using classification

Classification is essential to personalization. Without being able to classify individuals, configuring personalized experiences is impractical. You would be setting up personalization for each person individually. Classification enables you to identify things that groups of individuals have in common so you can target those groups.

Uniform uses classification to power personalization, but classification can also be used in other ways. For example, Once Uniform classifies an individual, that classification can be shared with other systems, like a customer data platform (CDP) or an analytics engine.

Visitor dimensions

Nearly any data source can be integrated into Uniform. Create visitor profiles based on the content elements they see, or integrate external data sources such as CDPs, GeoIP data, corporate APIs, or any other custom data.

Once the data is integrated into Uniform, you have a visitor profile that can be used as the basis for personalization.


A signal is a set of criteria that define a visitor sending you a signal that they should be classified in a specific way. When a signal's criteria are matched, the visitor receives a visitor score in the signal's dimension.

Signal criteria focus on observable visitor behavior, such as:

  • Having a specific query string in the current URL (
  • Having a specific cookie value (my_cookie=123)
  • Performing an event that is tracked by an analytics platform such as Google Analytics
  • Visiting a specific page/route (/about)

A signal can consist of multiple criteria that are combined using logical operators, for example:

  • The visitor is from Canada and is a newsletter subscriber
  • The visitor is from Canada and (the province is Quebec or the province is Manitoba)

The score from a signal has a duration, which defines how long the score lasts once given. The duration can be:

  • permanent: the score persists as long as possible (depending on browser restrictions)
  • session: the score persists until the visitor is idle for a period of time defined when your site loads the Uniform Context script
  • transient: the score is given only when the criteria are true, and is removed as soon as they are not

When a signal is activated, the amount of score given is controlled by two settings: strength and cap. The strength is the amount of score that is given each time the criteria are true. For example with a signal such as 'the current page is /about' with a strength of 50, each time the visitor visits /about, they gain 50 points in the signal dimension. Cap sets an upper bound on how much score you can get for a given signal. If our /about signal had a cap of 125, then the visitor would get 50, then 100, then 125 points and stop growing. Together strength and cap provide powerful tools to gather visitor behavior without letting any particular signal overshadow other important signals.


For information on how to use signals, see the signals guide.

Criteria types

Uniform supports the following criteria types:

CookieData stored on visitor's computers while browsing your siteWhen a visitor's browser has a cookie set on your site called SEGMENT value leads.
Current page

Matches against the current page or route a visitor is on.

Combines well with Page View Count = 1 to capture landing pages. Value checked does not include domain or query string data.

When the current page is the /products/widgets page.
EventEvents sent to integrated analytics in the browser. The signal duration determines how the tracker determines if the event was triggered:
  • Current session: The check considers events triggered in the current session.
  • Permanent: The check considers events triggered in any session.
  • Transient: This criteria type does not make sense for a signal with a transient duration.
When a Google Analytics event is triggered with name signup_form.
GroupA logical grouping, which can contain child criteria in an AND/OR relationship.Current page is /foo AND (event = bar OR query = campaign). The () is a grouping of criteria.
Page view count

Matches on the number of pages a visitor has visited. The signal duration determines how the tracker determines the page view count:

  • Current session: The check considers page views from current session.
  • Permanent: The check considers the total number of page views across all sessions.
  • Transient: This criteria type does not make sense for a signal with a transient duration.

Combines well with Current Page and a match on count = 1 to create a Landing Page signal.

When a visitor has visited more than 3 pages during their current visit.
Query stringParameters added to the visitor's current URL by developers or marketing tools.When a page is visited that contains utm_campaign=ppcquery string value in the URL, such as
QuirksMatch against values provided by integrations such as GeoIP or custom values set by developers.When the visitor country quirk equals Canada.


Similar in concept to Signals, Enrichments are also a visitor score dimension. Unlike signals their score is not directly tied to a specific event or page: they are set either by a visitor viewing specific content that is tagged with the enrichment, or by a programmatic event (a developer writes code that explicitly says "add 50 score to the [enrichment name] enrichment").

Enrichments allow you to define a visitor behavior profile by tagging content items with enrichment values and automatically collecting a profile based on the content a visitor has seen. As an example you might define an Enrichment Category called "Profile" and values such as "Developer", "Marketing", "Sales", etc. Then in Uniform Canvas or your connected headless CMS, you can tag content items with these profile values that are relevant to that visitor profile. The visitor is then automatically given score in the tagged enrichment upon viewing that content.

Programmatic usage of enrichments allows you to define custom profiles for a visitor that have numeric scores. As an example on a commerce site you might wish to automatically track and select a product color based on the visitor's previous indications of color preference. In this case a Color Enrichment Category could be defined and populated with values such as "Red", "Blue", "Green", etc. When a customer chooses a color, the developer tells Uniform Context's SDK to add score to that color's enrichment value thus building up a profile of the colors the customer likes. Then when showing products that have colors, the developer can read the values of color enrichments and automatically select the most relevant preference.


For information on how to use enrichments, see the enrichments guide.


Sometimes a visitor has attributes that are not numbers that need to be matched on, such as GeoIP country or a custom classification from an ML model. For this you can use a Quirk. Quirks are key-value pairs that are stored about a visitor. They are set automatically when used with integrations such as edge services that provide GeoIP data, but can also be set by developers for custom quirk values such as data from an internal backend API that maps customer types.

Unlike signals or enrichments, quirks are not score dimensions. Quirks inform scores by being used as a criteria in a signal such as "the visitor is from Canada." Quirks may also be read using the Context SDK, enabling them to be used for custom logic or display purposes.


We do not recommend storing any sensitive data in a quirk, such as PII data. With default settings quirks never leave the visitor's device, but they are not encrypted or intended to be secure.


For information on how to use quirks, see the quirks guide.

Aggregations (intents & audiences)

Intents and Audiences are a way to create aggregations of visitor scores. They allow you to create score dimensions that are composed of the sum of other dimensions' scores. Aggregations enable creating high level abstractions of visitor behavior based on many inputs. This allows marketers to focus personalization investments as needed between very specific hyper-personalization (one campaign) and less time-intensive archetypical personalization (an entire audience).

An Intent is a specific reason that a visitor is visiting. For example "Buying shoes" or "Sign up for service." Visitors indicate their intent by performing actions that trigger one or more signals or enrichments that tell us why they are here. Defining such an intent within Context lets us target visitors with intent-specific content.

An Audience is a major classification of a visitor into an archetype or persona, for example "Developers", "Marketers", or "Jen the wholesaler." Audiences can be made up of any combination of signals, enrichments, or intents which allows them to become broad archetypes.

Both kinds of aggregation enable advanced aggregation using signs on their inputs. A positive (+) sign means the input's score is added to the aggregate score. A negative (-) sign means the input's score is subtracted from the aggregate score. A clear sign means the input blocks the aggregate from having any score if the input has a score.

Negative signs enable expressing a relationship where an action reduces the certainty of the intent or audience. For example a visitor submitting a sales contact form might reduce their score in the 'Competitor' audience. You can also use negative signs to create mutually exclusive intents or audiences, by referencing each other with a negative sign. In this model score in one aggregate is always subtracted from the other, and vice versa (e.g. 'Wholesale' and 'Consumer' might be mutually exclusive).

Clear signs enable advanced scenarios such as building funnels. To build a funnel, a series of intents is created to represent the steps in the funnel. Later steps in the funnel are added as clear sign inputs to the earlier steps, resulting in a funnel where only the current stage has a score. Clear signs can also be useful to prevent conflicting actions from being suggested.


For information on how to use aggregations, see the intents guide and audiences guide.

Score decay

It can be desirable to decay visitor scores over time so that newer activities are stronger than older ones. With default settings, Context does not perform decay but it is a simple addition to the configuration to add a decay algorithm. Context ships with a simple linear decay implementation that decays scores at a linear rate the longer a visitor is inactive. With default linear decay settings of a 1-day grace period, 30-day decay duration, and 95% decay cap for example:

  • Return visit in less than 1 day: no decay - within grace period
  • Return visit in 16 days: decay is 50% of total score in each dimension (1 day grace + 15 days is half of 30-day default decay rate)
  • Return visit in 31 days: decay is 95% of total score in each dimension (1 day grace + 30 days, decay cap 95%)

For information on how to use quirks, see the score decay guide.

Use cases


Coming soon.