Profile building

Data activation gives you a live, complete view of each person who interacts with your site or app. A user profile combines identifiers, traits, and behavior from multiple sources and keeps them updated in real time as new events arrive.

Sources of profile data

Profiles are built from two kinds of inputs:

  • Tracked data: The tracking endpoint records interactions such as page views, goal completions, and custom events. This data becomes the behavioral layer of the user profile, producing a record of how a person navigates and interacts with your site or app.

  • Enrichment data: Data activation can pull extra user context from your other systems through import APIs, including the profile attributes import endpoint and import webhooks. This mechanism lets you incorporate third-party data, such as CRM traits, billing status, or offline purchases, into your user profiles.

Note: Event dimensions and product dimensions are not stored in user profiles.

Profile components

Each user profile is more than just a record of visits. It brings together identifiers, traits, and behaviors that define how a person interacts with your business. These components work together to create a complete, flexible picture of each user:

Identity and core identifiers

Profiles store identifiers that link activity across sessions and devices, such as cookie ID and user ID. Learn more: Identity resolution.

User profile attributes

User profiles auto-populate attributes from tracked events: consent management settings, browser and device details, last activity time, and marketing data (channel, campaign, etc.). Each attribute includes a default aggregation, so values are useful without extra setup. Learn more: Profile attributes.

Custom dimension attributes

You can define custom dimension attributes to reflect your own business needs. They let you analyze user behavior in ways that go beyond the default attributes. You set them up in the Analytics module, for example, to track industry-specific metrics or custom categories.
Once you add a session dimension in Analytics, the custom dimension attributes automatically appear in user profiles as unique string lists. [Learn more about data types and aggregation methods.] (#data-types-and-aggregation-methods).

Custom attributes

Custom attributes let you capture any type of data that goes beyond the user profile attributes or custom dimension attributes. They also give you the option to reuse predefined attributes but apply different aggregation methods, so you can control how data is stored and analyzed. You can fill custom attributes with data from many sources, such as web tracking, import APIs, SDKs, offline purchases, or other customer touchpoints.

Data types and aggregation methods

Every attribute has a data type and an aggregation that decides how new values update the stored value.

Chronological aggregations

These aggregation methods focus on the order of values:

  • First: Keeps the earliest recorded value.

  • Last: Keeps the most recent value.

  • First & Last: Stores both the earliest and the most recent values.

List aggregations

These are useful when you want to keep a sequence of values:

  • List: Stores up to 1000 values in chronological order.

  • Unique list: Stores up to 1000 values in order, but removes duplicates.

Mathematical aggregations

Useful for numeric comparisons and totals:

  • Minimum: Stores the smallest value.

  • Maximum: Stores the largest value.

  • Sum: Adds values together into a cumulative total.

Data type compatibility matrix

Not every aggregation works with every data type. The table below shows which combinations are supported:

Data TypeFirstLastFirst & LastListUnique ListMinMaxSum
String
Number
Boolean
Datetime
IP

Legend: ✅ = Supported, ❌ = Not Supported

Aggregation examples

The examples below show how different aggregation methods update a profile when new events are received. Each one compares the profile before and after an event.

Initial profile state

Before diving into examples, here’s what a newly created, empty profile looks like:

Initial Profile
Empty Profile
cookie_id: A
No attributes yet

Chronological aggregation examples

First value aggregation

Profile Before Event Profile After
Profile
cookie_id: A
referrer_first: google.com
Event
cookie_id: A
referrer: facebook.com
Profile
cookie_id: A
referrer_first: google.com
unchanged - first value kept

Last value aggregation

Profile Before Event Profile After
Profile
cookie_id: A
device_last: mobile
Event
cookie_id: A
device: desktop
Profile
cookie_id: A
device_last: desktop
updated to latest value

First and last value aggregation

Profile Before Event Profile After
Profile
cookie_id: A
utm_source_first: email
utm_source_last: social
Event
cookie_id: A
utm_source: search
Profile
cookie_id: A
utm_source_first: email
utm_source_last: search
last value updated

List aggregation examples

List aggregation

Profile Before Event Profile After
Profile
cookie_id: A
page_urls: [/home, /products]
with timestamps
Event
cookie_id: A
page_url: /checkout
Profile
cookie_id: A
page_urls: [/home, /products, /checkout]
new value appended

Unique list aggregation

Profile Before Event Profile After
Profile
cookie_id: A
categories_unique: [electronics, books]
Event
cookie_id: A
category: electronics
Profile
cookie_id: A
categories_unique: [electronics, books]
duplicate ignored

Mathematical aggregation examples

Sum aggregation

Profile Before Event Profile After
Profile
cookie_id: A
total_order_value: 125.50
Event
cookie_id: A
order_value: 75.25
Profile
cookie_id: A
total_order_value: 200.75
125.50 + 75.25

Minimum value aggregation

Profile Before Event Profile After
Profile
cookie_id: A
min_order_value: 60.00
Event
cookie_id: A
order_value: 45.00
Profile
cookie_id: A
min_order_value: 45.00
new minimum found

Maximum value aggregation

Profile Before Event Profile After
Profile
cookie_id: A
max_order_value: 60.00
Event
cookie_id: A
order_value: 75.00
Profile
cookie_id: A
max_order_value: 75.00
new maximum found

Combined aggregation example

This example shows how multiple attributes with different aggregation methods work together in a single profile:

Profile Before Event Profile After
Profile
cookie_id: A
utm_source_first: email
utm_source_last: email
page_urls: [/home]
total_order_value: 25.00
Event
cookie_id: A
utm_source: social
page_url: /products
order_value: 50.00
Profile
cookie_id: A
utm_source_first: email
utm_source_last: social
page_urls: [/home, /products]
total_order_value: 75.00
multiple aggregations updated

Profile merging

If two or more profiles share any identifier (such as a user ID or cookie ID) during event processing, data activation automatically merges them into one profile:

The profile merging process works in a few steps:

  1. Primary profile selection:
    The oldest profile (by creation date) is kept as the main one. Others are treated as secondary.

  2. Attribute merging:
    Data from secondary profiles is merged into the primary profile, following each attribute’s aggregation rule. For example, “first” keeps the earliest value, “last” replaces it with the most recent, lists are combined (with duplicates removed for unique lists), and numeric fields like “sum”, “min”, or “max” are recalculated.

  3. Identifier consolidation:
    All unique identifiers from the merged profiles are combined into the primary profile, ensuring that future events with any of these identifiers will be associated with the unified profile.

  4. Profile cleanup:
    Secondary profiles are deleted to avoid duplication.

  5. Audience and activation updates:
    Audience membership is recalculated, and activation history from all merged profiles is combined.

Limits (broken profiles)

A profile is considered broken if:

  • It contains more than 1000 identifiers (user IDs, cookie IDs), or
  • The total profile size exceeds 512 KB.

When a profile becomes broken, it is automatically removed from the system to maintain performance and data integrity. Any subsequent tracking data that uses identifiers from the removed (broken) profile will result in the creation of a new profile. This keeps performance stable and data manageable.

Profile retention

Profile retention is based on the time elapsed since the profile was last updated, with different retention periods depending on the type of identifier present:

  • Profiles with a user ID are kept for 13 months after the last update, since a user ID usually represents a known person.
  • Profiles without a user ID (cookie ID only) are deleted after 1 month of inactivity, because cookies can expire or be cleared more often.

Privacy and consent

The profile collection follows strict privacy and consent rules to stay compliant with data protection laws.

Consent settings: You decide which consents are needed for each personalization or activation.

Anonymous tracking: If tracking is set to anonymous, profiles aren’t created.