There are two webhook surfaces:
wazapin.webhooks manages webhook endpoints and deliveries.
@wazapin/sdk/webhooks verifies signed deliveries on your server.
Manage webhook endpoints
const settings = await wazapin.webhooks.listSettings();
const { data: endpoint } = await wazapin.webhooks.createEndpoint({
url: "https://yourapp.com/webhooks/wazapin",
event_types: ["message.new", "message.status_update"],
});
await wazapin.webhooks.test(endpoint.id);
Rotate a signing secret
const { data } = await wazapin.webhooks.rotateSecret("endpoint_123");
console.log(data.signing_secret);
Retry a delivery
const deliveries = await wazapin.webhooks.listDeliveries({ limit: 50 });
await wazapin.webhooks.retryDelivery("msg_123");
Verify webhook signatures
Install the optional peer dependency:
npm install @wazapin/sdk svix
import { parseWebhookEvent, verifyWebhook } from "@wazapin/sdk/webhooks";
const verified = verifyWebhook(
rawBody,
req.headers,
process.env.WAZAPIN_WEBHOOK_SECRET!,
);
const event = parseWebhookEvent(verified.eventType, verified.body);
Verify the signature using the raw request body. Do not verify a re-serialized JSON object.