Pipedream+DiffHook

Pipedream webhook trigger — powered by DiffHook

Drop a DiffHook webhook delivery onto a Pipedream HTTP trigger URL and the workflow runs only when the watched page, JSON API, or feed actually changes. No Scheduled Source, no hand-rolled diff, no wasted workflow credits.

Pipedream is a great host for Node or Python workflow logic, but turning "when this page changes" into a Pipedream trigger usually means a Scheduled Source + HTTP request + some diff-in-code + $.service.db for state. That's a lot of JavaScript to maintain just to avoid running the workflow every minute. DiffHook moves the monitoring out of Pipedream so the workflow only wakes up for the real signal.

Workflow

Wire DiffHook into Pipedream in 5 steps

No Scheduled Source, no state key, no diff code. One POST creates the pipeline.

01

Create a Pipedream workflow with an HTTP trigger

In Pipedream, start a new workflow and pick the HTTP / Webhook trigger. Pipedream gives you an endpoint URL like https://eoXXX.m.pipedream.net — copy it for step 3.

02

Pick the source DiffHook should watch

Decide what moves: a URL with a CSS selector, a JSON API with a JSONPath, or an RSS feed. DiffHook handles the fetch, the cache, and the diff — Pipedream only needs to receive events.

03

POST a monitor with a Pipedream delivery

Register the monitor with a webhook-type delivery whose URL is your Pipedream endpoint. DiffHook starts checking on the interval you pick and POSTs only on real changes.

04

Verify the HMAC signature in a code step

Add a Node.js code step that recomputes HMAC-SHA256 over steps.trigger.event.body using your DiffHook signing secret, compares it to the X-DiffHook-Signature header, and ends the workflow if it doesn't match.

05

Run your actual workflow logic

Now you're in normal Pipedream territory: query a database, call an LLM, push to Slack, update a CRM. The workflow only runs when DiffHook says something moved — no throttling, no idle executions.

API example

A Pipedream-backed monitor in one POST

The Pipedream endpoint goes straight into deliveries[0].url. DiffHook handles retry, replay, and cross-region delivery for you.

POST /v1/monitors
POST https://api.diffhook.com/v1/monitors
Authorization: Bearer $DIFFHOOK_API_KEY
Content-Type: application/json

{
  "type": "html_css",
  "url": "https://target.example.com/changelog",
  "css_selector": ".entry:first-child",
  "interval_seconds": 300,
  "deliveries": [
    {
      "type": "webhook",
      "url": "https://eoabc123.m.pipedream.net"
    }
  ]
}

Importable workflow

Start from a ready-made Pipedream workflow

A GitHub Gist with the HMAC check step, a JSON-body parser, and a Slack / Discord destination. Fork, paste your DiffHook signing secret, deploy.

FAQ

Pipedream webhook — common questions

Why not use Pipedream's Scheduled Source to poll the URL myself?
You can — but you end up rebuilding DiffHook in a code step. State (to dedupe), retry (for 5xx), backoff (for 429), and diff logic (for "what actually changed") all become your responsibility. DiffHook does those things in one POST. The Pipedream workflow stays focused on the downstream business logic.
How do I verify the HMAC signature in Pipedream?
A six-line Node.js code step: compute crypto.createHmac('sha256', secret).update(steps.trigger.event.body).digest('hex') and compare to steps.trigger.event.headers['x-diffhook-signature']. Reject on mismatch by calling $.flow.exit(). The Pipedream template on GitHub has the exact code.
What's in the webhook body?
A flat JSON object: monitor_id, event ("change"), url, selector or json_path, previous_value, current_value, detected_at, and delivery_id. For rendered monitors you also get render_engine and render_status. Full schema is versioned and documented.
Can Pipedream handle the burst when I create a monitor?
DiffHook throttles the first-run delivery so a newly-created monitor doesn't flood Pipedream on its initial baseline fetch. Changes after baseline fire as they happen — you can always set a delivery filter in DiffHook to batch them per hour if the workflow has sustained-throughput limits.
Does this work with Pipedream Connect / server-side workflows?
Yes — the DiffHook webhook is a plain signed HTTP POST, so any Pipedream product that exposes an HTTP endpoint accepts it. Connect, Sources, and Workflows all work identically; just drop the endpoint URL into deliveries[0].url on the monitor.

Related workflows

Also great with DiffHook

Stop writing diff-and-dedupe code in Pipedream

Free tier, HMAC-signed webhooks, 60-second checks, full REST API. Pipedream workflow only runs on real changes.