Automation

Data Studio alerts: what Pro alerts do, and the free workarounds

Data Studio only alerts you on Pro, and only inside your organisation. Here's what Pro alerts do, the 11 changes that switch them off, and the free routes (GA4, Google Ads, an Apps Script on your Sheet, BigQuery) with a ready-made alert kit.

Lazarina Stoy·

Data Studio alerts: what Pro alerts do, and the free workarounds

Data Studio can email you when a chart crosses a threshold, but only on Data Studio Pro, only to people in your own organisation, and only against the report’s default filters. On the free version there are no alerts at all, so the alert has to come from somewhere else: GA4, Google Ads, the Google Sheet behind your report, or BigQuery.

You want to hear about a broken tracking tag on Monday, not in Thursday’s client call. (Older answers call these Looker Studio alerts: Google renamed the product back to Data Studio in 2026.) This covers:

  • nine routes side by side, and a decision tree
  • what Pro alerts do, and the 11 changes that switch one off
  • the free routes, including an Apps Script that checks the Sheet behind your report hourly
  • connector vendors’ alerts, and a BigQuery query that fails on purpose

What’s here comes from Google’s documentation and release notes (read 13 October 2026), the vendors’ own docs and Google’s Data Studio forum. I haven’t run a Pro alert or a BigQuery scheduled query for this post, and I say so wherever it matters.

Nine ways to get a Data Studio alert, side by side

Pro alerts are the only native option. Each free route watches one source, except an Apps Script on a Sheet, which watches anything that lands in it. An alert here arrives only when a condition is met; a schedule that always sends is monitoring, listed as the nearest thing on free.

Route What it watches Cost Fastest check Delivery Recipients Several sources?
Data Studio Pro chart alert One chart, default filters Pro licence for the creator Hourly Email Up to 50, in your organisation No blends
Traffic-light page + the free schedule A page with conditional formatting Free Always sends Email Your schedule’s list Yes (not an alert)
GA4 custom insight One GA4 property Free Hourly (web data only) Email, Insights dashboard Addresses you type in No
Google Ads email rule One Google Ads account Free Daily in Google’s example (runs within about 2 h) Email Set on the rule No
Search Console messages Events, not thresholds Free When an event happens Email, message panel Each user’s settings No
Sheets conditional notifications Cells in a Sheet Some work or school accounts Can be delayed Email Google accounts External data doesn’t trigger it
Apps Script on the Sheet Anything in the Sheet Free (quotas) Every minute; hourly is plenty Email, Slack 100 a day on Gmail, 1,500 on Workspace Yes
Connector vendor alerts What the connector moves Your connector plan Varies Varies Varies Depends
BigQuery scheduled query Any table you can query Billing on; 1 TiB a month free on-demand Every 5 minutes Email, Pub/Sub Whoever scheduled it Yes

From each product’s own docs, read 13 October 2026. Data Studio Pro is $9 per user, per project, per month (Google’s price, checked 9 September 2026).

Pro decides the first branch; whether your data already sits in a Google Sheet decides most of the rest. (Is Pro worth it otherwise? See Data Studio free vs Pro.)

A decision tree of four yes/no questions: Pro in a Workspace organisation leads to a Pro chart alert, one Google source to a GA4 insight or Ads rule, data in a Sheet to Apps Script, BigQuery with billing to a failing scheduled query, and otherwise a traffic-light page on the free schedule
The first yes is the route to set up first. The same tree is the first thing in the alert kit.

What Data Studio Pro alerts do

Chart alerts arrived on Pro in November 2023; hourly checks followed on 5 December 2025. Three conditions first:

  • It’s Pro content. The report itself must be Pro, not just your account. Self-service Pro is for Google Workspace or Cloud Identity organisations, so not a personal Gmail account.
  • You can view the chart’s data. You need at least the Viewer role on the report and on the chart’s data source.
  • You’re in View mode. In Edit mode there’s no bell.

Then, following Google’s steps:

  1. Open the report in View mode and hover over the chart you want to watch.
  2. Click the Create & view alerts bell icon. The Create Alert dialog opens.
  3. Add a Name (and optional Description), set Access to all viewers of the report or you only, and add Recipients. As the creator you’re always on the list.
  4. Set the Alert rules: a field, a condition and a value. The conditions on offer depend on the field’s data type. Extra conditions combine with AND; there’s no OR.
  5. Set the Start time and Repeat (how often Data Studio checks). Custom allows schedules like every Tuesday and Thursday.


