Power BI Embedded Analytics: Enterprise Implementation Guide 2026
Expert Insight from Errin O'Connor
28+ years Microsoft consulting | 4x Microsoft Press bestselling author | Power BI Embedded implementations for Fortune 500 companies across healthcare, finance, and government
Quick Answer
Power BI Embedded enables organizations to embed interactive analytics directly into custom applications, portals, and SaaS products—without requiring end users to hold Power BI licenses. In 2026, Microsoft Fabric F-SKUs have replaced the legacy A-SKU and P-SKU models, with F64 being the minimum capacity that includes Power BI content viewing rights for unlimited users. Enterprise implementations require careful architecture decisions around embedding patterns (App Owns Data vs. User Owns Data), row-level security for multi-tenant data isolation, JavaScript SDK integration, capacity planning, and autoscaling. Based on 28+ years of Microsoft consulting experience implementing embedded analytics for Fortune 500 companies, the most successful deployments combine service principal authentication, dynamic RLS with tenant-specific embed tokens, and proactive capacity monitoring—typically achieving sub-3-second report load times at scale.

Why Power BI Embedded Matters for Enterprise Applications
Embedding analytics directly into your application is no longer a differentiator—it's a baseline expectation. Customers expect data-driven insights inside the tools they already use, not as a separate destination requiring another login. Whether you're an ISV building a SaaS product, a healthcare system delivering patient analytics to clinicians, or a financial services firm providing portfolio dashboards to clients, Power BI Embedded turns your application into an intelligent platform.
After implementing Power BI Embedded for organizations ranging from 50-user startups to Fortune 500 enterprises with 10,000+ concurrent users across regulated industries, I've seen firsthand what separates successful embedded analytics deployments from costly failures. The technology is powerful—but the architecture decisions you make in the first 30 days determine whether your implementation scales gracefully or collapses under production load.
This guide covers everything an enterprise architect or technical decision-maker needs to know in 2026: the Fabric SKU consolidation, embedding patterns, the JavaScript SDK, multi-tenant row-level security, capacity planning, and real-world architecture patterns drawn from hundreds of production deployments.
Embed for Customers vs. Embed for Your Organization
Microsoft defines two primary embedding scenarios, and choosing the wrong one is the most expensive mistake teams make. Each pattern has fundamentally different authentication flows, licensing implications, and security models.
App Owns Data (Embed for Your Customers)
In the App Owns Data pattern, your application authenticates to Power BI using a service principal (Azure AD app registration). End users never interact with Power BI directly and do not need Power BI accounts or Microsoft identities. Your application generates embed tokens that grant time-limited access to specific reports, dashboards, or tiles.
- Best for: ISV SaaS products, customer-facing portals, third-party integrations, external analytics
- Authentication: Service principal with client secret or certificate—no user interaction required
- Licensing: Requires Fabric F-SKU (or legacy A-SKU) capacity. End users need zero Power BI licenses
- Branding: Full white-label control—remove all Power BI branding, apply custom themes, control the toolbar
- Security: Row-level security enforced via effective identity in the embed token; your app controls all access
User Owns Data (Embed for Your Organization)
In the User Owns Data pattern, each user authenticates with their own Microsoft Entra ID (formerly Azure AD) credentials. The embedded report respects that user's existing Power BI permissions. This pattern embeds Power BI content into internal applications, intranets, or SharePoint sites.
- Best for: Internal portals, employee dashboards, SharePoint embedding, Teams tabs
- Authentication: Microsoft Entra ID interactive sign-in with OAuth 2.0 token flow
- Licensing: Each viewer needs a Power BI Pro license (or the capacity must be F64+ which includes viewing rights)
- Branding: Limited customization—Power BI UI elements remain visible
- Security: Standard Power BI RLS applies based on the signed-in user's identity
Common Mistake: Choosing the Wrong Pattern
We frequently encounter organizations that chose User Owns Data for a customer-facing product, forcing external users to create Microsoft accounts and purchase Power BI Pro licenses. This kills adoption. If your end users are external customers who don't have Microsoft identities, App Owns Data with a service principal is the only viable path. EPC Group's architecture assessment identifies the correct pattern in week one, avoiding costly mid-project pivots.
Fabric F-SKU Pricing: What Replaced A-SKUs and P-SKUs in 2026
Microsoft's licensing landscape has undergone significant consolidation. Power BI Premium P-SKUs were fully retired in late 2025, and customers on P-SKUs have been transitioned to Fabric capacity. Power BI Embedded A-SKUs remain available—Microsoft reversed its original plan to force A-SKU retirement—but the strategic direction is clearly toward Fabric F-SKUs as the unified capacity model.
Here's the critical pricing detail that catches many enterprises off guard: only F64 and higher SKUs include Power BI content viewing rights without per-user licensing. If you deploy on F32 or below, every person viewing an embedded report must hold a Power BI Pro license ($10/user/month)—which defeats the purpose of embed-for-customers scenarios.
| Fabric SKU | Capacity Units | Legacy Equivalent | PBI Viewer Rights | Typical Use Case |
|---|---|---|---|---|
| F2 | 2 CUs | – | Pro license required | Dev/test only |
| F8 | 8 CUs | EM1 / A1 | Pro license required | Small team, PoC |
| F16 | 16 CUs | EM2 / A2 | Pro license required | Departmental |
| F32 | 32 CUs | EM3 / A3 | Pro license required | Mid-size org |
| F64 | 64 CUs | A4 / P1 | Included | Enterprise embed |
| F128 | 128 CUs | A5 / P2 | Included | Large-scale embed |
| F256 | 256 CUs | A6 / P3 | Included | Enterprise-wide |
| F512+ | 512+ CUs | A7+ | Included | Global deployments |
Cost optimization tip: Reserved instances provide approximately 40% savings over pay-as-you-go pricing. For production workloads with predictable demand, one-year reservations deliver significant savings. Combine reserved capacity for baseline load with pay-as-you-go autoscaling for peak periods. EPC Group's capacity planning engagements typically reduce Fabric spend by 30–40% compared to unoptimized deployments.
Power BI JavaScript SDK: Enterprise Integration Patterns
The powerbi-client JavaScript SDK is the front-end library that renders embedded reports, dashboards, tiles, and Q&A experiences inside your application. It provides programmatic control over the embedded content—applying filters, navigating pages, capturing events, and customizing the user experience.
Core Embedding Workflow
The embedding workflow follows a server-client pattern that enterprise architects must understand to build secure, performant solutions:
- Backend: Authenticate with service principal – Your server authenticates to Azure AD using a service principal with client credentials (secret or certificate). This returns an Azure AD access token.
- Backend: Generate embed token – Call the Power BI REST API
GenerateTokenendpoint, passing the report ID, dataset ID, and an effective identity (for RLS). This returns a short-lived embed token. - Backend: Return config to client – Send the embed token, embed URL, and report ID to the browser. Never expose your service principal credentials or Azure AD token to the client.
- Frontend: Initialize SDK – Use
powerbi.embed()to render the report in a container div, passing the embed configuration with token typeEmbed. - Frontend: Handle events – Listen for
loaded,rendered,error, anddataSelectedevents to build interactive experiences and error handling.
Production-Grade SDK Configuration
Beyond the basic embed, enterprise deployments require these SDK configuration practices:
- Token refresh: Embed tokens expire (default 1 hour). Implement a proactive refresh cycle that requests a new token 5 minutes before expiration using the
tokenExpiredevent handler. - Error boundaries: Handle
errorevents gracefully with user-friendly messages and automatic retry logic for transient failures. - Performance settings: Set
tokenType: models.TokenType.Embedfor App Owns Data, enablepageNameto load specific pages, and usefiltersto pre-filter data before rendering. - Toolbar control: Use
settings.barsconfiguration to hide or show the action bar, bookmark bar, and filter pane for a clean white-label experience. - Bootstrap embedding: Use
powerbi.bootstrap()to pre-initialize the iframe before the embed token is ready, reducing perceived load time by 30–40%.
Row-Level Security for Multi-Tenant Embedded Analytics
Row-level security (RLS) is the cornerstone of multi-tenant Power BI Embedded architecture. It ensures that each tenant—whether a customer, department, or partner organization—sees only their data, even though all tenants share the same reports and datasets. Getting RLS wrong in a multi-tenant environment means a data breach. Getting it right means scalable, cost-efficient analytics.
Dynamic RLS with Effective Identity
For App Owns Data scenarios, your application passes an effective identity when generating the embed token. This identity includes the username (typically a tenant ID or customer identifier) and the RLS role to apply. The Power BI dataset contains DAX filter expressions that reference the USERNAME() function, which resolves to the username from the effective identity.
For example, a table-level filter expression like [TenantID] = USERNAME() restricts every query on that table to rows matching the tenant context. When your backend generates an embed token with effective identity username: "TENANT_42" and role "TenantFilter", the engine filters all data to only rows where TenantID equals "TENANT_42".
Two Data Architecture Approaches
- Shared dataset with RLS (pool model): All tenants' data lives in one dataset. RLS filters isolate each tenant. This is cost-efficient (one dataset, one refresh schedule) but requires rigorous RLS testing to prevent data leakage. Best for tenants with similar data structures and moderate data volumes.
- Separate workspaces per tenant (silo model): Each tenant gets a dedicated workspace with isolated datasets. This provides complete data isolation at the infrastructure level but increases management complexity and cost. Best for regulated industries (healthcare, finance) with strict data residency requirements or tenants with vastly different data volumes.
EPC Group's Multi-Tenant Security Framework
For our healthcare and financial services clients, we implement a hybrid approach: separate workspaces for large enterprise tenants with PHI/PII requirements and shared datasets with dynamic RLS for smaller tenants. We layer Object-Level Security (OLS) on top of RLS to hide sensitive columns from specific roles. Every implementation undergoes penetration testing and third-party security audit before production deployment. Our multi-tenant implementations have passed 100% of HIPAA and SOC 2 audits.
Service Principal Profiles at Scale
When managing hundreds or thousands of tenant workspaces, a single service principal becomes a bottleneck. Microsoft's service principal profiles feature allows you to create lightweight sub-identities under a parent service principal. Each profile can be assigned to specific workspaces, enabling granular access control without managing hundreds of Azure AD app registrations. This is essential for ISVs with 1,000+ customer tenants—EPC Group recommends implementing service principal profiles for any deployment exceeding 50 workspaces.
Capacity Planning and Performance Optimization
Capacity planning for Power BI Embedded determines your cost, performance, and user experience. Under-provisioned capacity causes report timeouts and frustrated users. Over-provisioned capacity wastes budget. The goal is right-sizing your Fabric SKU to handle peak concurrent loads while maintaining sub-3-second report rendering.
Sizing Guidelines by User Scale
| Concurrent Users | Recommended SKU | Notes |
|---|---|---|
| 0–100 | F8 – F16 | Simple reports, cached data, low refresh frequency |
| 100–500 | F16 – F32 | Moderate complexity, departmental analytics |
| 500–2,000 | F32 – F64 | Enterprise entry point, mixed workloads |
| 2,000–5,000 | F64 – F128 | Large-scale embed, complex queries, DirectQuery |
| 5,000+ | F128+ | Global SaaS products, real-time analytics |
These are starting points. Actual capacity requirements depend on report complexity (number of visuals, DAX measure complexity), dataset size in memory, refresh frequency, and whether you use Import mode, DirectQuery, or the new Direct Lake mode available in Fabric.
Autoscaling for Peak Loads
Production workloads rarely have flat usage patterns. SaaS applications see Monday morning spikes; financial dashboards peak at market open; healthcare analytics surge during shift changes. Implement autoscaling using the Capacities Update API to programmatically resize your SKU based on real-time CU utilization. Configure Azure Monitor alerts to trigger scale-up when CPU exceeds 80% for 5 minutes and scale-down when it drops below 30% for 15 minutes. This approach can reduce monthly capacity costs by 25–35% compared to static provisioning.
Performance Optimization Checklist
- Limit visuals per page to 8 or fewer – Each visual generates a separate query. More visuals mean more concurrent queries competing for CUs.
- Use Import mode over DirectQuery when possible – Import mode serves data from in-memory cache (sub-second). DirectQuery hits the source database per interaction (seconds to minutes).
- Implement aggregations for large datasets – Pre-aggregated tables serve summary queries 100x faster than scanning detail-level fact tables.
- Configure incremental refresh – Only refresh recent data partitions instead of full dataset reloads. Reduces refresh time by 80–90% for historical datasets.
- Optimize DAX measures – Use variables to avoid redundant calculations, minimize context transitions, and prefer
CALCULATEover iterators for large tables. - Consider Direct Lake mode (Fabric) – Direct Lake reads Parquet files directly from OneLake without importing into the model, combining Import-mode speed with DirectQuery freshness.
Fabric Capacity vs. Dedicated A-SKU: Migration Decision Framework
Microsoft reversed its original plan to retire A-SKUs by absorbing them into Fabric, so existing A-SKU deployments continue to function. However, the strategic direction is unmistakably toward Fabric as the unified analytics platform. Here's how to evaluate whether to migrate now or stay on A-SKUs.
Reasons to Migrate to Fabric F-SKUs Now
- Access to the full Fabric platform: F-SKUs unlock Data Engineering (Spark), Data Science (ML models), Real-Time Analytics, Data Warehouse, and Data Factory—not just Power BI.
- Direct Lake mode: Only available on Fabric capacity. Eliminates the Import vs. DirectQuery tradeoff by reading Parquet files directly from OneLake with near-Import performance.
- New feature investment: Microsoft's development focus is on Fabric. New Power BI features like Copilot integration, enhanced semantic models, and new visual types require Fabric capacity.
- Unified billing: Single capacity covers all Fabric workloads, simplifying cost management compared to separate A-SKU + Synapse + Data Factory billing.
Reasons to Stay on A-SKUs
- Stable production workload: If your embedded analytics deployment is stable and you don't need Fabric-specific features, migration introduces risk without immediate benefit.
- Per-viewer licensing concerns: A-SKUs included Power BI content viewing for all users regardless of SKU size. Migrating to F32 or below introduces per-user licensing costs for viewers.
- No Fabric adoption plans: If your organization only uses Power BI (not Data Engineering, ML, etc.), the additional Fabric capabilities add complexity without value.
A-SKUs map directly to F-SKUs in compute capacity: A1 = F8, A2 = F16, A3 = F32, A4 = F64, A5 = F128, A6 = F256. Performance parity makes migration technically straightforward—the complexity is in licensing implications and organizational readiness for the broader Fabric platform. EPC Group's Fabric Migration Assessment evaluates your specific scenario and provides a cost-benefit analysis with a clear recommendation.
Real-World Architecture Pattern: Multi-Tenant SaaS Embedded Analytics
The following architecture pattern is drawn from an EPC Group implementation for a healthcare SaaS platform serving 500+ hospital clients with embedded analytics. This pattern scales to thousands of tenants while maintaining HIPAA compliance, sub-3-second report rendering, and complete data isolation.
Architecture Components
- Application layer: React SPA with
powerbi-client-reactfor embedding. Handles tenant context, theme customization, and interactive features. - API layer: Azure Functions (Node.js) implementing the embed token service. Authenticates with service principal, generates tenant-scoped embed tokens with effective identity, caches Azure AD tokens for performance.
- Workspace strategy: Hybrid model—large hospital systems (50+ beds) get dedicated workspaces; smaller clinics share pooled workspaces with dynamic RLS filtering by TenantID.
- Dataset management: Parameterized datasets pointing to tenant-specific database schemas. Deployment pipelines automate workspace provisioning for new tenants.
- Security layer: Service principal profiles (one per large tenant workspace), dynamic RLS for pooled workspaces, OLS to hide PHI columns from non-clinical roles, audit logging to Azure Log Analytics.
- Capacity: F128 reserved instance for baseline with autoscaling to F256 during peak hours (7 AM–9 AM shift change). Reserved instance saves $4,000+/month vs. pay-as-you-go.
- Monitoring: Custom Power BI monitoring dashboard tracking CU utilization, embed token generation latency, report render times, and error rates per tenant.
Result: The platform serves 15,000+ daily active users across 500+ healthcare organizations, maintaining average report render times of 2.1 seconds, 99.9% uptime, and zero data isolation incidents across three years of production operation. The healthcare SaaS company credits embedded analytics as the primary driver of their 94% customer retention rate.
2026 Update: Copilot, Direct Lake, and What's Next for Embedded
The embedded analytics landscape is evolving rapidly in 2026. Here are the key developments enterprise architects should plan for:
Copilot in Embedded Reports
Microsoft Copilot is available in Power BI service reports on F64+ capacity and in SharePoint Online embedded experiences. However, Copilot is not yet supported in App Owns Data (embed for customers) scenarios using the JavaScript SDK. Microsoft has indicated this is on the roadmap, but there is no confirmed date. For organizations that need AI-powered natural language querying in customer-facing embedded reports today, EPC Group implements custom Q&A integrations using the Power BI REST API combined with Azure OpenAI for natural language understanding.
Direct Lake Mode
Direct Lake is Fabric's game-changing storage mode that reads Parquet files directly from OneLake without requiring a full data import. For embedded analytics, this means datasets can reflect near-real-time data changes without scheduled refreshes, while maintaining Import-mode query performance. Enterprise customers using Fabric F-SKUs should evaluate Direct Lake for scenarios where data freshness is critical—financial trading dashboards, operational monitoring, and real-time IoT analytics.
Enhanced Embedding APIs
Microsoft continues to expand the JavaScript SDK with new capabilities: improved phased loading for faster perceived performance, enhanced theming APIs for deeper white-label customization, expanded event model for richer application integration, and improved mobile-responsive rendering for embedded reports. Organizations planning new embedded analytics projects should target the latest SDK version (currently v2.23+) to take advantage of these improvements.
Frequently Asked Questions
What is the difference between Power BI Embedded and Power BI Premium?
Power BI Embedded (historically A-SKUs, now Fabric F-SKUs) is designed for ISVs and organizations embedding analytics into external-facing applications where end users do not need Power BI licenses. Power BI Premium (P-SKUs, now deprecated in favor of Fabric capacity) was designed for internal organizational use with per-capacity licensing. As of 2026, Microsoft has retired P-SKUs and consolidated on Fabric F-SKUs. F64 and above include Power BI content viewing rights without per-user licenses, while F32 and below require each viewer to hold a Power BI Pro license.
How much does Power BI Embedded cost in 2026 with Fabric F-SKUs?
Fabric F-SKU pricing starts at approximately $262/month for F2 (pay-as-you-go) and scales up through F4, F8, F16, F32, F64, F128, F256, F512, and F1024. Reserved instances offer roughly 40% savings over pay-as-you-go rates. Each CU costs approximately $0.18/hour, varying by Azure region. For embedding scenarios where you want to avoid per-user licensing, F64 ($8,403/month pay-as-you-go) is the minimum SKU that includes Power BI content viewing rights for unlimited users. EPC Group helps enterprises right-size their capacity to avoid overspending.
What is the difference between App Owns Data and User Owns Data embedding?
App Owns Data (embed for customers) means your application authenticates to Power BI via a service principal, and end users never sign into Power BI directly. This pattern is ideal for ISVs, customer portals, and external-facing applications where users may not have Microsoft accounts. User Owns Data (embed for your organization) requires each user to sign in with their Microsoft Entra ID credentials and hold a Power BI license. This pattern is suited for internal employee portals, intranets, and SharePoint-embedded scenarios. EPC Group recommends App Owns Data for multi-tenant SaaS products and User Owns Data for internal enterprise dashboards.
How do I implement row-level security for multi-tenant Power BI Embedded?
Multi-tenant row-level security (RLS) in Power BI Embedded uses dynamic RLS with DAX filters that compare a TenantID column against an effective identity passed via the JavaScript SDK embed token. The application generates embed tokens with EffectiveIdentity specifying the tenant context, and DAX filters like [TenantID] = USERNAME() restrict data to that tenant. For production, use service principal profiles (one per tenant workspace) for isolation at scale. EPC Group has implemented RLS for multi-tenant environments serving 5,000+ tenant organizations with complete data isolation verified by third-party security audits.
Can I use Copilot in Power BI Embedded reports?
As of early 2026, Microsoft Copilot support in Power BI Embedded is limited. Copilot is fully available in the Power BI service for reports hosted on Fabric F64+ capacity, and it works in SharePoint Online embedded scenarios. However, for App Owns Data (embed for customers) scenarios using the JavaScript SDK, Copilot is not yet supported. Microsoft has indicated this is on the roadmap. For organizations needing AI-powered natural language querying in embedded reports, EPC Group implements custom Q&A experiences using the Power BI REST API and Azure OpenAI as an interim solution.
What capacity should I choose for Power BI Embedded with 1,000 concurrent users?
For 1,000 concurrent users, EPC Group typically recommends starting with an F64 or F128 SKU, depending on report complexity, dataset sizes, and query patterns. Simple dashboards with cached data may work on F64, while complex reports with DirectQuery or large datasets require F128 or higher. Key factors include: number of visuals per page (aim for 8 or fewer), dataset size in memory, refresh frequency, and query complexity. We recommend running a proof-of-concept with the Power BI Capacity Load Assessment Tool, then implementing autoscaling to handle peak loads. Our capacity planning engagement typically saves enterprises 30-40% on Fabric spend.
Should I migrate from A-SKUs to Fabric F-SKUs for Power BI Embedded?
Microsoft reversed its original plan to force A-SKU retirement, so existing A-SKU deployments continue to function. However, EPC Group recommends planning a migration to Fabric F-SKUs for several reasons: Fabric capacity provides access to the full Fabric platform (Data Engineering, Data Science, Real-Time Analytics) beyond just Power BI Embedded, F-SKUs support new features like Direct Lake mode for dramatically faster query performance, and long-term Microsoft investment is focused on Fabric. A-SKUs map directly to F-SKUs in performance and cost (A1 equals F8, A2 equals F16, etc.), making migration straightforward. The critical consideration is that F32 and below require Power BI Pro licenses for viewers, which could increase costs for embed-for-customers scenarios.
How does EPC Group approach enterprise Power BI Embedded implementations?
EPC Group follows a proven four-phase methodology for Power BI Embedded: (1) Architecture Assessment (2 weeks) covering multi-tenant strategy, capacity planning, security design, and SDK integration patterns; (2) Core Implementation (4-8 weeks) including workspace provisioning, RLS configuration, embed token service development, and JavaScript SDK integration; (3) Performance Optimization (2-4 weeks) with load testing, autoscaling configuration, caching strategies, and DAX tuning; (4) Production Hardening (2 weeks) covering monitoring dashboards, alerting, disaster recovery, and documentation. With 28+ years of Microsoft ecosystem expertise and implementations for 200+ Fortune 500 companies, we deliver production-ready embedded analytics that scale. Call (888) 381-9725 for a free assessment.
Ready to Embed Power BI in Your Application?
EPC Group has implemented Power BI Embedded analytics for Fortune 500 companies across healthcare, finance, and government—delivering sub-3-second render times, HIPAA-compliant multi-tenant security, and 30–40% capacity cost optimization.
Call (888) 381-9725 or schedule a free architecture assessment.
Schedule a Free ConsultationAbout Errin O'Connor
Founder & Chief AI Architect, EPC Group
Errin O'Connor is the founder and Chief AI Architect of EPC Group, bringing over 28 years of Microsoft ecosystem expertise. As a 4x Microsoft Press bestselling author (including “Power BI Dashboards Step by Step”) and recognized enterprise technology leader, Errin has architected Power BI Embedded solutions for Fortune 500 companies across healthcare, finance, and government sectors. His implementations achieve sub-3-second report rendering at scale with 100% compliance audit pass rates in regulated industries.
Learn more about ErrinRelated Resources
Continue exploring microsoft consulting insights and services