MetricSign
Start free
Data Observability10 min·

Power BI Alerts: What Native Alerting Can and Can't Do

You set an alert on your Power BI revenue card. Three weeks later, the pipeline breaks, the card shows yesterday's number, and nobody gets notified.

Lees dit artikel in het Nederlands →

Power BI Alerts: What Native Alerting Can and Can't Do

Power BI alerts watch the tile, not the pipeline

Power BI alerts are threshold-based notifications in Power BI Service. When a value on a dashboard tile crosses a boundary you define, Power BI sends you an email. One tile, one threshold, one recipient. That is the full scope of the feature.

The alerting itself works as documented. The problem is what it leaves uncovered.

You pin a card showing daily revenue to the executive dashboard, set the threshold at €50K, and move on. Three weeks later, the Databricks job that prepares the sales data fails at 02:00. The ADF pipeline downstream completes with zero fresh rows. The Power BI dataset refresh runs on schedule and succeeds, because the underlying table still exists with yesterday's data. The revenue card shows €127K. No threshold was crossed. No alert fired.

Your CFO opens the dashboard at 09:00 and shares a slide in the board meeting. The data is 36 hours old. Nobody finds out until someone manually checks the pipeline logs after lunch.

How native Power BI alerting actually works

Open a dashboard in Power BI Service. Hover over a card, gauge, or KPI tile, click the ellipsis (…), and select "Manage alerts." Define a condition (above, below, or equal to a value), set a threshold, and choose how often Power BI should evaluate it. Maximum frequency: once per hour. Save. Done.

The alert runs after each scheduled dataset refresh. If the tile's value crosses your threshold, you get an email and a notification in the Power BI notification center (the bell icon, top right). If the value stays within the boundary, nothing happens. There is no trending, no anomaly detection, no comparison to yesterday's value.

The alert email itself is minimal: a subject line like "Data alert for [tile name]," the current value, your threshold, and a link to the dashboard. No context about why the value changed. No upstream pipeline status. No refresh timestamp.

Prerequisites: Power BI Pro, Premium Per User (PPU), or a workspace backed by Premium or Fabric capacity. Free-tier users cannot create data-driven alerts.

One source of confusion since Microsoft Fabric launched: alerts still require a Pro, PPU, or Premium workspace. Fabric's free tier includes read access to reports but does not enable data-driven alerting. If you are unsure, check your workspace license type under Settings.

Where the notification goes and who gets it

Native alerts deliver through two channels:

  1. Email to the person who created the alert. Only that person.
  2. The Power BI notification center inside Power BI Service.

No native integration with Microsoft Teams, Slack, Telegram, or PagerDuty. No webhook endpoint. No distribution list.

If you want the alert to reach your data engineering channel in Teams, you need Power Automate. Create a flow that triggers on a Power BI alert and posts a message to a Teams channel, sends a second email to a shared mailbox, or calls a webhook. It works, but it is a separate system to configure and maintain. The alert itself still evaluates tile thresholds only.

The Power BI mobile app also receives push notifications for alerts if you have enabled them. Same constraint: only you, only threshold-based, only after a dataset refresh.

Five things Power BI's native alerts won't catch

1. Report visuals and paginated reports Alerts work on dashboard tiles only: card, gauge, and KPI visuals that have been pinned from a report to a dashboard. A matrix, a table, a bar chart, a decomposition tree, a paginated report — none of these support data-driven alerts. If your most critical metric lives in a report page that has not been pinned as a card to a dashboard, you cannot alert on it natively.

2. Refresh failures A failed dataset refresh does not trigger a data-driven alert. The tile keeps showing the last known value. Power BI has separate notification settings for refresh failures (under dataset settings, scheduled refresh section), but these are a completely different mechanism. You enable refresh failure emails per dataset, and they go to the dataset owner. They do not integrate with the alert management UI, and there is no consolidated view of "which of my 40 datasets had refresh failures today."

3. Volume anomalies and data completeness A dataset that loaded 0 rows instead of 50,000 will not trigger an alert unless the metric on the tile happens to cross your threshold. A pipeline that drops 3 columns because of a source schema change will not trigger anything either. There is no native concept of "the row count dropped 95% from yesterday" or "this table had 12 columns yesterday and now has 11." These silent data failures are the most damaging because every system reports success while the data is wrong.

4. Team routing The notification goes to one person: the alert creator. No team distribution, no on-call rotation, no escalation path. For a personal dashboard this is fine. For a production dashboard that three departments rely on, it is a single point of failure. If the alert creator changes roles or leaves the company, the alert still fires to an inbox nobody reads.

5. Evaluation speed Power BI checks the tile value at most once per hour, after a scheduled dataset refresh. For datasets on a 30-minute refresh cycle, you can wait up to 60 minutes after the threshold was actually crossed before the email arrives. Streaming datasets and DirectQuery have different mechanics, but for import-mode datasets (the majority), hourly evaluation is the ceiling.

Power Automate as the middle ground

