Webhooks
Get notified when a deployment changes state. Register an HTTPS endpoint for one of your stores and DIGHUb will
POSTa small JSON event each time a deploy moves throughqueued → building → ready(orerror) — wire it to a Slack bot, a CI dashboard, or your own automation. Every event is signed so you can verify it came from DIGHUb.
You can register, list, and remove webhooks today, and the event contract below (payload shape + signature) is stable and final, so you can build and test your receiver against it now. The DIGHUb-side delivery of live deploy events is being rolled out — until it's enabled for your store, a registered endpoint won't yet receive events. The contract won't change when it turns on.
The mental model
A deploy is the act of publishing a new capsule — staged, then anchored on-chain. As it progresses, it passes through a few states. A webhook is your endpoint subscribing to those state changes for one store: when the deploy's state changes, DIGHUb sends a signed JSON POST to your URL. You verify the signature, then act on it.
You register a webhook per store, and only the store owner can manage its webhooks.
Events
The event field is always deploy.<state>. There are four states:
| Event | Meaning |
|---|---|
deploy.queued | A deploy has been accepted and queued. No content root exists yet. |
deploy.building | The capsule is being compiled / staged. |
deploy.ready | The deploy succeeded — the new root is anchored and the capsule is live. (terminal) |
deploy.error | The deploy failed. (terminal) |
A successful deploy goes queued → building → ready; a failure goes … → error. ready and error are terminal — no further events follow for that deploy.
Payload
The request body is a single JSON object (Content-Type: application/json):
{
"event": "deploy.ready",
"store_id": "<64-hex store id>",
"root": "<64-hex content root>",
"state": "ready",
"confirmations": 3,
"at": 1719700000
}
| Field | Type | Description |
|---|---|---|
event | string | The event name, deploy.<state> (e.g. deploy.ready). |
store_id | string | The store the deploy belongs to (hex). |
root | string | null | The new content root hash (hex). null for a queued event, before a root exists. |
state | string | The deploy state: queued, building, ready, or error. Mirrors event. |
confirmations | number | On-chain confirmation depth at the moment the event was emitted (0 while building). |
at | number | Emit time, Unix seconds. |
A (store_id, root) pair is a capsule — so a deploy.ready event identifies exactly which capsule went live, readable immediately over the dig RPC by its URN / chia:// address.