Send email from Power BI when a metric needs action—not merely when someone happens to open a dashboard. The dependable route is Power BI data alerts into Power Automate, followed by an authenticated Volanea REST API request.
Power BI does not have a native Volanea application, marketplace visual, or built-in generic outbound webhook action for sending arbitrary HTTP requests from a report. Instead, use Power BI’s supported data-driven alert trigger in Power Automate. When a dashboard tile reaches the threshold you define after a data refresh, the flow runs and Power Automate’s HTTP action can call Volanea’s email API.
This guide builds a practical alerting workflow: a KPI card is refreshed, its value crosses a threshold, Power BI triggers a cloud flow, and the flow sends a transactional email through Volanea. It also covers the constraints that matter in production: licensing, secret storage, field mapping, duplicate prevention, alert limits, and troubleshooting.
What actually triggers an email in Power BI
The concrete event that starts this integration is When a data driven alert is triggered, the Power BI trigger available in Power Automate. It is not a row-created event, a form-submitted event, or a report button click.
A data-driven alert is attached to an eligible dashboard tile in the Power BI service. Power BI evaluates the alert when the underlying data refreshes. If the tile value reaches the threshold in the rule, Power BI raises the alert and Power Automate starts the cloud flow.
That distinction matters. A Power BI alert is a KPI-monitoring mechanism, not a general-purpose event stream. It is a strong fit for workflows such as:
- Inventory falls below a reorder threshold.
- Open support incidents rise above an acceptable count.
- Daily revenue misses a minimum target.
- Failed jobs exceed a tolerance level.
- A data-quality score drops below a defined value.
It is not the right trigger when you need one email for every individual source-system record. For example, if every newly created order must receive a receipt, trigger the email from the ordering system—not from a Power BI aggregate that refreshes later.
The integration architecture
The completed route has four hops:
- A Power BI dashboard tile displays a measure such as
Open Critical Tickets. - A data-driven alert watches that tile and evaluates after refreshed data is available.
- The Power Automate trigger When a data driven alert is triggered receives the alert information.
- A Power Automate HTTP action sends a
POSTrequest to Volanea’s/v1/sendendpoint.
The alert-trigger payload supplies alert metadata rather than every row behind the report. The important values are the alert ID, tile URL, and tile value. The flow converts those values into a clear email subject and body.
This architecture keeps the roles separate. Power BI identifies a condition worth escalating. Power Automate orchestrates the response. Volanea handles the transactional email request, sending pipeline, suppression checks, and delivery events.
Prerequisites and licensing reality
Before building the flow, make sure the use case fits Power BI data alerts.
Power BI requirements
Data alerts are configured in the Power BI service, not in Power BI Desktop. Alerts can be created on dashboard tiles pinned from supported report visuals, including gauges, KPIs, and cards. They are evaluated when data refreshes; a report sitting open in a browser does not create a real-time event by itself.
You also need access to the dashboard and an eligible licensing/capacity arrangement. Power BI’s alert availability depends on where the dashboard lives and the license assigned to the user creating the alert. For example, alerts on shared dashboards may require the dashboard to be in Premium capacity or the user to have an appropriate Pro or Premium Per User license.
Power Automate requirements
The Power BI connector and its data-driven alert trigger are available in Power Automate. However, the generic HTTP action used to make an arbitrary REST call is a premium capability.
That means the important answer is: Power BI standard functionality does not itself expose a generic outbound HTTP webhook for this use case. The direct Volanea route is Power BI alert → Power Automate → HTTP action → Volanea, and the HTTP step needs the appropriate Power Automate licensing.
Do not try to solve that by putting an API key in a report, a DAX measure, a Power Query parameter, or browser-visible custom visual configuration. Those are not secret-management systems.
Volanea requirements
Create a Volanea secret API key and verify the domain you will use in the sender address before testing. The From address in the request must use a domain verified in Volanea; otherwise the send can be rejected.
For an operational email route, use a sender such as alerts@notify.example.com, not an employee’s personal mailbox. A stable operational sender makes alert ownership, reply handling, domain authentication, and auditing easier to manage. Review the email API reference and setup guides if you need the sending endpoint, domain verification, or event details alongside this Power BI workflow.
Create the Power BI data-driven alert
Start with a dashboard tile that represents the condition you want to monitor. A card tile showing a single numeric measure is usually the simplest option.
Suppose your semantic model includes a measure named Open Critical Tickets. Pin the card visual to a dashboard in the Power BI service. Then open the tile menu and use Manage alerts to add a rule.
A practical rule might be:
- Alert title: Critical ticket backlog
- Condition: is above
- Threshold: 25
- Notification frequency: once every hour
- Email notification: optional, depending on whether you also want Power BI’s own alert email
Choose the frequency deliberately. The alert condition may still be true across several refreshes. A daily or hourly notification setting limits repeated Power BI notifications, but it does not replace idempotency in the sending integration.
What the alert does and does not include
Power BI data alerts are value-based. They tell you that a dashboard tile met a numeric condition. They are not a row-level query result export.
The Power Automate trigger supplies the alert’s identifying information and the evaluated tile value. It does not automatically provide a detailed list of the 26 critical tickets, their owners, or an explanation for why the count rose.
If recipients need deeper context, add a separate Power Automate step to query the source system, run a supported query against the semantic model, or generate a report export where your licensing supports it. Keep the initial alert email useful even without that enrichment: state the metric, its current value, the threshold, and a link to the dashboard tile.
Build the Power Automate flow
In Power Automate, create an Automated cloud flow. Choose the Power BI trigger named When a data driven alert is triggered.
In the trigger configuration, select the alert you created. The alert must already exist in Power BI before it is available to select in the flow.
Then add these steps:
- A validation condition that confirms the tile value is present.
- Optional Compose actions for a clean subject, text body, and HTML body.
- A secure secret retrieval step or secret-backed environment variable for the Volanea API key.
- An HTTP action that posts the mapped email payload to Volanea.
- Optional logging or escalation for failed sends.
Use clear action names. For example, name the HTTP action Send_alert_with_Volanea. This makes expressions, run history, and troubleshooting easier than leaving default names such as HTTP 2.
The Power BI alert payload shape
The Power BI trigger delivers an evaluated alert object. The fields used in this integration are:
{
"alertId": "<Power-BI-alert-id>",
"tileUrl": "https://app.powerbi.com/...",
"tileValue": 26
}
alertId identifies the alert rule selected by the flow. tileUrl links to the dashboard tile where the alert was configured. tileValue is the value Power BI evaluated when it triggered the alert.
Treat tileValue as data, not preformatted prose. Depending on the visual and measure, it can be a whole number, decimal, currency-like value, or text representation. Test the actual trigger output in your tenant before relying on a particular numeric format.
Map the alert to a Volanea email request
Volanea’s single-message endpoint is POST https://api.volanea.com/v1/send. It uses a bearer secret key in the Authorization header. The request below maps the Power BI alert fields into a transactional message.
In Power Automate, add an HTTP action and configure it as follows:
Method: POST
URI: https://api.volanea.com/v1/send
Headers:
Authorization: Bearer <Volanea secret API key resolved securely at run time>
Content-Type: application/json
Idempotency-Key: powerbi-alert-@{triggerBody()?['alertId']}-@{triggerBody()?['tileValue']}
Put the following JSON in the HTTP action’s Body field:
{
"from": "Power BI Alerts <alerts@notify.example.com>",
"to": [
{
"email": "operations@example.com",
"name": "Operations Team"
}
],
"subject": "Action required: Power BI alert value is @{triggerBody()?['tileValue']}",
"text": "Power BI data-driven alert triggered. Current tile value: @{triggerBody()?['tileValue']}. Review the dashboard tile: @{triggerBody()?['tileUrl']}",
"html": "<h2>Power BI alert triggered</h2><p><strong>Current tile value:</strong> @{triggerBody()?['tileValue']}</p><p><a href=\"@{triggerBody()?['tileUrl']}\">Open the Power BI dashboard tile</a></p>"
}
The field mapping is direct:
| Power BI trigger field | Volanea email field | Purpose |
|---|---|---|
tileValue | subject, text, html | States the value that met the alert condition. |
tileUrl | text, html | Gives recipients a route back to the relevant dashboard tile. |
alertId | Idempotency-Key | Helps make the logical send deterministic when retries occur. |
| Static sender | from | Uses an address on a verified Volanea domain. |
| Static escalation recipient | to | Defines the team or mailbox receiving the alert. |
The payload intentionally uses both text and html. The plain-text version improves readability in email clients that do not render HTML, while the HTML version makes the current KPI easier to scan.
Use a stronger idempotency key when possible
The example key combines the alert ID and current tile value. That is a reasonable starting point for a threshold alert, but it can be too broad or too narrow depending on your workflow.
If Power BI refreshes repeatedly while the tile remains at 26, that key prevents repeated sends for the same alert-and-value combination during Volanea’s idempotency window. But if the tile changes from 26 to 27, it creates a new send—as it should if you want a newly changed state to generate a new escalation.
For a more precise key, include an alert evaluation timestamp or a stable source event ID if your flow fetches one in an enrichment step. The rule is simple: create one stable key for one logical email, and reuse that exact same key only when retrying that same email.
Keep the Volanea API key out of report-visible configuration
The Volanea API key belongs in the automation layer, never in Power BI report content.
A report can be shared broadly. A report author may export configuration, inspect Power Query content, duplicate a semantic model, or distribute a .pbix file. Browser-delivered visual settings are especially unsuitable for secrets because users can inspect client-side application behavior.
Power Automate also needs care. Hardcoding a key directly into an HTTP header exposes it to people who can edit the flow and can risk revealing it in run history or exports.
Recommended secret-handling approach
Use a secret-backed environment variable or retrieve the value from Azure Key Vault through an approved Power Platform pattern. Restrict access so only the flow owners and the identity used by the connection can read the secret.
Then configure the HTTP action to use the resolved secret value for the Authorization header. Turn on Secure Inputs and Secure Outputs for the secret retrieval action and the HTTP action so the bearer key and downstream response details are not exposed in flow run history.
Use a dedicated Volanea key for this Power BI alert flow rather than sharing one key across unrelated production systems. A dedicated key simplifies rotation, least-privilege review, incident response, and attribution when investigating unexpected sends.
Avoid these unsafe patterns
Do not store the secret in:
- A DAX measure or calculation group.
- A Power Query parameter embedded in a report file.
- A report text box, button URL, tooltip, or custom visual setting.
- A public webhook URL with the key embedded in its query string.
- A Compose action whose inputs and outputs remain visible in run history.
- A spreadsheet that is loaded into or attached to the Power BI model.
An API key can send mail as your verified domain. Treat it as production infrastructure credentials, not as ordinary integration configuration.
Make the message operationally useful
A threshold notification that only says “Alert triggered” creates work without providing context. The recipient should be able to understand what changed and decide what to do in seconds.
At minimum, include:
- The metric name in the subject or first line.
- The actual tile value that caused the alert.
- The threshold in the body.
- A link to the relevant Power BI tile.
- The alert time, if you add it in the flow.
- A human-readable next action or team ownership statement.
For the critical-ticket example, a better subject is Critical ticket backlog: 26 open (threshold: 25). The body can say that the alert fired after the dashboard refresh and direct the on-call team to triage unassigned tickets.
Avoid copying customer data, credentials, or large row-level extracts into an alert email just because the workflow can assemble them. Dashboard alert messages often go to distribution lists, mobile clients, and ticketing mailboxes. Minimize sensitive content and place detailed investigation data behind the appropriate access controls.
When this breaks
A Power BI-to-email workflow crosses several systems: data refresh, dashboard alerting, Power Automate execution, an HTTP request, and email delivery. Design for each hop to fail independently.
Retries can create duplicate sends
The most important failure mode is an ambiguous HTTP result. Power Automate might time out after Volanea accepts a send request but before Power Automate receives the response. Retrying without an idempotency key can create two email sends.
Send an Idempotency-Key header on every retryable Volanea request. Keep the key stable for the same logical alert email. If a retry is necessary because of a transport failure, reuse that same key instead of generating a new random value.
Do not use a fresh UUID inside the HTTP action for every retry. That turns a retry into a new logical request and defeats duplicate protection.
HTTP timeouts and temporary errors
A timeout does not always mean the message was not accepted. Before manually resending, inspect the Power Automate run and Volanea send activity using the idempotency key or the message details returned by the API.
For temporary failures, configure retry behavior deliberately. Transient network errors and service interruptions may be retryable. Authentication errors, malformed JSON, an unverified sender domain, or an invalid recipient are configuration problems and should go to an exception path rather than retrying repeatedly.
A practical error policy is:
- Retry transient transport or server errors with the same idempotency key.
- Stop and notify an administrator for 4xx configuration errors.
- Log the alert ID, tile value, tile URL, and idempotency key in a secure operational record.
- Review the resulting Volanea event or send record before replaying an uncertain message.
Payload fields can be missing or unsuitable
Power BI data alerts provide alert metadata and a tile value, not a guaranteed complete business payload. A dashboard tile may not include the recipient address, account ID, owner, or row-level reason for the condition.
Do not assume a Power BI alert can tell you who should receive a customer-specific email. For alerting a shared operations mailbox, static recipients are usually correct. For dynamic routing, add a reliable lookup step against an authoritative source such as Dataverse, SQL Server, SharePoint, or a service API.
Also protect against empty data. Add a Condition before the HTTP action that stops the flow or routes it to an error branch when tileValue is blank. If the tile visual or measure changes type, test that the flow still formats it correctly.
The alert does not fire
If the flow never begins, inspect the upstream side first:
- Confirm the alert is active in the Power BI service.
- Confirm the dashboard tile is an eligible supported tile type.
- Confirm the report visual was pinned to a dashboard rather than only viewed in a report.
- Confirm the underlying dataset actually refreshed after the alert was enabled.
- Confirm the value crossed the configured threshold and that the configured alert frequency allows another notification.
- Confirm the Power Automate trigger references the intended alert ID.
Remember that alert evaluation follows refreshed data. If refresh fails, stalls, or is scheduled less frequently than expected, the email flow cannot run on time.
The flow runs but Volanea rejects the request
If the Power Automate run reaches the HTTP action but receives a 4xx response, check the request configuration:
- Verify
Authorizationstarts withBearerfollowed by the current Volanea secret key. - Verify the request URL is exactly
https://api.volanea.com/v1/send. - Verify
Content-Typeisapplication/json. - Verify the sender uses a domain verified in Volanea.
- Verify the
tolist contains valid recipient objects. - Verify HTML JSON escaping is correct, especially quotation marks in links.
- Check whether a recipient is suppressed, unsubscribed, or otherwise unavailable for the intended message type.
Keep HTTP secure inputs and outputs enabled, but preserve enough non-secret operational logging to diagnose failures: response status, alert ID, environment, and whether the send was retried.
Alert-driven email versus a report-button flow
Power BI also supports a Power Automate visual that lets report users run a flow by clicking a button. That is useful for a human-initiated action, such as “send this filtered report to my manager” or “request a data-quality review.”
It is not the same as a data-driven alert.
Choose When a data driven alert is triggered when the email should send automatically after a KPI threshold is met. Choose the Power Automate visual when a report reader should explicitly decide to run the flow and pass the current report-filter context into it.
For high-priority operational monitoring, the automatic alert route is usually safer because it does not depend on someone being present, opening a report, or clicking a button.
Improve reliability as the workflow grows
A single alert email is easy to set up. A dependable alerting system benefits from a few additional design decisions.
Separate development, test, and production
Use different Power BI alerts, Power Automate environments, Volanea API keys, and sender addresses for non-production and production. A test refresh should never page the production incident mailbox.
In development, send to a small test recipient list. In production, use a role mailbox, an incident-management ingestion address, or a controlled distribution list. This also makes it easier to validate the exact tile value formatting before live alerts are enabled.
Add a routing layer for multiple alerts
One flow can serve multiple alert rules if you use a Switch or Condition based on the alert ID. Each branch can choose a recipient list, subject template, escalation severity, and idempotency key strategy.
For example:
- Inventory alert → supply-chain operations.
- Failed refresh alert → data engineering.
- Critical ticket count → service desk on-call.
- Revenue anomaly → finance leadership.
Keep the routing map documented. An alert ID is useful to the flow but not meaningful to a new administrator without a record of its business purpose.
Use templates when message consistency matters
If several flows share a common operational email design, use a Volanea template instead of embedding full HTML in every Power Automate action. Templates help centralize branding, accessibility fixes, and wording changes.
However, keep the alert’s essential details visible in the send request or template data. The recipient should not need to infer the metric value from a generic template. The send should retain a clear subject, a measurable value, and a route back to the relevant dashboard.
Monitor send volume and cost
A noisy tile can create a noisy flow. Before rolling out many alerts, estimate the maximum number of refreshes, threshold crossings, recipients, and retry attempts. Combine Power BI alert frequency controls, Power Automate concurrency controls where needed, and Volanea idempotency to avoid accidental bursts.
If you are sizing the sending setup for several dashboards and teams, review transactional email pricing and sending costs alongside your expected alert volume. The relevant number is not only the number of dashboard tiles—it is the number of logical alert emails, retries, and recipients over a billing period.
A production checklist
Before enabling the flow for real recipients, confirm all of the following:
- The dashboard tile is a supported card, KPI, or gauge tile pinned in the Power BI service.
- The data-driven alert has an explicit title, threshold, and notification frequency.
- The cloud flow uses When a data driven alert is triggered and points to the intended alert.
- The Volanea sender domain is verified.
- The Volanea key is stored in a secret-backed location, not in the report or plain flow configuration.
- Secure Inputs and Secure Outputs are enabled on actions that handle credentials.
- The HTTP action uses
POST https://api.volanea.com/v1/send. - The HTTP action includes
Authorization,Content-Type, andIdempotency-Keyheaders. - The JSON request maps
tileValueandtileUrlinto a readable subject and message body. - A blank or malformed tile value takes an error path rather than sending a confusing alert.
- Retry behavior reuses the same idempotency key for the same logical send.
- A test alert has been run using a safe test recipient.
- The team knows where to inspect Power Automate runs and Volanea send activity.
Conclusion
To send email from Power BI with Volanea, do not look for a native Power BI plugin or try to embed an API call in a report. Use Power BI for what it provides reliably: evaluating dashboard data alerts after refresh. Use Power Automate to orchestrate the workflow and its HTTP action to call Volanea’s REST API.
The key implementation details are straightforward but important: attach the flow to When a data driven alert is triggered, map tileValue and tileUrl into the Volanea payload, keep the API key in secure automation-side secret storage, and send a stable idempotency key so retries do not create duplicate operational emails.
That gives your dashboards a useful next step. Instead of only showing that a KPI has crossed a boundary, Power BI can notify the people responsible for acting on it through a controlled transactional email path.
FAQ
Can Power BI send email directly to Volanea?
Not through a native Volanea Power BI app or a generic outbound HTTP action inside a standard Power BI report. Use a Power BI data-driven alert to trigger Power Automate, then use Power Automate’s HTTP action to call Volanea’s API.
What Power BI event starts the email flow?
Use the Power Automate trigger When a data driven alert is triggered. It runs when an eligible Power BI dashboard tile meets the threshold in its alert rule after data refresh.
Does the Power BI alert include all rows behind a dashboard metric?
No. The alert provides evaluated alert information such as the alert ID, tile URL, and tile value. If the email needs row-level details, add an enrichment step that queries an authoritative data source.
Where should the Volanea API key be stored?
Store it in a secret-backed Power Automate configuration, such as a secret environment variable or an Azure Key Vault-based pattern. Do not place it in Power BI report content, Power Query, DAX, a visual setting, or a normal Compose action.
How do I stop duplicate emails after a retry?
Send an Idempotency-Key header with the Volanea request. Build it from stable data that identifies one logical alert email, and reuse that exact key if Power Automate retries the same request.