GA4 Anomaly Detection with Automated Slack & Email Alerts
## Who's it for Teams that monitor traffic, signups, or conversions in Google Analytics 4 and want automatic Slack/email alerts when a channel suddenly spikes or drops. ## What it does This n8n template pulls daily GA4 metrics, detects outliers with a rolling mean and z-score, and sends alerts with a sparkline chart. It supports per-channel analysis (e.g., `sessionDefaultChannelGroup`) and consolidates multiple anomalies into a single email while posting each one to Slack. ## How it works - **HTTP Request (GA4 Data API)** fetches `sessions`, `newUsers`, `conversions`, `bounceRate` by `date` + channel. - **Code** calculates 7-day moving average and z-scores, flags anomalies, and builds QuickChart links. - **If** filters on `alert === true` and optional `ALERT_ME` toggle. - **Slack** posts an alert + chart. - **Email** sends one summary email (subject + HTML table + charts). ## Requirements - GA4 OAuth2 credential in n8n. - Slack API credential (bot with chat:write). - Email credential (SMTP or service). - GA4 property ID and at least several recent days of data. ## Where to find your GA4 Property ID - **In the GA UI:** 1. Open **Google Analytics** → bottom-left **Admin** (gear). 2. In the **Property** column, click **Property settings**. 3. Copy **Property ID** - it's a **numeric** value (e.g., `481356553`). - **From the URL (quick way):** When you're inside the GA4 property, the URL looks like: `/analytics/web/#/p123456789/` → the digits after **`p`** are your **Property ID** (`123456789` in this example). - **What *not* to use:** - **Measurement ID** (looks like `G-XXXXXXX`) - that's the data stream ID, **not** the property ID. - **Universal Analytics IDs** (`UA-XXXXX-Y`) - those are legacy and won't work with GA4 Data API. - **In this template:** Put that numeric ID into the **Set → `PROPERTY_ID`** field. The HTTP node path `properties/{{ $json.PROPERTY_ID }}:runReport` expects **only the number**, no prefixes. ## How to set up 1. Open the **Set (Define variables)** node and fill: `PROPERTY_ID`, `LOOKBACK_DAYS`, `ALERT_PC`, `Z_THRESHOLD`, `CHANNEL_DIM`, `ALERT_ME`. 2. Connect your **Google Analytics OAuth2**, **Slack**, and **Email** credentials. 3. In **Email Send**, map `Subject` → `{{$json.emailSubject}}` and **HTML** body → `{{$json.emailHtml}}`. Keep **Execute once** enabled. 4. Run the workflow. ## How to customize - Change the moving-average window (`WINDOW/MA_WINDOW`) and chart range (`LAST_N_DAYS_CHART`). - Swap `CHANNEL_DIM` (e.g., source/medium) to analyze different dimensions. - Add/remove metrics in the GA4 request and the metrics list in the Code node. - Tweak thresholds to reduce noise: raise `Z_THRESHOLD` or `ALERT_PC`. ## Output example 
Who's it for
Teams that monitor traffic, signups, or conversions in Google Analytics 4 and want automatic Slack/email alerts when a channel suddenly spikes or drops.
What it does
This n8n template pulls daily GA4 metrics, detects outliers with a rolling mean and z-score, and sends alerts with a sparkline chart. It supports per-channel analysis (e.g., sessionDefaultChannelGroup) and consolidates multiple anomalies into a single email while posting each one to Slack.
How it works
- HTTP Request (GA4 Data API) fetches
sessions,newUsers,conversions,bounceRatebydate+ channel. - Code calculates 7-day moving average and z-scores, flags anomalies, and builds QuickChart links.
- If filters on
alert === trueand optionalALERT_MEtoggle. - Slack posts an alert + chart.
- Email sends one summary email (subject + HTML table + charts).
Requirements
- GA4 OAuth2 credential in n8n.
- Slack API credential (bot with chat:write).
- Email credential (SMTP or service).
- GA4 property ID and at least several recent days of data.
Where to find your GA4 Property ID
-
In the GA UI:
- Open Google Analytics → bottom-left Admin (gear).
- In the Property column, click Property settings.
- Copy Property ID - it's a numeric value (e.g.,
481356553).
-
From the URL (quick way):
When you're inside the GA4 property, the URL looks like:/analytics/web/#/p123456789/→ the digits afterpare your Property ID (123456789in this example). -
What not to use:
- Measurement ID (looks like
G-XXXXXXX) - that's the data stream ID, not the property ID. - Universal Analytics IDs (
UA-XXXXX-Y) - those are legacy and won't work with GA4 Data API.
- Measurement ID (looks like
-
In this template:
Put that numeric ID into the Set →PROPERTY_IDfield. The HTTP node pathproperties/{{ $json.PROPERTY_ID }}:runReportexpects only the number, no prefixes.
How to set up
- Open the Set (Define variables) node and fill:
PROPERTY_ID,LOOKBACK_DAYS,ALERT_PC,Z_THRESHOLD,CHANNEL_DIM,ALERT_ME. - Connect your Google Analytics OAuth2, Slack, and Email credentials.
- In Email Send, map
Subject→{{$json.emailSubject}}and HTML body →{{$json.emailHtml}}. Keep Execute once enabled. - Run the workflow.
How to customize
- Change the moving-average window (
WINDOW/MA_WINDOW) and chart range (LAST_N_DAYS_CHART). - Swap
CHANNEL_DIM(e.g., source/medium) to analyze different dimensions. - Add/remove metrics in the GA4 request and the metrics list in the Code node.
- Tweak thresholds to reduce noise: raise
Z_THRESHOLDorALERT_PC.
Output example
New buyers can create an account from the cart to unlock a controlled $10 first-purchase credit on eligible orders of $25+.
Related bundle
Web Scraping & Research Engine
8 hand-picked workflows for $59.00.
That is $7.38 each, vs $9.99 for this one alone.
View bundleSecure checkout powered by Stripe
Support
How to import this workflow into n8n
- 1Purchase or download the workflow to get the n8n workflow JSON file.
- 2In your n8n instance, open Workflows and choose "Import from File" (or paste the JSON with Ctrl+V on the canvas).
- 3Open each node marked with a credential warning and connect your own accounts and API keys.
- 4Run the workflow once manually to verify the data flow, then toggle it to Active.
Related Data & Analytics workflows
- Generate AI viral videos with VEO 3 and upload to TikTok$14.99
- Generate a daily multi-asset market report with TwelveData, Groq and Google Sheets$14.99
- Build an OpenAI RAG system with document upload, semantic search and caching$24.99
- Automate Website Content Scraping and SEO Keyword Extraction with GPT-4o-mini and Airtable$14.99
- Process Contact Form Submissions with Validation and MongoDB Storage$14.99
- Add webhook data to a Google Sheet$2.99
More from Artur
Need this deployed? We'll set it up for you.
Our automation experts deploy this workflow in your stack, connect your accounts, and verify it works — or build a custom solution from scratch.