Receiver examples
Bun receiver
Start a signed webhook receiver with Bun 1.3 or later.
Save receiver-core.mjs and bun-receiver.mjs in the same directory.
export CASCADEHOOK_SIGNING_SECRET='YOUR_ENDPOINT_SIGNING_SECRET'
bun bun-receiver.mjsConfiguration
The receiver listens on http://127.0.0.1:9000/webhooks. Set HOST and PORT
if another listener is needed. Put it behind a public HTTPS host or reverse
proxy and register that HTTPS URL in Cascadehook.
Set RECEIPTS_FILE to choose the persistent inbox path. Restart the receiver
after installing or changing CASCADEHOOK_SIGNING_SECRET.
Connect the endpoint
Once the receiver is running, verify ownership and enable delivery. Then publish a new event matching its subscriptions and confirm a successful delivery.
Adapter source
import { createReceiver, MAX_BODY_BYTES } from "./receiver-core.mjs";
const receive = createReceiver({
secret: process.env.CASCADEHOOK_SIGNING_SECRET,
receiptsFile: process.env.RECEIPTS_FILE,
});
const port = Number(process.env.PORT ?? 9000);
if (!Number.isInteger(port) || port < 0 || port > 65535)
throw new Error("Invalid PORT.");
const server = Bun.serve({
hostname: process.env.HOST ?? "127.0.0.1",
port,
maxRequestBodySize: MAX_BODY_BYTES,
idleTimeout: 15,
fetch: receive,
});
console.info(
"Receiver listening on http://127.0.0.1:" + server.port + "/webhooks",
);