Forum Discussion
How to build a Usage Metrics Dashboard for Power BI Embedded customers?
- 8 months ago
Hi Baqa ,
You can get user and report level usage, but not page-level usage for embedded reports. Power BI REST APIs and the Microsoft 365 / Power BI Activity Log reliably capture governance-level events, such as report viewed, dataset refreshed, export actions, sharing and access events. These logs work for embedded scenarios as well, but they do not expose page navigation or in-report interactions. They are not real-time and have limited retention.
In embedded setups, activity may appear under a service principal or app identity, depending on the authentication model. So, APIs and audit logs are suitable for answering “who accessed which report and when”, but not “which pages were used or how users interacted with the report.”
For embedded analytics, the supported approach is to use the Power BI Embedded JavaScript SDK provided by Microsoft. The SDK exposes client-side events such as report loaded, page changed, errors during rendering or querying. These events are not stored by the Power BI service, but they are intentionally exposed so the hosting application can capture them.
In practice, this means:
Instrumenting the hosting application with the Embedded JS SDK
Logging page-level and session-level events
Correlating those events with Power BI artifacts (workspace, report, tenant)
This is the only supported way to achieve page-level usage insights for embedded reports today.Power BI Activity Logs that is accessible via REST API or PowerShell are the supported mechanism for governance-level usage such as report views, exports, and refreshes, but they do not capture page-level interactions. For embedded scenarios, page navigation and client-side errors are intentionally exposed via the Power BI Embedded JavaScript SDK, which is the supported way to capture interaction level telemetry in the hosting application. Azure Monitor and Log Analytics are the supported tools for monitoring Power BI Embedded capacity health, throttling, performance, and failures. Microsoft guidance is to combine these components such as: Activity Logs for audit, Embedded SDK events for interaction telemetry, and Azure Monitor for capacity and reliability using consistent tenant, report, and session identifiers, and to export native logs to customer-owned Azure storage for extended retention and analysis.
Hope this helps,
Chaithra E.
Power BI’s Activity Log / REST APIs can give you tenant-level events (e.g., report viewed) and governance signals, but they’re not reliable for page-level usage in Embedded, and in app-owns-data they often reflect the service principal rather than the real end user.
For an Embedded usage dashboard, the standard approach is:
Use the Power BI JavaScript SDK events in your app to capture real usage:
loaded, rendered, pageChanged, dataSelected, and error
Log: customerId, userId (or hashed), reportId, pageName, timestamps, duration, error details
Send those events to Application Insights / Log Analytics (or your telemetry DB), then load that telemetry into Fabric/Power BI for reporting.
Recommended architecture:
App (embed) → JS SDK events + app errors → App Insights/Log Analytics
(Optional) Activity Log API → same store for admin/audit context
Build a small “Telemetry” model → your two pages (overall + per-customer) and error rates/top errors.
Thanks cengizhanarslan
- AshokKunwar8 months ago
Continued Contributor
Hii Baqa
Hi! Glad that worked. Could you please click 'Accept as Solution' on my previous reply so I can close this out and help other community members find the fix?