Webhooks
Webhooks are a way to get notified when an event happens on your blog.
- A blog can have up to 5 webhooks
- Each webhook can subscribe to one or more events
cache.single{ path: string }cache.templatescache.allWebhook Request
When an event happens, a POST request is sent to the webhook URL. The request
body is a JSON object with the following properties. The data property is the event
data. See the above table for the event data structure.
{
"subdomain": "my-subdomain",
"timestamp": 1645208678,
"event": "cache.single",
"data": {}
}Security
Each webhook request includes an X-Signature header containing an HMAC-SHA256 signature
of the request body, signed with your webhook’s secret key. You can find the secret in the Console under
your webhook settings.
To verify the signature:
- Hash the request body using HMAC-SHA256 with your webhook’s secret key.
- Compare the resulting hash with the value of the
X-Signatureheader.
const signature = request.headers['x-signature'];
const expected = crypto
.createHmac('sha256', env.HB_WEBHOOK_SECRET)
.update(JSON.stringify(request.body))
.digest('hex');
if (signature !== expected) {
return 'Unauthorized';
}Response & Retries
We expect a 200 HTTP Response Code from your server to mark the webhook as success. If we get any other response code or fail to reach your servers, we will retry to send the webhook for 3 more times after
- 1 minute
- 5 minutes
- 30 minutes
If all fail, we will mark that webhook as failed and will no longer send it automatically.