GA4 Anomaly Detection with Automated Slack & Email Alerts

Go to Workflow
0 views
Built by Artur Artur
Created on June 05, 2026

Description

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:**

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 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

Open the Set (Define variables) node and fill: PROPERTY_ID, LOOKBACK_DAYS, ALERT_PCT, 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_THRESHOLD or ALERT_PCT.

Output example

Nodes Used (4)

Code
n8n-nodes-base.code
Gmail
n8n-nodes-base.gmail
HTTP Request
n8n-nodes-base.httpRequest
Slack
n8n-nodes-base.slack