Webhooks
Managing Webhooks
This article covers how to manage a webhook after you create one. You can edit its details, rotate its signing secret, monitor event delivery, and delete it.
Editing a webhook
Update a webhook's name, URL, or selected events at any time.
- Go to Settings > Tools & customisations > Apps & APIs > Webhooks
- Select the webhook and tap Edit
- Update the name, URL, or selected events
- Tap Update
Deleting a webhook
Deleting a webhook stops all future event notifications to that endpoint. This action is permanent and cannot be undone.
- Go to Settings > Tools & customisations > Apps & APIs > Webhooks
- Select the webhook
- Tap Delete webhook
- Tap Delete to confirm
Your signing secret
Every webhook has a signing secret. Nomod uses it to sign every payload sent to your endpoint. You use it to verify that incoming requests came from Nomod and have not been altered.
To find your signing secret:
- Go to Settings > Tools & customisations > Apps & APIs > Webhooks
- Select the webhook
- Find the Signing secret field
- Tap the Copy icon to copy the secret
Your signing secret is masked by default.
Verifying webhook signatures
Every request Nomod sends to your endpoint is signed. Verifying the signature protects your endpoint from fake or altered payloads.
Each webhook request includes three headers:
svix-id: a unique ID for this specific webhook messagesvix-timestamp: the time the webhook was sent, as a Unix timestampsvix-signature: the signature to verify
If any of these headers are missing, your server should return a 400 response and reject the request.
To verify a signature:
- Extract the three svix headers from the incoming request
- Check that
svix-timestampis within five minutes of the current time. If the difference is more than five minutes, return a 400 response and reject the request - Build the signed string by combining
svix-id,svix-timestamp, and the raw request body, joined by dots:svix-id.svix-timestamp.raw_body - Remove the
whsec_prefix from your signing secret, then Base64-decode the remaining string to get the raw secret bytes - Compute HMAC-SHA256 using the raw secret bytes as the key and the signed string as the message, then Base64-encode the result
- Compare your computed signature against the value in
svix-signature. Strip thev1,prefix first. If any signature in the header matches, the request is valid. If none match, return a 400 response - Return a
200 OKresponse, then process the event
Rotating your signing secret
If you suspect your signing secret has been compromised, you can generate a new one immediately. Your old secret will remain valid for 24 hours after rotation, giving your server time to update before the old key stops working.
- Go to Settings > Tools & customisations > Apps & APIs > Webhooks
- Select the webhook
- Find the Signing secret field
- Tap the rotate icon
- Review the confirmation prompt and tap Generate to confirm
Copy your new signing secret and update your server code within 24 hours. After this window, the old secret expires, and any requests still using it will fail.
Viewing event logs
To view events for a specific webhook:
- Go to Settings > Tools & customisations > Apps & APIs > Webhooks
- Select the webhook
- Tap the Events tab
To view events across all your webhooks:
- Go to Settings > Tools & customisations > Apps & APIs > Webhooks
- Tap the Events tab
Getting event details
Tap any event in the list to open its detail view. You will see:
- The event name and timestamp
- The delivery status, integration type, Event Log ID, Webhook ID, and Webhook URL
- The full event payload in JSON format
To save the event data, tap Copy or Download to export it as a JSON file.
To create a webhook, see How Webhooks Work.