Real User Monitoring (RUM) provides full visibility into how end users experience every digital transaction across web, mobile, and single-page applications.
This page explains how RUM consumption is calculated, and how you can manage your RUM spend in Dynatrace.
The unit of measurement for RUM consumption is sessions per application per hour, plus the number of session properties that are captured within those sessions.
This is measured using:
A user session (or just "session") represents one user's visit to an application. A user session summarizes user interactions and technical events that occur during that visit. One user session can span multiple applications, across both web and mobile components.
For more information, see User sessions.
An application (or just "app") is a customer-defined logical entity in Dynatrace, used to monitor part or all of a customer-facing application. Dynatrace captures user sessions for web, mobile, and custom applications. It has an end-user interface and receives real user traffic.
For more information, see Applications.
A session property is metadata that provides information about your application's performance, which Dynatrace collects during a specific RUM session.
For more information, see Capture event and session properties for web frontends.
As an example, a user visits a retail website to make a purchase.
The user:
Because sessions are billed per application per hour, four total sessions are consumed, see the figure below.

The following example demonstrates how costs are calculated for RUM sessions.
Calculations are based on the following list prices (which may differ from your rate card prices):
One month is equivalent to 30 days.
The monitored entity is a single web application.
If you enable Real User Monitoring at the list price, your monthly costs would be:
If you enable Real User Monitoring and 20% (720,000) of the total sessions have Real User Monitoring Session Replay enabled, your monthly costs would be:
If you define 30 session properties, your monthly costs would be:
Dynatrace provides various options to help you understand and analyze your organization's consumption of RUM capabilities.
License managers can view usage and costs in Account Management.
Go to Account Management > Subscription > Overview > Cost and usage details > Usage summary and select the appropriate category, whether Real User Monitoring, Real User Monitoring with Session Replay, or Real User Monitoring Property.
For more information about the subscription overview UI, see Subscription overview (Dynatrace Platform Subscription).

Billing usage events (BUEs, billing_usage_event) are system events emitted by Dynatrace into the dt.system.events data space.
You can use DQL to query BUEs, and analyze usage and cost for Real User Monitoring capabilities without re-applying billing rules or session-counting logic.
BUEs represent already-calculated, billable usage for DPS capabilities (not any configuration or potential usage), and are aligned with what is shown in Account Management and on invoices. Therefore, they're the recommended data source for understanding RUM-related consumption.
Billing usage events contain:
The table below describes billing usage events for the three RUM capabilities.
| Capability | usageAmount | Counting rules |
|---|---|---|
Real User Monitoring | The sessions that are billed at the Real User Monitoring rate, for the given application and time window. | All counting rules are already applied (per application, per hour, bounced sessions excluded). |
Real User Monitoring with Session Replay | The sessions that are billed at the Real User Monitoring with Session Replay rate, for the given application and time window. | Only sessions where Session Replay was enabled. |
Real User Monitoring Property | The billable property occurrences across sessions. | Only properties beyond the included 20 per application are counted, and only when they're present in a session. |
You can use billing usage events as the authoritative source when building cost allocation, usage analysis, or cost transparency views:
Here are some example DQL queries for various use cases. You can use these queries as-is, or modify them to meet your needs.
Total Real User Monitoring usage over time
fetch dt.system.events| filter event.kind == "BILLING_USAGE_EVENT" and event.type == "Real User Monitoring"| dedup event.id| summarize totalUsage = sum(billed_sessions), by:{bin(timestamp, 1d)}
Total usage per capability (all applications)
fetch dt.system.events| filter event.kind == "BILLING_USAGE_EVENT"| filter event.type == "Real User Monitoring" orevent.type == "Real User Monitoring with Session Replay" orevent.type == "Real User Monitoring Property"| fieldsAddweb_or_mobile = coalesce(dt.entity.application, dt.entity.device_application),platform = if(isNotNull(dt.entity.application), "Web", else: "Mobile")| dedup event.id| summarizeRUM = sum(billed_sessions),Replay = sum(billed_replay_sessions),Property = sum(billed_property_sessions),by:{platform, web_or_mobile, event.type}
Total usage per capability for a single application
fetch dt.system.events| filter event.kind == "BILLING_USAGE_EVENT"| filter event.type == "Real User Monitoring" orevent.type == "Real User Monitoring with Session Replay" orevent.type == "Real User Monitoring Property"| fieldsAddweb_or_mobile = coalesce(dt.entity.application, dt.entity.device_application),platform = if(isNotNull(dt.entity.application), "Web", else: "Mobile")| filter web_or_mobile == "APPLICATION-DC92E74A7A844E6E"| dedup event.id| summarizeRUM = sum(billed_sessions),Replay = sum(billed_replay_sessions),Property = sum(billed_property_sessions),by:{platform, web_or_mobile}
Real User Monitoring usage per application
fetch dt.system.events| filter event.kind == "BILLING_USAGE_EVENT" and event.type == "Real User Monitoring"| fieldsAddweb_or_mobile = coalesce(dt.entity.application, dt.entity.device_application),platform = if(isNotNull(dt.entity.application), "Web", else: "Mobile")| dedup event.id| summarize totalUsage = sum(billed_sessions), by:{platform, web_or_mobile}| sort totalUsage desc
Real User Monitoring with Session Replay usage by application
fetch dt.system.events| filter event.kind == "BILLING_USAGE_EVENT" and event.type == "Real User Monitoring with Session Replay"| fieldsAddweb_or_mobile = coalesce(dt.entity.application, dt.entity.device_application),platform = if(isNotNull(dt.entity.application), "Web", else: "Mobile")| dedup event.id| summarize totalUsage = sum(billed_replay_sessions), by:{platform, web_or_mobile}| sort totalUsage desc
Real User Monitoring Property usage by application
fetch dt.system.events| filter event.kind == "BILLING_USAGE_EVENT" and event.type == "Real User Monitoring Property"| fieldsAddweb_or_mobile = coalesce(dt.entity.application, dt.entity.device_application),platform = if(isNotNull(dt.entity.application), "Web", else: "Mobile")| dedup event.id| summarize totalUsage = sum(billed_property_sessions), by:{platform, web_or_mobile}| sort totalUsage desc
You can query insights via the Environment API – Grail Query. Example DQL queries are provided in Query billing usage events with DQL.
No. Sessions that include only a single user action (for example, a page load without further interaction) are considered bounced. Bounced sessions are filtered out and do not contribute toward RUM consumption.
If a user interacts with more than one application during their visit (for example, both a web application and a mobile component), each application counts as one session.
Exception: An interaction with a hybrid mobile application, which spans both mobile and web technologies, is counted as a single session.
Each application includes up to 20 properties at no additional cost. Each property beyond these 20 is billed one time for every session in which that property appears.
Yes. Sessions with Session Replay enabled are billed according to the Real User Monitoring with Session Replay item on your rate card.
Dynatrace counts an additional session every time a new hour of activity begins. For example, a 2.5‑hour visit to the same application counts as three sessions.