This repository demonstrate a simple webhook sender and receiver implementation using Node.js, Express, and TypeScript.
- Receiver – An Express server that listens for incoming webhook POST requests at
/webhook, verifies the HMAC-SHA256 signature, and processes events. - Sender – A script that sends sample webhook events (
user.created,order.paid, etc.) to the receiver with a signed payload.
# Install dependencies
npm install
# Build TypeScript
npm run build
# Start the receiver
npm start
# In another terminal, run the sender demo
npm run sender# Run receiver with ts-node (no build step)
npm run receiver
# Run tests
npm testsrc/
app.ts – Express app and webhook route
receiver.ts – Server entry point
sender.ts – Webhook sender demo
tests/
receiver.test.ts – Integration tests for the receiver
Webhook payloads are signed using HMAC-SHA256. The receiver verifies the signature before processing any event. Always use a strong, secret key stored in environment variables (not hardcoded) in production.