When the condition is met, everyone on the list gets an email from looker-studio-noreply@google.com with the condition, the time it was met, the value that triggered it and a link to the report. Recipients also get an unsubscribe link (the creator’s copy doesn’t have one).

Pro alerts at a glance From Google’s docs
How often Hourly at most, or a custom schedule
Recipients Up to 50 email addresses, all inside your organisation
Channel Email only, from looker-studio-noreply@google.com
Time zone Your operating system’s; it can’t be changed in Data Studio

From Google’s Create alerts on a chart and the release notes, read 13 October 2026.

Recipients don’t need Pro licences, according to a Google staff answer on Google’s Data Studio forum in June 2024: only the creator does.

Where Pro alerts stop, and the 11 changes that switch one off

Google’s limits, before you build anything:

  • No blended data sources, calculated fields or running totals. Alert on the underlying field. (Google doesn’t say whether data-source calculated fields count too.)
  • Default filter values only. A viewer’s filter changes don’t apply.
  • In-organisation recipients only. External aliases and trusted domains aren’t allowed.
  • You can’t test an alert, and you can’t restore a deleted one. You can edit only your own.
  • By default, alerts don’t work with data protected by IP-based VPC Service Controls access levels.

Then the part that catches teams out: any of 11 changes deactivates an alert at its next run, and the owner gets an email with the reason.

Four grouped cards listing the 11 changes that deactivate a Pro alert: three about the data, three about the chart, three about the report including changed default filters, and two about the owner losing Viewer access; cancelling Pro switches off every alert
Change the report’s default filters and every alert on it switches off at the next run.

Cancelling Pro deactivates all of them; renewing lets you view and reactivate them. An editor can also switch alerts off for a whole report: Share → settings gear → Report access settings → Disable alerts creation & viewing for viewers. Turning that back on doesn’t reactivate the old alerts.

Sending a Pro alert to Slack

A Slack channel’s email address is outside your organisation, so Data Studio rejects it with “The highlighted email address is blocked by the administrator” (meaning outside your org, not an admin block). Google’s workaround: send the alert to an internal address and forward it with a Gmail filter to the channel’s email address, which is a paid Slack feature.

I’d also keep a second, independent alert on anything that matters. On Google’s forum, a Pro user reported chart alerts going quiet after 14 November 2025; two more confirmed in January 2026 that queries ran but no emails arrived, until the original poster saw them working again on 23 January. User reports, not a Google incident notice, but two months is a long silence. A data health page is the free safety net.

On the free version: a traffic-light page and a schedule

Free Data Studio has no conditional send: a scheduled email always arrives. Make it worth opening:

  1. Build one “KPI health” page: a scorecard or table per number that matters. (Scorecards cover the set-up.)
  2. Add conditional formatting: a rule that changes font or background colour when a value meets a condition (tables and scorecards; AND or OR). The mechanics are in making a colour carry a rule; a reference line does a similar job on a time series.
  3. Schedule that page. Free reports get one schedule each (multiple schedules are a Pro feature, and since March 2025 so are Send now and custom subject lines), so make the health page the one it sends. The steps are in how to share and schedule a report.


It’s monitoring, not an alert: the red still needs someone to open the email. Chapter 20 of my ebook, Data Storytelling in Data Studio, covers tying conditional formatting to a rule you’ve written down, so the red on that page means one thing.

GA4 custom insights: free alerts for one property

A GA4 custom insight is a rule GA4 checks for you; when it triggers, it shows on the Insights dashboard and can email whoever you list. You can have up to 50 per property, and you need the Editor or Administrator role to create them.

  1. On the Insights card, click View all insights, then Create.
  2. Under Start from scratch, click Create new.
  3. Pick an Evaluation frequency: Hourly, Daily, Weekly or Monthly. Hourly is only available for web data, not app events.
  4. Keep the segment at All Users or change it, then set the Metric, condition and value (Google’s example: 30-day active users, % decrease more than, 20). Or choose Has anomaly, and GA4 decides what’s unusual with no value to enter.
  5. Name it, type the email addresses to notify, and click Create.

