Webhook payloads contain metadata only — never secret values. A delivery tells you which key changed, in which environment, and when. It never includes the value of the secret, before or after the change. To read a value, use
krypt pull or the dashboard.Creating a webhook
Webhooks are configured per project, and only owners and admins can manage them.1
Open the Webhooks tab
In your Krypt dashboard, open a project and select the Webhooks tab.
2
Add the endpoint
Enter a name (3–50 characters) and the URL that will receive deliveries.The URL must use
https://. Private, loopback, and internal addresses are rejected — both when you save the webhook and again on every delivery.3
Choose environment and events
Scope the webhook to
development, staging, production, or all environments, then pick which of the three events it should receive.4
Save the signing secret
On save, Krypt shows a signing secret — a 64-character hex string used to sign every delivery.It is shown once and cannot be recovered. Copy it and store it with your other secrets before closing the dialog.
Events
Three events exist:
A delivery is sent only when both conditions hold: the event is in the webhook’s subscribed list, and the webhook’s environment is
all or matches the environment of the changed secret.
Restoring a secret to a previous version fires
secret.updated, the same as an ordinary edit. The payload does not distinguish the two.Payload
Every secret event sends this JSON body:
These five fields are the entire payload. In particular, it does not identify who made the change — to see the actor, check the project’s activity log in the dashboard.
Two headers accompany every delivery:
Test ping
The Test action on a webhook sends a ping so you can confirm your endpoint is reachable. The test payload has a different shape to a real event:- There is no
keyand noenvironmentfield. A receiver that assumes those are always present will break on a test ping. - It carries
test: trueand a human-readablemessage. - It ignores the webhook’s event and environment filters — a test ping is delivered even if the webhook only subscribes to
secret.deletedinproduction.
X-Krypt-Event: test.ping. The webhook must be active — testing a disabled webhook returns an error instead of sending.
Verifying signatures
Every delivery is signed with HMAC-SHA256 using your webhook’s signing secret. The digest is computed over the raw request body and sent as:Endpoint authentication
If your receiver needs its own credentials on top of the signature, set an auth type when creating the webhook. Krypt then adds anAuthorization header to every delivery:
Basic credentials are entered as
username:password. Stored credentials are encrypted at rest and never returned in full by the API — reads show a masked value only.
This is optional and independent of signing. The signature is always sent; endpoint auth is for receivers that additionally gate on a token.
Limitations
Current behaviour, stated plainly so you can design your receiver around it: Because nothing is retried, your only record of a delivery is the dashboard: each webhook in the project’s Webhooks tab shows when it last fired and the HTTP status it returned, and the project’s activity log lists every individual success and failure. Additional constraints worth knowing:- Only
https://URLs are accepted; private, loopback, and internal addresses are blocked, and the URL is re-validated on every delivery. - Only owners and admins can create, edit, test, or delete webhooks.
- On a Free project that is over the team-member cap, the project becomes read-only and webhooks stop firing entirely — including test pings.
Next steps
- Roles and permissions — who can manage webhooks
- Encryption and security — how Krypt protects stored secrets
- CLI commands — push and pull the secrets these events describe