Webhook Setup
Express.js
import express from 'express';
const app = express();
app.use(express.json());
// Use as middleware
app.post('/webhook', whatsapp.expressMiddleware());
app.get('/webhook', whatsapp.expressMiddleware());
app.listen(3000, () => {
console.log('Webhook server running on port 3000');
});Next.js (App Router)
// app/api/webhook/route.ts
import { NextRequest, NextResponse } from 'next/server';
export async function POST(req: NextRequest) {
const body = await req.json();
const result = await whatsapp.processWebhook({
method: 'POST',
headers: Object.fromEntries(req.headers),
body,
query: Object.fromEntries(req.nextUrl.searchParams)
});
return NextResponse.json(result.data, { status: result.status });
}
export async function GET(req: NextRequest) {
const result = await whatsapp.processWebhook({
method: 'GET',
headers: Object.fromEntries(req.headers),
query: Object.fromEntries(req.nextUrl.searchParams)
});
if (result.challenge) {
return new NextResponse(result.challenge, { status: 200 });
}
return NextResponse.json(result.data, { status: result.status });
}Next.js (Pages Router)
// pages/api/webhook.ts
import type { NextApiRequest, NextApiResponse } from 'next';
export default async function handler(
req: NextApiRequest,
res: NextApiResponse
) {
await whatsapp.nextjsHandler(req, res);
}Standalone HTTP Server
// Start built-in server
const server = whatsapp.startWebhookServer(3000, '/webhook', () => {
console.log('Webhook server started on port 3000');
});
// Stop server
await whatsapp.stopWebhookServer();Generic/Universal Handler
// Works with any framework
const result = await whatsapp.processWebhook({
method: 'POST',
headers: req.headers,
body: req.body,
query: req.query,
rawBody: req.rawBody
});Source captured: 2026-10-11