My starting three for any client property (my recommendation, not a Google list):

Rule Frequency Metric and condition What it catches
Tracking break Daily Key events, % decrease more than 90 A tag removed in a site release
Outage Hourly Sessions, % decrease more than 50 The site, or its tracking, going down
Catch-all Daily Sessions, Has anomaly Anything GA4 thinks is unusual

Google’s help page describes email only, so Slack needs a forwarding filter. (Reporting side: connect GA4 to Data Studio.)

Automated rules can change bids and budgets, but one rule type, Send email, changes nothing and just tells you. Google’s own example: a campaign with a $100 daily budget, and a rule at noon that emails you if it has already spent more than $50 that day.

  1. Click Campaigns, then the campaign whose spend you want to watch.
  2. Click the three-dot icon and select Create an automated rule.
  3. Under Type of rule, select Send email.
  4. Choose which ad groups it applies to.
  5. Under Condition, click +ADD, select Cost and set it to > $50.
  6. Set the frequency to Daily, 12:00 PM, using data from the Same day. Name it and save.

Rules usually run within 2 hours of their scheduled time, so a 9 a.m. rule may run up to 11. An email-only rule has nothing to undo; pause it to stop the emails. (Report side: connecting Google Ads to Data Studio.)

Search Console: the emails you already get, and what they don’t cover

Search Console emails site owners about important events, such as a new indexing issue or a change to your permission level. Preferences are per user, under User settings → Email preferences, where you can mute some messages or all of them.

The help pages describe events, not thresholds. For “clicks fell by half”, use a GA4 insight on organic sessions, or the next section’s script.

The free alert that works for any source: Apps Script on the Sheet behind your report

If a connector (or GA4’s Data API) already writes your numbers into a Google Sheet that Data Studio reads, a script can check that same Sheet every hour and send the alert. Apps Script is Google’s built-in scripting for Sheets (Extensions → Apps Script); a time-driven trigger runs a function on a timer, as often as every minute or as rarely as monthly.

Why not Sheets’ own Conditional notifications? They’re only on certain work or school accounts, and changes from external data (Google’s examples: Connected Sheets, IMPORTRANGE) don’t trigger them. Whether a connector add-on’s writes count as external isn’t stated; I wouldn’t bet an alert on it.

A flow diagram: a connector or the GA4 Data API fills the Data tab, which Data Studio reads; formulas on the Rules tab mark each rule FIRE or ok; an hourly trigger runs the script, which skips quiet hours and rules already sent today, then emails, posts to Slack and writes a row to the Log tab
The Sheet works out which rules fire; the script only sends, de-duplicates and logs.

The maths stays in the Sheet. A Rules tab holds one row per alert (client, metric, comparison, threshold, recipients, Slack yes/no), and formulas work out the latest value, the baseline (previous day or 28-day average) and whether it fires. The script reads that tab, sends each firing rule at most once a day per channel, and logs every send. Feed it complete days (ending yesterday): a half-finished today makes every “% drop” rule fire each morning. The core:

// Written from Google's Apps Script docs and Slack's webhook docs, not tested here.
// The full version (settings, quiet hours, GA4 pull) is in the alert kit.
// Rules tab, from row 5: A Active, B Rule, C Client, D Metric, E Comparison,
// F Threshold, G Email to, H Slack?, I Day, J Value, K Baseline, L Change, M Fires?

function checkAlerts() {
  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var tz = ss.getSpreadsheetTimeZone();
  var today = Utilities.formatDate(new Date(), tz, 'yyyy-MM-dd');
  var rules = ss.getSheetByName('Rules');
  var log = ss.getSheetByName('Log');
  if (rules.getLastRow() < 5) return;
  var rows = rules.getRange(5, 1, rules.getLastRow() - 4, 13).getValues();

  // What already went out today, per channel (Log: A time, B rule, C client, H channel, I status)
  var sent = {};
  if (log.getLastRow() > 1) {
    log.getRange(2, 1, log.getLastRow() - 1, 9).getValues().forEach(function (r) {
      if (r[0] instanceof Date && r[8] === 'sent' &&
          Utilities.formatDate(r[0], tz, 'yyyy-MM-dd') === today) sent[r[1] + '|' + r[2] + '|' + r[7]] = true;
    });
  }

  rows.forEach(function (r) {
    if (r[0] !== 'Yes' || r[12] !== 'FIRE') return;
    var key = r[1] + '|' + r[2] + '|';
    var msg = r[2] + ': ' + r[3] + ' was ' + r[9] + ' (rule: ' + r[1] + ', ' + r[4] + ' ' + r[5] + ')';
    if (r[6] && !sent[key + 'email'])
      log.appendRow([new Date(), r[1], r[2], r[3], r[9], r[10], r[5], 'email', sendEmail_(r[6], r[1], msg)]);
    if (r[7] === 'Yes' && !sent[key + 'slack'])
      log.appendRow([new Date(), r[1], r[2], r[3], r[9], r[10], r[5], 'slack', postToSlack_(msg)]);
  });
}

