Integration Guide

Webhooks & Integrations

Enterprise-grade uptime for distributed systems

99.99% Delivery Success Rate
42ms Avg Dispatch Latency
15m Max Retry Window

Setup & Configuration

Connect SentinelPulse alerts to your internal incident response tools, Slack channels, or custom automation pipelines via HTTP POST webhooks. Configure endpoints directly from your dashboard under Settings > Integrations > Webhooks.

Real-Time Triggers
Dispatch events instantly when monitors transition to down, exceed latency thresholds, or when TLS certificates approach expiration within 14 days.
🔄
Retry Logic
SentinelPulse automatically retries failed deliveries using exponential backoff. Endpoints returning non-2xx responses are retried up to 5 times over a 15-minute window.
🎛️
Filtering Rules
Apply granular filters to route specific events. Limit webhooks to critical monitors, specific regions like eu-west-1, or only trigger on status changes.

To create a new webhook, enter a descriptive name (e.g., "PagerDuty Production Alerts") and a valid HTTPS URL. SentinelPulse validates the endpoint immediately upon saving. Ensure your firewall allows inbound traffic from SentinelPulse edge nodes.

JSON Payload Structure

All webhook events follow a consistent envelope schema. The data object contains event-specific details, while the root object provides metadata for routing and verification.

{ "id": "evt_8x9y7z6w5v4u3t2s", "type": "monitor.alert.triggered", "timestamp": "2023-11-14T09:42:18Z", "account_id": "acc_sentinel_4f3e2d1c", "data": { "monitor_id": "mon_a1b2c3d4", "monitor_name": "api.sentinelpulse.io - Production", "status": "down", "previous_status": "up", "response_code": 503, "latency_ms": 12450, "check_region": "us-east-1", "error_message": "Connection timed out after 10000ms" } }

Common event types include monitor.alert.triggered, monitor.alert.resolved, certificate.expiring.soon, and sla.report.generated. The data payload varies slightly by event type but always includes the monitor_id and current status.

Verifying Webhook Signatures

Secure your integration by validating the HMAC-SHA256 signature included in the X-SentinelPulse-Signature header. This ensures incoming requests originate from SentinelPulse and have not been tampered with in transit.

Critical: Always verify signatures before processing event data to prevent spoofed alerts and unauthorized automation triggers.

Generate the expected signature by computing HMAC-SHA256 over the raw request body using your webhook secret. Compare this computed value against the header using a constant-time comparison function to mitigate timing attacks.

const crypto = require('crypto'); const secret = process.env.SENTINELPULSE_WEBHOOK_SECRET; const payload = rawRequestBody; const signature = req.headers['x-sentinelpulse-signature']; const expectedSignature = crypto .createHmac('sha256', secret) .update(payload) .digest('hex'); if (!crypto.timingSafeEqual(Buffer.from(signature), Buffer.from(expectedSignature))) { return res.status(401).json({ error: 'Invalid signature' }); } // Signature verified, process event res.status(200).json({ status: 'ok' });

Find your webhook secret in the SentinelPulse dashboard under the webhook configuration. If you rotate the secret, active webhooks will pause until the new secret is propagated. SentinelPulse supports signature versioning via the X-SentinelPulse-Sig-Version: v1 header.