Skip to main content

Anonymous Tracking

info

This feature is available since v1.3.

Anonymous tracking is a tracker feature that enables anonymizing various user and session identifiers to support user privacy in case consent for tracking the identifiers is not given.

On mobile, the following user and session identifiers can be anonymized:

  • Client-side user identifiers:
    • userId in the Session context entity
    • IDFA identifiers (appleIdfa and appleIdfv for iOS, androidIdfa for Android) in the Platform context entity
    • userId, domainUserId, networkUserId, ipAddress if they are set in Subject
  • Client-side session identifiers: sessionId and previousSessionId in Session entity.
  • Server-side user identifiers: network_userid and user_ipaddress event properties.

There are several levels to the anonymisation depending on which of the three categories are affected:

1. Full client-side anonymisationโ€‹

In this case, we want to anonymise both the client-side user identifiers as well as the client-side session identifiers. This means disabling the Session context altogether and enabling user anonymisation:

const tracker = createTracker(
'appTracker',
{endpoint: COLLECTOR_URL},
{
trackerConfig: {
sessionContext: false, // Session context entity won't be added to events
userAnonymisation: true // User identifiers in Platform context (IDFA and IDFV) will be anonymised
}
}
);

2. Client-side anonymisation with session trackingโ€‹

This setting disables client-side user identifiers but tracks session information. In practice, this means that events track the Session context entity but the userId property is a null UUID (00000000-0000-0000-0000-000000000000). In case Platform context is enabled, the IDFA identifiers will not be present.

const tracker = createTracker(
'appTracker',
{endpoint: COLLECTOR_URL},
{
trackerConfig: {
sessionContext: true, // Session context is tracked with the session ID
userAnonymisation: true // User identifiers in Session and Platform context are anonymised
}
}
);

3. Server-side anonymisationโ€‹

Server-side anonymisation affects user identifiers set server-side. In particular, these are the network_userid property set in server-side cookie and the user IP address. You can anonymise the properties using the serverAnonymisation flag in EmitterConfiguration:

const tracker = createTracker(
'appTracker',
{endpoint: COLLECTOR_URL},
{
emitterConfig: {
serverAnonymisation: true
}
}
);

Setting the flag will add a SP-Anonymous HTTP header to requests sent to the Snowplow collector. The Snowplow pipeline will take care of anonymising the identifiers.