on 25 Aug 2026 10:06 AM
By default, user sessions in the new RUM Experience (Experience Vitals) are identified by a generated ID rather than a meaningful user name. This article explains how to capture a user name from the page using a CSS selector, verify the capture, and then use OpenPipeline® processing rules to map that value to the user identifier field so it appears in the User and sessions view.
Note: This configuration applies only to newly ingested data. Existing sessions are not retroactively updated.
In this part, you configure the application in Experience Vitals to read the user name from the page using a CSS selector and store it as an event property.
username.#root > div > header > div > p. This tells Dynatrace which DOM element to read.innerText. This extracts the visible text content of the matched element.Tip: To verify the selector before saving, open your browser's developer tools, go to the Console tab, and run document.querySelector('YOUR_SELECTOR').innerText. If the correct user name appears, the selector is valid.
Before setting up OpenPipeline, confirm that the event property arrives in Dynatrace by querying for it in a Notebook.
In Dynatrace, go to Notebooks and open a new notebook.
Add a DQL tile and run the following query, replacing username with the property key you configured in Part 1:
fetch user.events
| filter isNotNull(event_properties.username)
| fieldsAdd event_properties.username
Confirm that the event_properties.username column is populated with the expected user names.Note: From the image, you can see that it also captured additional text, "Hi, " that you may not want. Do not worry, as we can create a clean up rule later.
If the column is empty, go back to Part 1 and verify the CSS selector and the innerText processing step are configured correctly. Generate new user actions in the monitored application (for example, load a page while signed in) and then re-run the query.
In this part, you create an OpenPipeline pipeline under User events and add a DQL processing rule to map the captured property to the user.identifier field.
Map user name.Set user identifier from username.isNotNull(event_properties.username)
fieldsAdd user.identifier = event_properties.username
Note: If your CSS selector captures additional text alongside the user name—for example, a greeting prefix such as "Hi, Priya", use replaceString to strip the unwanted text: fieldsAdd user.identifier = replaceString(event_properties.username, "Hi, ", "")
OpenPipeline uses the default pipeline unless a routing rule sends data to a specific pipeline. In this part, you create a routing rule that directs the relevant user events through the pipeline you created in Part 3.
Change user names.matchesValue(frontend.name, "Your App Name")
After completing Parts 1–4, generate new user sessions by interacting with the monitored application while signed in. Then confirm the user name appears in Experience Vitals.
Note: Only sessions ingested after the pipeline and routing rule were published display the mapped user name. Earlier sessions retain the generated identifier.
You can also verify with DQL:
fetch user.sessions, from: now()-2h
| fields
user.identifier,
dt.rum.session.id,
frontend.name,
dt.rum.application.type
| filter isNotNull(user.identifier)
| limit 100
The event_properties.username column is empty in the Notebook query.
The event property is captured but user.identifier is still empty after setting up the pipeline.
Sessions show the user name in DQL but not in the Experience Vitals UI.
If this article did not resolve your issue, open a support case and include:
event_properties.username.user.identifier.Additional resources:
@Aaron_Schultz I know this is more a question for the PM, but since the CSS capturing is there, why did they not keep the option to capture user tags in the same way as it was in RUM classic?