Power Automate sits between native alerts and a full monitoring platform. You can build flows that trigger on a Power BI dataset refresh failure and post to a Teams channel, or run on a schedule to query a dataset via the REST API and notify when a value looks off, or chain checks across ADF and Power BI in a single flow.

The upside: it is part of your Microsoft 365 stack, it handles the "who gets notified" problem well (Teams channels, shared mailboxes, webhooks), and it can catch refresh failures that native alerts miss entirely.

The downside: you are assembling a monitoring system from individual flow components. Each pipeline-to-dashboard dependency is a separate flow. There is no lineage map, no anomaly baseline, no automatic correlation between an upstream ADF failure and a downstream dashboard impact. If your ADF pipeline fails and you want to know which Power BI datasets are affected, you build that mapping yourself, in each flow, for each pipeline.

For a team with 5 dashboards and 3 pipelines, this is practical. For a team with 40 dashboards, 15 ADF pipelines, a Databricks workspace, and a dbt project, the number of flows grows faster than anyone can maintain them.

When the alert needs to span the full pipeline

Power BI alerts watch the last mile: the number on the tile. Power Automate extends that to refresh failures and custom routing. Neither watches the complete data pipeline from source to dashboard.

Consider a pattern we see regularly across MetricSign users. A Databricks job preparing sales data ran 45 minutes late last Tuesday. The ADF pipeline that copies the Databricks output to the warehouse started on schedule and hit a truncated source table. The Power BI dataset refreshed on time with stale data from the previous day. The revenue card showed €127K. No threshold crossed. No Power Automate flow caught the Databricks delay because nobody had built a flow for that specific dependency.

MetricSign reads the activity logs from each layer: Databricks job runs, ADF pipeline runs, dbt model runs, and Power BI dataset refreshes. It maintains a lineage graph that maps which Power BI datasets depend on which upstream jobs. When the Databricks job ran late, MetricSign checked the lineage, identified two affected Power BI datasets scheduled to refresh within the next hour, and sent a Telegram message to the data engineering channel at 06:18, twenty minutes before the scheduled refresh. The engineer delayed the Power BI refresh. The dashboard showed correct data at the morning standup.

This is not a replacement for threshold alerts. If you need "notify me when revenue drops below €50K," use the native Power BI feature. MetricSign watches the data pipeline that feeds the tile: is the data late, incomplete, or sourced from a failed job? It catches the problem before the card even refreshes.

MetricSign connects to Power BI, ADF, Databricks, dbt Cloud, dbt Core, Fabric, and Snowflake. Free to start, connects to your first workspace in under 15 minutes.

See also: Going beyond refresh monitoring in Power BI

Which alerting approach fits your team

Native Power BI alerts work when you need a threshold notification on a single dashboard tile, the alert is for one person, and the dataset refreshes daily. Setup takes 3 minutes. No maintenance needed.

Power Automate makes sense when you need refresh failure notifications, the alert should reach a team channel, or you want conditional logic like "alert only on business days." Expect to build and maintain one flow per pipeline-to-dashboard dependency.

A cross-stack observability platform fits when your dashboards depend on upstream jobs in ADF, Databricks, dbt, or Snowflake. When you need to trace a dashboard issue back to the upstream job that caused it. When you want anomaly detection beyond simple thresholds: volume drops, freshness violations, schema drift. When your team manages more than 10 production dashboards and cannot maintain individual Power Automate flows for each dependency.

The three approaches are not mutually exclusive. Many teams run native alerts for known thresholds, a few Power Automate flows for refresh failures, and an observability platform for the cross-stack lineage that neither provides on its own.

Frequently asked questions

Can I set alerts on report visuals in Power BI?+
No. Power BI data-driven alerts work on dashboard tiles only, specifically card, gauge, and KPI visuals that have been pinned to a dashboard. Report visuals, paginated reports, tables, and charts do not support native alerting.
How often are Power BI alerts evaluated?+
At most once per hour, and only after a scheduled dataset refresh completes. For daily-refresh datasets, the alert evaluates once per day. Power BI does not evaluate alerts between refresh cycles.
Can I send Power BI alerts to Microsoft Teams?+
Not natively. Power BI sends alert notifications via email to the alert creator only. To route alerts to a Teams channel, you need to create a Power Automate flow that triggers on the Power BI alert and posts a message to Teams.
Do I need a Pro license to create Power BI alerts?+
Yes. Data-driven alerts require Power BI Pro, Premium Per User (PPU), or a workspace backed by Premium or Fabric capacity. Users on the free tier cannot create alerts.
Does Power BI alert me when a dataset refresh fails?+
Not through the data-driven alerting feature. Refresh failures are handled by a separate notification mechanism under dataset settings. You need to enable refresh failure emails per dataset independently from data-driven alerts.
What is the difference between Power BI alerts and Power Automate notifications?+
Power BI alerts are threshold-based: they fire when a tile value crosses a boundary. Power Automate flows can trigger on refresh failures, run on a schedule, query datasets via the API, and route notifications to Teams, email groups, or webhooks. Power Automate is more flexible but requires manual setup and maintenance for each alert scenario.

Related integrations

Related articles