Webhook Endpoints
Receive real-time event notifications about your infrastructure. Configure endpoints, manage signatures, and monitor deliveries.
Endpoint Configuration
ActiveEndpoint Status
Receives all selected events
Recent Deliveries
| Event | Status | Response | Time |
|---|---|---|---|
| server.provisioned | 200 OK | 245ms | 2m ago |
| deployment.failed | 502 Retry | 1.2s | 15m ago |
| backup.completed | 200 OK | 189ms | 42m ago |
| firewall.updated | Pending | — | 1h ago |
Event Catalog
server.provisioned
Triggered when a new VPS or bare metal server finishes initialization and is ready for use.
Compute
server.terminated
Fires when a server instance is permanently deleted or shut down for billing purposes.
Compute
deployment.started
Initiated when a new container deployment or Kubernetes rollout begins processing.
Kubernetes
deployment.failed
Alerts when a deployment encounters a critical error or exceeds rollback thresholds.
Kubernetes
backup.completed
Successful completion of a scheduled or manual snapshot/backup operation.
Storage
firewall.updated
Triggered when security group rules or WAF policies are modified in any region.
Security
Test & Simulator
Ready{
"event": "server.provisioned",
"timestamp": "2025-04-15T10:32:00Z",
"data": {
"server_id": "srv-8x29k4",
"region": "us-east-1",
"status": "active",
"ip": "192.168.1.45"
}
}
Security & Verification
All webhooks are signed using HMAC-SHA256. Verify the signature in your endpoint by comparing the Cloudnexus-Signature header against your secret.
- Always validate signatures server-side
- Use HTTPS endpoints only
- Implement idempotency keys to prevent duplicate processing
- Timeout after 5 seconds to avoid queue buildup
Code Example
Node.js (Express)
const crypto = require('crypto');
const express = require('express');
app.post('/webhook', (req, res) => {
const sig = req.headers['cloudnexus-signature'];
const payload = JSON.stringify(req.body);
const expected = crypto.createHmac('sha256', SECRET)
.update(payload).digest('hex');
if (sig !== expected) return res.status(401).send('Invalid');
processEvent(req.body);
res.status(200).send('OK');
});