Automate Website Uptime Monitoring with n8n & Google Sheets

This workflow automates website uptime monitoring by checking status codes of listed sites in Google Sheets every 6 hours, sending alerts on downtime via Gmail and Slack, and logging events back in Sheets.
scheduleTrigger
googleSheets
slack
+5
Workflow Identifier: 2067
NODES in Use: Schedule Trigger, Google Sheets, SplitInBatches, HTTP Request, Set, Switch, Gmail, Slack

Press CTRL+F5 if the workflow didn't load.

Learn how to Build this Workflow with AI:

Visit through Desktop for Best experience

Opening Problem Statement

Meet Sarah, the IT manager for a growing e-commerce business. She’s juggling multiple responsibilities, but one of her biggest headaches is manually checking whether her company’s websites and services are up and running. Every few hours, she’s pulling up a list of URLs, sending test requests, and then manually logging statuses in a spreadsheet. When a site goes down, she scrambles to send alert emails and Slack messages to her team. Not only is this process time-consuming, but it’s also prone to errors and delays, which can cause costly downtime and lost sales.

Sarah estimates she wastes around 4 hours per week just monitoring uptime manually. Even worse, sometimes alerts come late, meaning the team reacts slowly to outages, increasing downtime duration and frustrating customers.

What This Automation Does

This unique n8n workflow automates Sarah’s website uptime monitoring with the help of Google Sheets, HTTP requests, Gmail, and Slack notifications. Here’s exactly what it does when it runs every 6 hours:

  • Reads a list of websites (URLs) to monitor from a centralized Google Sheet.
  • Performs HTTP GET requests to each website to check their current HTTP status code.
  • Calculates whether the site’s status has changed (UP or DOWN) based on the response code compared to the last known state.
  • Sends alert notifications through Gmail email and Slack messages automatically if any site status changes from UP to DOWN or vice versa.
  • Logs every uptime event with details and timestamps into individual Google Sheets tabs for historic record-keeping.
  • Updates the main Google Sheet dashboard with the current status of each site so Sarah can quickly glance at real-time uptime data.

This automation saves Sarah roughly 4 hours and eliminates the risk of missing critical downtime alerts, improving her team’s incident response time dramatically.

Prerequisites ⚙️

  • n8n account (cloud or self-hosted). If you prefer self-hosting, Hostinger offers great options to host n8n reliably: Host n8n yourself.
  • Google Sheets account with:
    • A spreadsheet to store website URLs and statuses.
    • Sheet tabs for each website to log uptime events.
  • Gmail account configured with OAuth2 credentials for sending email notifications 📧
  • Slack workspace and bot token for sending alert messages 💬

Step-by-Step Guide to Build This Workflow

Step 1: Set up the Schedule Trigger Node

Go to Triggers → Schedule Trigger. Set it to run every 6 hours by selecting the “hours” interval and putting 6 in the hours field. This step ensures that your workflow only runs every six hours to reduce unnecessary checks and resource use.

Expected result: Your workflow will start executing every 6 hours automatically.

Common mistake: Forgetting to save or activate the workflow after editing the schedule.

Step 2: Connect the Google Sheets ‘Get Sites’ Node

Navigate to Nodes → Google Sheets and configure to Read the spreadsheet containing your list of websites.

Enter the following details:

  • Document ID: Your Google Sheets document ID (extracted from the URL)
  • Sheet Name: Usually the ‘dashboard’ sheet with all sites listed.

Make sure your Google Sheets credentials are connected via OAuth2.

Expected outcome: This node pulls all the website URLs to monitor.

Common mistake: Not granting the correct permissions to n8n app in your Google account.

Step 3: Iterate Over Each Website with SplitInBatches Node

Add a SplitInBatches node from the core nodes and connect it to the Google Sheets node’s output. This node allows processing each website URL one at a time.

Expected result: The workflow will handle each site independently, preventing overload.

Common mistake: Not properly linking the output to the next node; ensure connections are correct.

Step 4: Perform HTTP Request to Check Website Status