function sendEmail_(to, rule, msg) {
  if (MailApp.getRemainingDailyQuota() < String(to).split(',').length) return 'skipped: quota';
  try {
    MailApp.sendEmail({ to: to, subject: '[Alert] ' + rule, body: msg });
    return 'sent';
  } catch (e) { return 'failed: ' + e.message; }   // a bad address mustn't stop the other rules
}

function postToSlack_(msg) {
  // The webhook URL lives in Project Settings → Script Properties, never in a cell.
  var url = PropertiesService.getScriptProperties().getProperty('SLACK_WEBHOOK_URL');
  if (!url) return 'skipped: no webhook';
  var res = UrlFetchApp.fetch(url, { method: 'post', contentType: 'application/json',
    payload: JSON.stringify({ text: msg }), muteHttpExceptions: true });
  return res.getResponseCode() === 200 ? 'sent' : 'failed: HTTP ' + res.getResponseCode();
}

function installTrigger() {
  ScriptApp.getProjectTriggers().forEach(function (t) {
    if (t.getHandlerFunction() === 'checkAlerts') ScriptApp.deleteTrigger(t);
  });
  ScriptApp.newTrigger('checkAlerts').timeBased().everyHours(1).create();
}

To install it:

  1. Copy the alert kit (below) and fill in the Rules tab; check the Fires? column.
  2. Open Extensions → Apps Script, paste the code and save.
  3. For Slack: create an incoming webhook for the channel, then add it under Project Settings → Script Properties as SLACK_WEBHOOK_URL. The URL contains a secret and Slack revokes leaked ones, so keep it out of the Sheet.
  4. Select installTrigger in the function menu, click Run and accept the permissions prompt. Then test with a rule that’s already true, sent only to you.




Google may shift a trigger’s exact time within the hour, and quotas are per user:

Apps Script quota Gmail account Google Workspace
Email recipients per day 100 1,500
Total trigger runtime per day 90 min 6 h
Runtime per execution 6 min 6 min
URL Fetch calls (the Slack posts) per day 20,000 100,000

From Google’s Apps Script quotas, read 13 October 2026. Quotas reset 24 hours after the first request and are lower for Workspace trial accounts.

An hourly check is 24 runs a day against a 90-minute daily allowance. A rule emailing three people once a day uses three recipients, so a Gmail account covers 33 such rules. No connector? The kit’s pullGa4 function fills the Sheet through Apps Script’s Analytics Data service (GA4’s Data API). See connecting Google Sheets to Data Studio and automating the Sheet.

If a connector fills that Sheet: what the vendors’ own alerts do

Before writing a script, check whether your connector can send the alert:

Vendor Threshold alerts? Failure alerts? Channels Where you set it
Supermetrics Yes, in the Sheets add-on: equals, greater than, less than, is empty and more, on a cell or range Yes: failed scheduled refreshes and warehouse transfers Email; Slack and Teams via the channel’s email address Sheets add-on → Schedules → Email alerts / Slack alerts
Coupler.io No user-set thresholds After 5 consecutive failed runs it stops the schedule and emails the flow’s owner Email to the owner; up to 3 webhooks per flow on higher-tier plans, fired when a run completes Data flow settings
Porter Metrics Its overview page describes an alert builder with previous-period comparison, “included on every plan” Not stated Slack or Gmail; its destinations page lists both “Via Zapier + Google Sheets” Porter’s alert builder
Windsor.ai No alert feature described on its pricing page, homepage or sitemap
Catchr No alert feature described on its pricing page, homepage or sitemap

