13-node n8n workflow using Firecrawl, Google Sheets, and Gmail to monitor websites for content changes with diff alerts.
A 13-node monitoring system that turns Google Sheets into a version control database for any website on the internet. Competitive intelligence, compliance monitoring, price tracking -- whatever your reason for watching a website, this workflow handles it with Firecrawl-powered scraping that captures JavaScript-rendered content most monitors miss entirely. When something changes, you know about it within minutes, not days.
| Nodes | Category | Complexity | Key Integrations |
|---|---|---|---|
| 13 | Monitoring & Alerts | Intermediate | Firecrawl, Google Sheets, Gmail, Webhook |
15-25 minutes including Firecrawl API key registration, Google Sheets template setup, and webhook trigger configuration.
This workflow monitors any website for content changes by scraping the current version, comparing it against the last known snapshot stored in Google Sheets, and alerting you via Gmail when differences are detected. It uses Firecrawl instead of basic HTTP requests, which means it captures content from JavaScript-heavy single-page applications that traditional scrapers cannot render.
The comparison engine is built with Code nodes that perform intelligent diff analysis -- not just "something changed," but what specifically changed. New sections, removed content, modified pricing, updated terms -- every change is identified and categorized in the alert.
The workflow also maintains a full change log in Google Sheets, creating a historical record of every detected modification with timestamps. This turns a simple monitoring tool into a compliance audit trail or competitive intelligence archive.
Triggers
Scraping & Data
Logic & Processing
Notifications
Webhook Trigger -- An external call hits the webhook endpoint with the target URL. This can be triggered by a cron job, another workflow, or any system capable of making HTTP requests.
Firecrawl Scrape -- The HTTP Request node calls the Firecrawl API, which renders the target page including all JavaScript-generated content. The response includes clean, structured text content stripped of HTML noise.
Load Previous Version -- Google Sheets is queried for the last stored version of this URL's content. If no previous version exists, the current scrape becomes the baseline and the workflow stores it as the first snapshot.
Content Comparison -- A Code node performs a detailed diff between the current scrape and the stored version. It identifies additions, deletions, and modifications at the paragraph level, not just a binary changed/unchanged flag.
IF Branch -- If changes are detected, the workflow proceeds to the alert path. If the content is unchanged, it returns a "no changes" response to the webhook caller and exits.
Alert and Log -- The changed path does two things simultaneously: it sends a detailed Gmail alert with the specific changes highlighted, and it appends a new row to the change log sheet with a timestamp, the change summary, and the full current content.
Update Baseline -- The current content replaces the previous version in Google Sheets, establishing the new baseline for the next comparison cycle.
Webhook Response -- The workflow returns a structured JSON response to the caller indicating whether changes were found and a summary of what changed. This enables upstream systems to react programmatically.
Firecrawl for JavaScript-rendered pages. Most website monitoring tools use basic HTTP requests that only capture static HTML. Modern websites render critical content via JavaScript -- pricing tables, dynamic product listings, terms of service -- which basic scrapers miss entirely. Firecrawl renders the full page, capturing everything a real browser would see.
Google Sheets as a simple version control database. Instead of spinning up a dedicated database for content snapshots, this workflow uses Google Sheets as a lightweight version control system. It stores current content, maintains a change history log, and provides an instantly accessible audit trail that non-technical stakeholders can review directly.
Dual webhook response paths. The workflow returns different responses depending on whether changes were detected. This allows upstream systems to branch their own logic based on the monitoring result, enabling sophisticated multi-workflow automation chains.
Tip: Key Techniques
Firecrawl over Basic HTTP -- When monitoring modern websites, always use a rendering-capable scraper. JavaScript-rendered content is invisible to standard HTTP requests, which means you could miss the exact changes you are trying to detect.
Google Sheets as State Store -- For monitoring workflows that need simple state persistence (last known version, change history), Google Sheets is often the right tool. It provides a human-readable data store, built-in version history, and zero infrastructure overhead.
Dual Webhook Response -- Returning different payloads for "changed" vs "unchanged" states allows upstream workflows to branch intelligently. This pattern is essential for building monitoring chains that only trigger expensive downstream processes when something actually changes.
The workflow.json file in this folder can be imported directly into your n8n instance via Settings > Import Workflow.
I build production n8n and Cloudflare automation for teams — the same engineering behind HarperFlow. Fixed-price, escrow-protected, US-based.