Add an HTTP Request node connected to the SplitInBatches output.

Configure it as a GET request to the URL:

= $json.Property 

Enable “Full Response” in the response options to retrieve status codes.

Expected output: HTTP response containing status code for the site.

Common mistake: Leaving “Never Error” unchecked, which might stop workflow on errors.

Step 5: Calculate Status Changes Using Set Node

Use a Set node to analyze the previous status and current response. Configure expressions to set the following Boolean values:

  • UP_FROM_UP: true if currently UP and was previously UP
  • DOWN_FROM_DOWN: true if currently DOWN and was previously DOWN
  • UP_FROM_DOWN: true if currently UP but was DOWN
  • DOWN_FROM_UP: true if currently DOWN but was UP

This logic detects state changes, crucial for sending alerts only when needed.

Example code snippet inside the node’s parameters section:

{
  date: {{$json.headers.date}},
  Property: {{$json.Property}},
  UP_FROM_UP: {{$json.statusCode < 400 && $json.Status === 'UP'}},
  DOWN_FROM_DOWN: {{$json.statusCode >= 400 && $json.Status === 'DOWN'}},
  UP_FROM_DOWN: {{$json.statusCode < 400 && $json.Status === 'DOWN'}},
  DOWN_FROM_UP: {{$json.statusCode >= 400 && $json.Status === 'UP'}}
}

Common mistake: Misconfiguring the expressions or forgetting to map current and previous statuses properly.

Step 6: Route Based on Status Changes Using Switch Node

Add a Switch node configured with conditions matching the above Boolean assignments. Create four distinct routes to handle:

  • UP_FROM_UP (continues up)
  • UP_FROM_DOWN (recovered)
  • DOWN_FROM_DOWN (continues down)
  • DOWN_FROM_UP (failure)

This lets the workflow react differently depending on the situation, such as sending alerts only on changes.

Common mistake: Incorrectly naming or missing one of the output keys.

Step 7: Log Uptime Events in Google Sheets

Connect each output of the Switch node to a Google Sheets Append node. Map relevant data such as:

  • date
  • period (year-month format)
  • property (website URL)
  • status flags (UP_FROM_UP, DOWN_FROM_DOWN, etc.)

>

Each event is appended to a specific sheet named after the website to keep historical data organized.

Common mistake: Not specifying the correct sheet name dynamically.

Step 8: Update Site Status in Master Dashboard

Add another Google Sheets node configured to append or update the “dashboard” sheet with the current status of each site.

Mapping example:

  • Property (site URL)
  • Status (“UP” or “DOWN”) based on status booleans

Expected outcome: Your main dashboard sheet now reflects real-time statuses for quick overview.

Common mistake: Failing to use “append or update” operation, leading to duplicated rows.

Step 9: Send Alerts via Gmail and Slack

Use Gmail and Slack nodes connected to appropriate Switch outputs where status has changed (DOWN_FROM_UP or UP_FROM_DOWN). Configure message templates dynamically as:

From: n8n uptime
Date: {{date}}

{{Property}} is {{DOWN_FROM_UP ? 'DOWN' : 'UP'}}

Ensure proper credentials and channels are set.

Common mistakes: Incorrect email addresses, Slack channel IDs, or lack of permissions.

Customizations ✏️

  • Change Check Frequency: In the Schedule Trigger node, modify the interval to every hour or daily depending on your needs.
  • Add More Notifications: Add extra Slack channels, SMS via Twilio, or webhook triggers by duplicating and configuring alert nodes.
  • Enhance Status Logic: Use additional HTTP request checks like response time or content checks by expanding the HTTP node parameters.
  • Filter Sites Dynamically: Add a Filter node before the SplitInBatches to only test sites marked “active” in your sheet.

Troubleshooting 🔧

Problem: Workflow stops with HTTP request errors or timeouts

Cause: The “Never Error” option may be disabled in the HTTP Request node, causing workflow to halt on errors.

Solution: Enable “Never Error” to let the workflow continue even if a site is down or unreachable.

Problem: Google Sheets nodes fail to authenticate or read data