From each vendor’s own docs and pages, read 13 October 2026: Supermetrics alerts, Coupler.io notifications, Porter Metrics overview. Coupler.io’s page doesn’t name the tier for webhooks.

These alert on what the connector moves, not always what the client sees after the report’s filters. Supermetrics’ Sheets alert can replace the script; Coupler.io’s failure email covers the other half: a flow that broke. All-in-one platforms build alerts in too (Databox’s need a paid plan; AgencyAnalytics lists alerts and anomaly detection): see Data Studio vs Databox vs DashThis, AgencyAnalytics alternatives and Porter vs Windsor vs Supermetrics.

If your data is in BigQuery: a scheduled query that fails on purpose

BigQuery has no alert button, but two features make one. GoogleSQL’s ERROR() function returns an error with your own message, and a scheduled query (a query BigQuery runs on a timer, as often as every 5 minutes) can email you when a run fails. So write a query that fails when the threshold is crossed:

-- Written from Google's BigQuery docs, not tested here.
-- Fails (so BigQuery emails the person who scheduled it) when yesterday's
-- sessions are more than 50% below the average of the 28 days before.
-- Assumes a daily table with one row per day: day DATE, sessions INT64.
-- A missing day counts as zero, so a broken pipeline fires it too.
SELECT
  IF(
    IFNULL((SELECT SUM(sessions) FROM `my_project.my_dataset.daily_metrics`
            WHERE day = DATE_SUB(CURRENT_DATE(), INTERVAL 1 DAY)), 0)
      < 0.5 * (SELECT AVG(sessions) FROM `my_project.my_dataset.daily_metrics`
               WHERE day BETWEEN DATE_SUB(CURRENT_DATE(), INTERVAL 29 DAY)
                             AND DATE_SUB(CURRENT_DATE(), INTERVAL 2 DAY)),
    ERROR('Sessions yesterday were more than 50% below the 28-day average'),
    'ok'
  ) AS status;

Keep ERROR() inside IF(): Google warns that in a WHERE clause it may be evaluated before the other conditions. Then:

  1. Run it by hand once; with normal data it returns “ok”.
  2. Click Schedule, set a time after your data usually lands, and tick Send email notifications.
  3. The failure email goes only to the transfer administrator (whoever set it up), and you can’t change its content or recipients. Forward it with a mail rule, or use a Pub/Sub topic for anything else.

Scheduled queries are priced like any query; on-demand, the first 1 TiB processed each month is free. But they run on the BigQuery Data Transfer Service, which the free sandbox doesn’t include, so billing has to be on. Google’s pages: scheduling queries, run notifications, ERROR().

Which alert to set up first

Your situation First alert Second alert
Freelancer on free Data Studio, a handful of clients GA4 insights and an Ads email rule per client The Apps Script on one roll-up Sheet
In-house team on Workspace with Pro Pro alerts on the KPI charts (no blends) An independent fallback: a GA4 insight or the script
Agency at 20+ clients One roll-up Sheet or BigQuery table, one script, a row per client in Rules A data health page

Whichever you pick, run through this once:

  1. Pick three rules per client. Ignored alerts train people to ignore the next one.
  2. Decide who receives each one. Pro reaches your organisation only; the script, anyone.
  3. Test by forcing the condition, to yourself only.
  4. Log every send, and for Pro keep the deactivation emails.
  5. Review thresholds monthly. March’s threshold is December’s noise.
  6. Add a data health page. No threshold catches a connector quietly returning zero rows unless you wrote a rule for exactly that.

An alert that explains itself (“sessions fell because paid search paused”) is AI commentary, not a threshold: a separate post, writing client report commentary with AI without making things up.

Where to go next

Frequently asked questions

Where do I find alerts in Data Studio?

On a Pro report in View mode, hover over a chart and click the Create & view alerts bell. In Edit mode, or on non-Pro content, there’s no bell.

Do alert recipients need Data Studio Pro?

No, according to a Google staff answer on Google’s Data Studio forum: only the person creating the alert needs a licence. Recipients must be in your organisation.

Can Data Studio alerts go to Slack?

Not directly: addresses outside your organisation are blocked. Forward from Gmail to the channel’s email address (a paid Slack feature), or post from Apps Script to an incoming webhook.

Shopping Cart
Scroll to Top