How to Create an Email Insights Assistant with Copilot in Power BI
This tutorial shows how to configure Copilot in Power BI to automatically generate insights and send a summary by email to a list of recipients. It is useful for those who want to distribute periodic analyses without manually creating reports each time.
Prerequisites
- Account with Power BI Pro or Premium permissions and access to Copilot
- Report published to the Power BI Service with an up-to-date dataset
- Email connector configured (Exchange/Outlook or Power Automate flow)
- Permissions to create Power Automate flows connected to Power BI
Step 1: Define the Objective of the Insights Assistant
Before configuring Copilot, clarify what kind of insights you intend to send (e.g., weekly sales change, top 5 customers, anomalies). This helps to write effective prompts and prepare the report with the necessary metrics.
Step 2: Prepare the Report and Mark Relevant Visuals
Open your report in Power BI Desktop or Service and ensure that the visuals you want Copilot to use have clear titles and visible KPIs. Copilot uses labels and names to reference elements.
// Best practices (examples of measure names in Power BI DAX)
TotalSales = SUM(Sales[Amount])
SalesWoVAT = CALCULATE([TotalSales], Sales[VATExempt] = TRUE)
WeeklyChange = DIVIDE([TotalSales] - CALCULATE([TotalSales], DATEADD(Date[Date], -7, DAY)), CALCULATE([TotalSales], DATEADD(Date[Date], -7, DAY)))
Step 3: Create a Copilot Prompt to Generate the Summary
In the Power BI Service, open Copilot for the report and write a prompt that asks for a concise summary focused on the selected visuals. Be specific: period, format (list, paragraphs), and whether you want sentences ready for email.
Prompt example:
"Generate an email-ready summary with the main insights from last week: weekly change of TotalSales, top 3 products by revenue, and any anomalies in regions. Short text in 5-7 sentences ready to copy into the email body. Use headings for each section."
Step 4: Validate and Adjust Copilot's Output
Ask Copilot for variations of the same prompt until you get the desired tone and level of detail. Check especially the cited values (consistency with the report) and ask it to include date and context in the text to avoid ambiguity.
Step 5: Automate Sending with Power Automate
Create a flow in Power Automate that runs weekly, calls Copilot (via Power BI/HTTP connector) or generates text using the 'Execute Paginated Report' / 'Refresh and run' action and then embeds the generated text in the email body.
// Logical structure of the flow (Power Automate pseudocode)
Trigger: Recurrence (weekly)
Action: Power BI - Refresh dataset (optional)
Action: HTTP/Invoke Copilot prompt endpoint OR Power BI - Export to PDF/Run query
Action: Parse output (extract Copilot/query text)
Action: Office 365 Outlook - Send an email (To: list) Body: @{outputs('Copilot_text')}
Step 6: Handle Errors and Validations
Implement checks in the flow: if the output is empty, send an error notification instead of the insights email. Log each run to audit changes in the text generated by Copilot.
// Simple condition example in Power Automate
Condition: length(outputs('Copilot_text')) > 50
True: Send email with @{outputs('Copilot_text')}
False: Send email to admin "Error: summary not generated"
Verify the Result
Run the flow manually and confirm that the email arrives with the summary generated by Copilot. Compare the values and sentences with the report visuals to ensure there are no discrepancies. Also check the flow history and dataset refresh logs.
Conclusion
After validation, you can adjust the prompt to customize tone, frequency, and recipients. To evolve, attach report PDFs or segment sends by groups. Tip: keep a tested prompt example for reproducibility — what is the first summary you want to automate in your organization?