Documentation Index
Fetch the complete documentation index at: https://nuntly.com/docs/llms.txt
Use this file to discover all available pages before exploring further.
To create and manage webhooks, see the webhooks guide.
Prerequisites
- A webhook created in your Nuntly account. See the webhooks guide.
- The signing secret for that webhook (displayed once at creation)
- An HTTPS endpoint on a publicly accessible server
Webhook headers
Every request Nuntly sends includes two signature headers:| Header | Description |
|---|---|
webhook-timestamp | Unix timestamp in milliseconds when the request was signed |
webhook-signature | Signature string in the format t={unix_seconds},v0={sig1},{sig2} |
t= value is the signing timestamp in seconds. The values after v0= are one or more HMAC-SHA256 signatures encoded as hex strings. During a secret rotation, both the current and previous secret sign each delivery, so you may see two signatures separated by a comma.
Verify the webhook signature
You must verify the signature before processing the event. This prevents your endpoint from acting on forged requests. How verification works:- Remove the
whsec_prefix from your signing secret to get the raw key. - Parse the
webhook-signatureheader to extract the timestamp (t=value) and the hex signatures (afterv0=). - Build the signed content:
{timestamp}.{raw_body}(thet=value, a dot, then the raw request body). - Compute
HMAC-SHA256(raw_key, signed_content)and hex-encode the result. - Compare your computed signature against each signature from step 2. Accept if any one matches.
Implement the endpoint
If you use
express.json() as global middleware, it will consume the raw body before your route handler runs. Apply express.text() specifically
to your webhook route, as shown above.Best practices
- Respond quickly. Return a
200response as soon as you receive and verify the event. If processing takes time, queue the work for background execution. - Always verify the signature. Never skip signature verification, even in development.
- Handle duplicates. Nuntly may retry failed deliveries. Use the event ID to deduplicate if needed.
- Log raw payloads. Store the raw event body for debugging and auditing.
- Handle bounces and complaints. When you receive an
email.bouncedoremail.complainedevent, stop sending to that address to protect your sender reputation.
Monitor webhook delivery
You can see whether your webhook events are being delivered successfully in the Webhooks tab of the Observability page.Learn more
Set up webhooks
Create, edit, and configure webhooks from the dashboard or SDK
Monitor your activity
Track webhook delivery status and email event logs
