Try it free

User and session management

  • Latest Dynatrace
  • How-to guide

Dynatrace allows you to identify users across sessions and devices, manage session lifecycle, and attach properties that apply to all events in a session.

Identify users

Use identifyUser() to tag the current session with a user identifier. This enables you to track individual users across different sessions, browsers, and devices.

Important considerations

  • Not persisted—the user tag is not stored. You must call identifyUser() for every new session.
  • Automatic re-tagging—when a session splits due to idle or duration timeout, the subsequent session is automatically re-tagged with the same user identifier.
  • Privacy—consider privacy regulations when choosing what identifier to use. Hashed or anonymized IDs may be preferable.

When the user closes the app or when privacy settings change, sessions are not automatically re-tagged. You must call identifyUser() again after the new session starts.

Consider basic usage

// After user logs in
Dynatrace.identifyUser("user@example.com")
// Or use an internal user ID
Dynatrace.identifyUser("user-12345")
// After user logs in
Dynatrace.identifyUser("user@example.com");
// Or use an internal user ID
Dynatrace.identifyUser("user-12345");

Remove user identification

To remove the user tag (for example, on logout), pass null or an empty string:

fun logout() {
// Clear user identification
Dynatrace.identifyUser(null)
}
public void logout() {
// Clear user identification
Dynatrace.identifyUser(null);
}

Use session properties

Session properties are key-value pairs that apply to all events in the current session. Use them to add context that characterizes the user's session.

Allow session properties

Before you can send session properties from your application, you must first allow each property key in Dynatrace. Any properties that are not allowed will be dropped during ingest.

To allow a key, follow the steps in Allow API-reported properties.

Send session properties

Dynatrace.sendSessionPropertyEvent(
SessionPropertyEventData()
.addSessionProperty("session_properties.product_tier", "premium")
.addSessionProperty("session_properties.loyalty_status", "gold")
.addSessionProperty("session_properties.onboarding_complete", true)
)
Dynatrace.sendSessionPropertyEvent(
new SessionPropertyEventData()
.addSessionProperty("session_properties.product_tier", "premium")
.addSessionProperty("session_properties.loyalty_status", "gold")
.addSessionProperty("session_properties.onboarding_complete", true)
);

Property naming rules

Keys must have the session_properties. prefix and follow the rules specified in Event and session properties.

Update session properties

You can send session properties multiple times during a session. However, if you send the same property multiple times, session aggregation keeps only one value (first or last, depending on configuration).

// Initial properties
Dynatrace.sendSessionPropertyEvent(
SessionPropertyEventData()
.addSessionProperty("session_properties.cart_value", 0)
)
// Update after user adds items
Dynatrace.sendSessionPropertyEvent(
SessionPropertyEventData()
.addSessionProperty("session_properties.cart_value", 149.99)
)
// Initial properties
Dynatrace.sendSessionPropertyEvent(
new SessionPropertyEventData()
.addSessionProperty("session_properties.cart_value", 0)
);
// Update after user adds items
Dynatrace.sendSessionPropertyEvent(
new SessionPropertyEventData()
.addSessionProperty("session_properties.cart_value", 149.99)
);
Related tags
Digital Experience