Cause: Incorrect or revoked OAuth credentials for Google Sheets.

Solution: Reauthenticate by editing the Google Sheets node credentials and ensure the n8n app has proper access to your sheets.

Problem: Alerts not sent to Slack or Email

Cause: Missing or invalid credentials or incorrect channel/email configuration.

Solution: Double-check Slack API tokens, Gmail OAuth credentials, and recipient/channel IDs. Test connections individually from n8n node settings.

Pre-Production Checklist ✅

  • Verify Google Sheets document contains correct columns: “Property” (URL) and “Status” (UP/DOWN).
  • Test HTTP requests manually on sample URLs to verify response codes.
  • Run the workflow manually once and watch logs for errors or unexpected behavior.
  • Confirm alert messages are received in your email and Slack channel.
  • Backup your Google Sheets data before deployment in case of any data loss.

Deployment Guide

Activate your workflow by toggling the “Active” switch in n8n after completing your setup and tests.

Regularly monitor your workflow execution logs inside n8n to catch any failures.

If you want to scale, consider self-hosting n8n for more control and higher execution quotas.

FAQs

Can I use another email provider instead of Gmail?

Yes, you can replace the Gmail node with other email nodes supported by n8n, but you’ll need to adjust credentials and message settings accordingly.

Does this workflow consume many API credits?

Because it uses Google Sheets and Slack APIs, usage depends on your volume. For moderate site lists and checking every 6 hours, the API limits are generally well within free tier limits.

Is my monitored data secure?

Yes, sensitive information like credentials are managed securely in n8n. Data flows are confined inside your setup, and OAuth tokens encrypt your sessions.

Conclusion

By building this workflow, you’ve transformed a tedious manual website uptime check into a reliable, automated monitoring solution using n8n, Google Sheets, Gmail, and Slack.

You now save several hours weekly while avoiding missed outages thanks to timely alerts and detailed logging.

Next, consider adding SMS notifications, integrating uptime reports into dashboards like Grafana, or expanding monitoring to API endpoints.

Happy automating, and feel confident knowing your websites are watched around the clock!

Promoted by BULDRR AI

Related Workflows

Automate Viral UGC Video Creation Using n8n + Degaus (Beginner-Friendly Guide)

Learn how to automate viral UGC video creation using n8n, AI prompts, and Degaus. This beginner-friendly guide shows how to import, configure, and run the workflow without technical complexity.
Form Trigger
Google Sheets
Gmail
+37
Free

AI SEO Blog Writer Automation in n8n

A complete beginner guide to building an AI-powered SEO blog writer automation using n8n.
AI Agent
Google Sheets
httpRequest
+5
Free

Automate CrowdStrike Alerts with VirusTotal, Jira & Slack

This workflow automates processing of CrowdStrike detections by enriching threat data via VirusTotal, creating Jira tickets for incident tracking, and notifying teams on Slack for quick response. Save hours daily by transforming complex threat data into actionable alerts effortlessly.
scheduleTrigger
httpRequest
jira
+5
Free

Automate Telegram Invoices to Notion with AI Summaries & Reports

Save hours on financial tracking by automating invoice extraction from Telegram photos to Notion using Google Gemini AI. This workflow extracts data, records transactions, and generates detailed spending reports with charts sent on schedule via Telegram.
lmChatGoogleGemini
telegramTrigger
notion
+9
Free

Automate Email Replies with n8n and AI-Powered Summarization

Save hours managing your inbox with this n8n workflow that uses IMAP email triggers, AI summarization, and vector search to draft concise replies requiring minimal review. Automate business email processing efficiently with AI guidance and Gmail integration.
emailReadImap
vectorStoreQdrant
emailSend
+12
Free

Automate Email Campaigns Using n8n with Gmail & Google Sheets

This n8n workflow automates personalized email outreach campaigns by integrating Gmail and Google Sheets, saving hours of manual follow-up work and reducing errors in email sequences. It ensures timely follow-ups based on previous email interactions, optimizing communication efficiency.
googleSheets
gmail
code
+5
Free