n8n website monitoring — powered by DiffHook
Set up website monitoring for n8n in one POST. DiffHook checks the URL on the interval you pick, detects text or full-HTML diffs, and fires an n8n webhook the moment the page moves.
Website monitoring built inside n8n usually means Schedule → HTTP Request → some hash comparison in a Code node → a little state held in Supabase or a JSON datastore. That's fine when you're watching one page, painful when you scale to ten, and a maintenance trap once the pages change layout. DiffHook keeps the monitoring concerns outside n8n so the workflow stays focused on what happens after a change, not on detecting it.
The complete n8n + DiffHook hub
See every n8n recipe, template, and pricing tier in one place.
Workflow
Monitor any website from n8n in 5 steps
One POST per URL. From there, n8n sees only the changes — never the no-op fetches.
Expose a webhook in n8n
Create an n8n workflow with a Webhook trigger node (POST, production URL). Copy the URL — you'll paste it into the DiffHook monitor next.
Pick the diff mode
Use html_text for text-only diffs (ignores formatting and attributes), or html_css with a selector for a tight, section-level watcher. Either way, DiffHook stores the previous snapshot for you.
Create the monitor
POST /v1/monitors with the URL, the diff mode, an interval, and a webhook delivery pointing at your n8n URL. Checks start within seconds — no deploy, no extra infrastructure.
Handle the change in n8n
When the page moves, DiffHook POSTs an HMAC-signed payload to n8n containing previous_value, current_value, detected_at, and the monitor id. Verify the signature, then act.
Notify, escalate, or update
Route the diff to Slack, ping PagerDuty if a status page flipped, update a Notion database, or kick off a downstream workflow. n8n only runs on real moves — zero idle executions.
API example
A text-diff monitor in one POST
html_text ignores attribute churn so a status-page tweak doesn't spam n8n. Switch to html_css with a selector when you need surgical precision.
POST https://api.diffhook.com/v1/monitors
Authorization: Bearer $DIFFHOOK_API_KEY
Content-Type: application/json
{
"type": "html_text",
"url": "https://target.example.com/status",
"interval_seconds": 60,
"deliveries": [
{
"type": "webhook",
"url": "https://n8n.yourdomain.com/webhook/site-changed"
}
]
}Importable workflow
Start from a ready-made n8n workflow
The template verifies the HMAC, formats the diff into Markdown, and posts to a Slack channel. Drop in your DiffHook secret and Slack webhook and it's production-ready.
FAQ
n8n website monitoring — common questions
Why not just use n8n's Schedule trigger to check a URL?
How fast does DiffHook check?
What's in the webhook payload?
How do I avoid noise from dynamic elements like dates and ad slots?
Can I run this from n8n Cloud?
Related workflows
Also great with DiffHook
n8n webhook
Dig into the webhook payload — HMAC verification, dedupe, and replay — on the generic n8n-webhook page.
n8n web scraping
Scrape and diff HTML with a CSS selector for richer structured extraction inside n8n.
n8n RSS monitor
If the source is a feed rather than an HTML page, one change here: switch type to rss.
Monitor competitor websites
A concrete walk-through of the competitive-intel pattern on DiffHook, ready to mirror in n8n.
Replace a monitoring script
Migrating a Python or Node monitoring script? This guide walks through the swap.
API endpoint monitoring
Same webhook-first pattern for JSON APIs — JSONPath instead of CSS selectors.
Stop monitoring on a cron. Monitor on change.
Three free monitors, hourly checks, HMAC-signed webhooks, full REST API. No credit card.