Skip to content
cascadehook.docs
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.mjs

Configuration

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

bun-receiver.mjs
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",
);

On this page