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 
- Platform
- n8n
- Category
- Data & Analytics
- Price
- $9.99
- Creator
- Artur
- if
- set
- code
- gmail
- slack
- stickyNote
- httpRequest
- scheduleTrigger
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.