n8n+DiffHook

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.

n8n

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.

01

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.

02

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.

03

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.

04

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.

05

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 /v1/monitors
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?
You can — but you're building a monitor. You still need snapshot storage, a diff algorithm that ignores timestamps and session cookies, retry/backoff on transient 503s, and a dedupe layer so the workflow doesn't fire on every check. DiffHook is that monitor, managed, with one POST to set it up.
How fast does DiffHook check?
Down to 60-second intervals on the paid plans, hourly on the free tier. Most website-change workflows live comfortably at 5-15 minute intervals; bump it to 60 seconds around a competitor launch or a regulatory filing you're watching.
What's in the webhook payload?
A JSON object with monitor_id, event ("change"), url, previous_value, current_value, text_diff (a minimal edit script), detected_at, and a delivery_id. The full schema is versioned — DiffHook adds fields but never breaks existing ones.
How do I avoid noise from dynamic elements like dates and ad slots?
Two levers. Tighten the CSS selector so you only watch the block that matters (pricing card, changelog list, status banner). And for pages with timestamps, switch to html_text mode — DiffHook strips repeating date patterns and common noise before diffing.
Can I run this from n8n Cloud?
Yes. The monitor talks to DiffHook, not to n8n — the only n8n-side requirement is a reachable Webhook trigger URL. n8n Cloud, self-hosted, Docker, and k8s all work identically; just paste the production webhook URL into the monitor's delivery.

Related workflows

Also great with DiffHook

Stop monitoring on a cron. Monitor on change.

Three free monitors, hourly checks, HMAC-signed webhooks, full REST API. No credit card.