{"id":332753,"date":"2026-09-03T19:15:47","date_gmt":"2026-09-03T19:15:47","guid":{"rendered":"https:\/\/wordpress.org\/plugins\/report-viewer-for-power-bi\/"},"modified":"2026-09-28T19:36:34","modified_gmt":"2026-09-28T19:36:34","slug":"report-viewer-for-power-bi","status":"publish","type":"plugin","link":"https:\/\/kaa.wordpress.org\/plugins\/report-viewer-for-power-bi\/","author":15229196,"comment_status":"closed","ping_status":"closed","template":"","meta":{"version":"1.0.1","stable_tag":"1.0.1","tested":"7.1.2","requires":"6.0","requires_php":"8.0","requires_plugins":null,"header_name":"Report Viewer for Power BI","header_author":"Atlas Public Policy","header_description":"Embed Power BI reports and dashboards in WordPress pages via shortcode, with Azure AD authentication managed through a settings page.","assets_banners_color":"","last_updated":"2026-09-28 19:36:34","external_support_url":"","external_repository_url":"","donate_link":"","header_plugin_uri":"","header_author_uri":"https:\/\/atlaspolicy.com\/","rating":0,"author_block_rating":0,"active_installs":0,"downloads":102,"num_ratings":0,"support_threads":0,"support_threads_resolved":0,"author_block_count":0,"sections":["description","installation","faq","changelog"],"tags":{"1.0.0":{"tag":"1.0.0","author":"coreysteineratalas","date":"2026-09-03 20:18:51","revision":3680356},"1.0.1":{"tag":"1.0.1","author":"atlaspolicy","date":"2026-09-28 19:36:34","revision":3717824}},"upgrade_notice":[],"ratings":[],"assets_icons":[],"assets_banners":[],"assets_blueprints":{},"all_blocks":[],"tagged_versions":["1.0.0","1.0.1"],"block_files":[],"assets_screenshots":[],"screenshots":[]},"plugin_section":[],"plugin_tags":[97658,230,210910,3654],"plugin_category":[56],"plugin_contributors":[153444],"plugin_business_model":[],"class_list":["post-332753","plugin","type-plugin","status-publish","hentry","plugin_tags-business-intelligence","plugin_tags-embed","plugin_tags-power-bi","plugin_tags-reports","plugin_category-social-and-sharing","plugin_contributors-atlaspolicy","plugin_committers-atlaspolicy"],"banners":[],"icons":{"svg":false,"icon":"https:\/\/s.w.org\/plugins\/geopattern-icon\/report-viewer-for-power-bi.svg","icon_2x":false,"generated":true},"screenshots":[],"raw_content":"<!--section=description-->\n<p>Report Viewer for Power BI lets you save each of your Power BI reports in WordPress, then drop it into any page or post with a shortcode.<\/p>\n\n<p>Your Power BI sign-in happens on the server, so your Azure AD credentials are never sent to your visitors' browsers. Credentials are also encrypted before they are saved in your WordPress database.<\/p>\n\n<p>Features:<\/p>\n\n<ul>\n<li>Embed Power BI <strong>reports<\/strong> and <strong>dashboards<\/strong> with a shortcode<\/li>\n<li>Sign-in handled on the server \u2014 credentials never reach the browser<\/li>\n<li>Credentials encrypted in your WordPress database<\/li>\n<li>Choose who can see each report: everyone, logged-in users only, or administrators only<\/li>\n<li>Reports resize to fit the page width and automatically match the report's own proportions, so they look right on phones and desktops<\/li>\n<li>Optionally show or hide the Power BI filter pane per report<\/li>\n<li>Open a specific page (tab) of a multi-page report<\/li>\n<li>Group reports into your own categories<\/li>\n<li>Pick the style and color of the loading spinner your visitors see<\/li>\n<li>A one-click <strong>Copy<\/strong> button next to every report in the admin list, so you never have to type a shortcode by hand<\/li>\n<\/ul>\n\n<h3>External Services<\/h3>\n\n<p>This plugin connects to two Microsoft services to sign in and display your Power BI reports.<\/p>\n\n<h4>Microsoft Azure Active Directory (Entra ID)<\/h4>\n\n<p>Used to sign in and obtain an access token for Power BI. Your site sends your Client ID, Client Secret, service account email address and password to <code>https:\/\/login.microsoftonline.com<\/code>.<\/p>\n\n<p>This request is made from your server, never from a visitor's browser. The resulting token is stored temporarily on your server and reused for all visitors until it is close to expiring (roughly once an hour), so a visit to a page with a report does not normally trigger a new sign-in request.<\/p>\n\n<p>Privacy Policy: https:\/\/privacy.microsoft.com\/en-us\/privacystatement\nTerms of Use: https:\/\/azure.microsoft.com\/en-us\/support\/legal\/<\/p>\n\n<h4>Microsoft Power BI<\/h4>\n\n<p>Used to display your reports. The report itself is loaded from <code>https:\/\/app.powerbi.com<\/code> in the visitor's browser, along with the short-lived access token your server obtained above. What the report shows is determined entirely by your Power BI workspace.<\/p>\n\n<p>Privacy Policy: https:\/\/privacy.microsoft.com\/en-us\/privacystatement\nTerms of Service: https:\/\/powerbi.microsoft.com\/en-us\/terms-of-service\/<\/p>\n\n<!--section=installation-->\n<ol>\n<li>Upload the plugin files to the <code>\/wp-content\/plugins\/report-viewer-for-power-bi<\/code> directory, or install it from the <strong>Plugins &gt; Add New<\/strong> screen in WordPress.<\/li>\n<li>Activate the plugin through the <strong>Plugins<\/strong> menu in WordPress.<\/li>\n<li>Go to <strong>Power BI Reports &gt; Settings<\/strong> and enter your Azure AD details (see the FAQ below for what you need).<\/li>\n<li>Go to <strong>Power BI Reports &gt; Add New Report<\/strong>, give it a title, and enter the Report ID and Group\/Workspace ID from Power BI.<\/li>\n<li>Publish the report, then copy its shortcode from the <strong>Shortcode<\/strong> column on the <strong>Power BI Reports<\/strong> list and paste it into any page or post.<\/li>\n<\/ol>\n\n<!--section=faq-->\n<dl>\n<dt id=\"what%20do%20i%20need%20from%20azure%20ad%20and%20power%20bi%3F\"><h3>What do I need from Azure AD and Power BI?<\/h3><\/dt>\n<dd><p>Four things, all entered on the <strong>Power BI Reports &gt; Settings<\/strong> screen:<\/p>\n\n<ul>\n<li><strong>Client ID<\/strong> \u2014 the application (client) ID of your Azure AD app registration<\/li>\n<li><strong>Client Secret<\/strong> \u2014 the secret value from that same app registration<\/li>\n<li><strong>Master User (UPN)<\/strong> \u2014 the email address of a service account that can open your reports<\/li>\n<li><strong>Master User Password<\/strong> \u2014 that account's password<\/li>\n<\/ul>\n\n<p>The service account needs a Power BI Pro license and must have multi-factor authentication turned off, because the plugin signs in with the username and password directly. You do not need a Tenant ID \u2014 the plugin works it out from the service account's email address.<\/p><\/dd>\n<dt id=\"where%20do%20i%20find%20a%20report%27s%20report%20id%20and%20group%2Fworkspace%20id%3F\"><h3>Where do I find a report's Report ID and Group\/Workspace ID?<\/h3><\/dt>\n<dd><p>Open the report in Power BI and look at the address bar. The URL contains both values, in this form:<\/p>\n\n<pre><code>https:\/\/app.powerbi.com\/groups\/{Group ID}\/reports\/{Report ID}\/...\n<\/code><\/pre><\/dd>\n<dt id=\"can%20i%20set%20the%20size%20of%20the%20embedded%20report%3F\"><h3>Can I set the size of the embedded report?<\/h3><\/dt>\n<dd><p>Yes. Each report has <strong>Width<\/strong> and <strong>Min Height<\/strong> settings. Width is the space the report takes on the page (<code>100%<\/code> by default). Min Height is only the starting height while the report loads \u2014 once it appears, the height adjusts automatically so the report keeps its correct proportions.<\/p>\n\n<p>You can also override both for a single placement directly in the shortcode:<\/p>\n\n<pre><code>[powerbi_report id=\"123\" width=\"100%\" height=\"800px\"]\n<\/code><\/pre><\/dd>\n<dt id=\"do%20visitors%20need%20a%20power%20bi%20account%3F\"><h3>Do visitors need a Power BI account?<\/h3><\/dt>\n<dd><p>No. The plugin signs in with your service account on the server, so visitors just see the report. Use the <strong>Content Restriction<\/strong> setting on each report to decide who on your site is allowed to see it.<\/p><\/dd>\n<dt id=\"do%20my%20power%20bi%20reports%20appear%20as%20pages%20on%20my%20site%3F\"><h3>Do my Power BI reports appear as pages on my site?<\/h3><\/dt>\n<dd><p>No. A \"Power BI Report\" in WordPress is just a saved configuration \u2014 it has no page of its own and is not listed anywhere publicly. Reports only appear where you place the shortcode.<\/p><\/dd>\n<dt id=\"i%20re-entered%20my%20credentials%20or%20moved%20my%20site%20and%20reports%20stopped%20loading.%20what%20happened%3F\"><h3>I re-entered my credentials or moved my site and reports stopped loading. What happened?<\/h3><\/dt>\n<dd><p>Your credentials are encrypted using your site's security keys from <code>wp-config.php<\/code>. If those keys change \u2014 which can happen when a site is moved, restored from a backup, or when the keys are deliberately regenerated \u2014 the saved credentials can no longer be read. Go to <strong>Power BI Reports &gt; Settings<\/strong> and enter the Client Secret and Master User Password again.<\/p><\/dd>\n<dt id=\"what%20happens%20if%20i%20delete%20the%20plugin%3F\"><h3>What happens if I delete the plugin?<\/h3><\/dt>\n<dd><p>Your Azure AD credentials and display preferences are removed. Your saved reports and report categories are kept, so reinstalling the plugin brings them back \u2014 you only need to re-enter your credentials.<\/p><\/dd>\n<dt id=\"where%20is%20the%20source%20code%3F\"><h3>Where is the source code?<\/h3><\/dt>\n<dd><p>The full source code, including the React\/TypeScript front end, is available on GitHub:\nhttps:\/\/github.com\/AtlasPublicPolicy\/report-viewer-for-power-bi<\/p>\n\n<p>Everything the plugin needs is already included in the download \u2014 you do not need any build tools to use it.<\/p><\/dd>\n\n<\/dl>\n\n<!--section=changelog-->\n<h4>1.0.0<\/h4>\n\n<ul>\n<li>Initial release.<\/li>\n<\/ul>\n\n<h4>1.0.1<\/h4>\n\n<ul>\n<li>Azure AD credentials are now encrypted in the database.<\/li>\n<li>Access tokens are cached on the server and reused until they near expiry.<\/li>\n<li>Added rate limiting to the embed endpoint.<\/li>\n<li>Removed debug logging from normal operation.<\/li>\n<\/ul>","raw_excerpt":"Embed Power BI reports and dashboards in WordPress pages via shortcode, with Azure AD sign-in handled on the server and per-report access control.","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/kaa.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin\/332753","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/kaa.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin"}],"about":[{"href":"https:\/\/kaa.wordpress.org\/plugins\/wp-json\/wp\/v2\/types\/plugin"}],"replies":[{"embeddable":true,"href":"https:\/\/kaa.wordpress.org\/plugins\/wp-json\/wp\/v2\/comments?post=332753"}],"author":[{"embeddable":true,"href":"https:\/\/kaa.wordpress.org\/plugins\/wp-json\/wporg\/v1\/users\/atlaspolicy"}],"wp:attachment":[{"href":"https:\/\/kaa.wordpress.org\/plugins\/wp-json\/wp\/v2\/media?parent=332753"}],"wp:term":[{"taxonomy":"plugin_section","embeddable":true,"href":"https:\/\/kaa.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_section?post=332753"},{"taxonomy":"plugin_tags","embeddable":true,"href":"https:\/\/kaa.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_tags?post=332753"},{"taxonomy":"plugin_category","embeddable":true,"href":"https:\/\/kaa.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_category?post=332753"},{"taxonomy":"plugin_contributors","embeddable":true,"href":"https:\/\/kaa.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_contributors?post=332753"},{"taxonomy":"plugin_business_model","embeddable":true,"href":"https:\/\/kaa.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_business_model?post=332753"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}