Zapier+DiffHook

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.

01

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.

02

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.

03

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.

04

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.

05

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 /v1/monitors
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?
Because it burns a Zap task on every poll, changed or not. A 15-minute poll across a year is ~35,000 tasks just to catch a handful of actual changes. DiffHook does the polling outside Zapier and fires one task per real change — on a Starter plan, that's the difference between surviving the week and hitting the overage wall.
Do I need the Webhooks by Zapier premium app?
Catch Hook is part of the free Webhooks by Zapier trigger — available on every Zapier plan. You do not need the premium-only Zapier Code step for this setup, because HMAC verification can be done with a Filter step that compares the X-DiffHook-Signature header against a fixed value.
Can a single Zap handle multiple monitors?
Yes. Point several DiffHook monitors at the same Catch Hook URL, then branch in the Zap on monitor_id or on url. Useful when you want one notification destination (e.g. a marketing Slack channel) fed by several different DiffHook monitors.
What does the JSON body look like?
Flat, Zapier-friendly. monitor_id, event, url, selector (or json_path for API monitors), previous_value, current_value, detected_at, delivery_id. Zapier's auto-parse picks up every top-level field so you can map them into downstream actions without a Code step.
Can I retry or replay a failed delivery?
Yes. DiffHook retries 5xx responses automatically (exponential backoff, 24-hour horizon). For 4xx responses — or if your Zap was paused — open the monitor in the dashboard, find the delivery, and replay it with one click. Zapier receives it as a fresh event.

Related workflows

Also great with DiffHook

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.