Ga4 anomaly detection with automated Slack & email alerts
DISCOUNT 20%
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_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_THRESHOLDorALERT_PCT.