Send daily SEO digest from Google Search Console to Discord with heartbeat alerts

Go to Workflow
0 views
Built by Wongsakon H. Wongsakon H.
Created on June 25, 2026

Description

Quick overview
This workflow runs daily to pull Google Search Console performance data, log it to Google Sheets, send a daily SEO digest to Discord with day-over-day deltas, and ping an external heartbeat endpoint; if any step errors, it immediately pings the heartbeat service’s /fail endpoint.

How it works
Runs every day at 08:00 on a schedule trigger.
Queries the Google Search Console Search Analytics API for query-level data from two days ago.
Aggregates the results into totals (clicks, impressions, average position) and the top queries.
Appends the day’s metrics to Google Sheets and reads the sheet to fetch the previous day’s row for comparison.
Calculates percentage changes vs yesterday and sends a formatted SEO digest to Discord, including a warning when clicks drop sharply.
Posts a success ping with the key metrics to an external heartbeat service (for example, checkilo or Healthchecks.io) so missing runs can be detected.
If any node throws an error, an error-triggered branch posts a /fail ping to the heartbeat service with the error message and failing step.

Setup
Add a Google OAuth2 credential with the https://www.googleapis.com/auth/webmasters.readonly scope and replace the URL-encoded Search Console property in the Google Search Console API request URL.
Add a Google Sheets credential and replace REPLACE_WITH_SHEET_ID, ensuring the target sheet has headers like date, clicks, impressions, avgPosition, and topQueries.
Add your Discord webhook credentials (or swap the Discord step for another notification service) and set the destination accordingly.
Create a checkilo/Healthchecks.io monitor and replace REPLACE_WITH_YOUR_PING_SLUG in both the success heartbeat URL and the /fail URL.
In the workflow settings, set this workflow as the Error Workflow so the error-triggered /fail ping runs when executions fail.

Nodes Used (4)

Code
n8n-nodes-base.code
Discord
n8n-nodes-base.discord
Google Sheets
n8n-nodes-base.googleSheets
HTTP Request
n8n-nodes-base.httpRequest