Zapier webhook trigger — the minute a page changes
DiffHook watches any URL, RSS feed, or JSON API and fires a Zapier Catch Hook the moment the content moves. No Schedule by Zapier, no Code step, no premium-only integrations — just a webhook.
The usual "run a Zap when this website changes" build is Schedule by Zapier + Webhooks by Zapier GET + a Code step to compare responses. It works, but it eats a Zap task on every poll (whether anything changed or not), and the diff logic lives in your head. DiffHook does the polling and the diff on its side and fires a single task into Zapier per real change. Tasks line up with events; your Zap plan goes a lot further.
Workflow
Wire DiffHook into a Zap in 5 steps
Standard Webhooks by Zapier — no premium tier, no Code step, no Schedule trigger.
Create a Zap that starts with a Catch Hook
In Zapier, pick Webhooks by Zapier → Catch Hook as your trigger. Zapier gives you a unique URL — copy it, you'll paste it into the DiffHook monitor in step 3.
Decide what DiffHook should watch
Pick the source: a URL with a CSS selector for websites, a JSON path for APIs, or a feed URL for RSS. DiffHook handles fetch, cache, and diff — Zapier never polls anything.
Point a DiffHook monitor at the Catch Hook
POST to /v1/monitors with the source config, an interval, and a webhook-type delivery whose URL is the Zapier Catch Hook. DiffHook starts checking within seconds; Zapier starts listening.
Verify HMAC inside Zapier
Add a Filter step (or a Paths fork) that checks the X-DiffHook-Signature header using the static signing secret DiffHook gives you. Zapier exposes header values as named fields — no Code step needed.
Branch on the change payload
Use the fields Zapier pulls out of the JSON body — previous_value, current_value, url, detected_at — to drive downstream actions: Slack message, Airtable row, Gmail draft, or whatever your Zap does.
API example
A Zapier-backed monitor, one POST
The Zap Catch Hook URL goes in deliveries[0].url. DiffHook takes over from there — no Schedule, no Code, no polling.
POST https://api.diffhook.com/v1/monitors
Authorization: Bearer $DIFFHOOK_API_KEY
Content-Type: application/json
{
"type": "html_css",
"url": "https://competitor.example.com/features",
"css_selector": ".pricing-table",
"interval_seconds": 600,
"deliveries": [
{
"type": "webhook",
"url": "https://hooks.zapier.com/hooks/catch/000000/abc123/"
}
]
}Importable workflow
Copy a ready-made Zap
A template Zap with the Catch Hook, a signature-check Filter, and a Slack step. Import the blueprint from GitHub, paste your DiffHook webhook URL and secret, and publish.
FAQ
Zapier webhook — common questions
Why not just use Zapier's Schedule + Webhooks GET to poll a URL?
Do I need the Webhooks by Zapier premium app?
Can a single Zap handle multiple monitors?
What does the JSON body look like?
Can I retry or replay a failed delivery?
Related workflows
Also great with DiffHook
Zapier web scraping
Same pattern for HTML scraping — Zapier receives the scraped diff, no Code step needed.
n8n webhook
Prefer self-hosted automation? Point the same DiffHook monitor at an n8n webhook instead.
Pipedream webhook
For longer Node/Python steps and longer retention, Pipedream works with the same DiffHook payload.
API endpoint monitoring
Watching a JSON API instead of HTML? Same Zap, JSONPath in place of a CSS selector.
RSS to webhook
Feed-to-webhook if your source is RSS rather than HTML — same Zapier Catch Hook destination.
Make.com web scraping
Migrating from Zapier? Make.com's webhook module accepts the identical DiffHook payload.
Stop burning Zap tasks on empty polls
One task per real change, HMAC-signed payloads, Catch Hook trigger, free tier. Set up in under five minutes.