Integrations
Connect PulseGuard with your favorite tools. Receive alerts where your team already works.
Slack
Receive PulseGuard alerts directly in your Slack channels. Get notified when monitors go down, recover, or when incidents are created.
Setup Instructions
- 1Go to api.slack.com/apps and create a new Slack app (or use an existing one).
- 2Navigate to Incoming Webhooks and activate the feature. Click Add New Webhook to Workspace and select the channel where you want alerts.
- 3Copy the webhook URL (it looks like
https://hooks.slack.com/services/T.../B.../xxx). - 4In PulseGuard, go to Settings > Notifications > Add Channel and select Slack. Paste the webhook URL and give the channel a name.
- 5Click Test to send a test notification and verify the integration works.
Example Alert Payload
{
"blocks": [
{
"type": "section",
"text": {
"type": "mrkdwn",
"text": ":red_circle: *Monitor Down: Production API*\nURL: https://api.example.com/health\nRegion: us-east-1\nError: Connection timeout after 30s"
}
},
{
"type": "context",
"elements": [
{
"type": "mrkdwn",
"text": "PulseGuard | Jan 15, 2025 at 10:30 AM UTC"
}
]
}
]
}Discord
Send PulseGuard alerts to a Discord channel using Discord webhooks. Alerts include rich embeds with monitor details.
Setup Instructions
- 1In Discord, right-click the channel and select Edit Channel. Go to Integrations > Webhooks.
- 2Click New Webhook, give it a name (e.g., "PulseGuard"), and click Copy Webhook URL.
- 3In PulseGuard, go to Settings > Notifications > Add Channel and select Discord. Paste the webhook URL.
Example Message Format
{
"embeds": [
{
"title": "Monitor Down: Production API",
"description": "https://api.example.com/health is not responding.",
"color": 15548997,
"fields": [
{ "name": "Region", "value": "us-east-1", "inline": true },
{ "name": "Response Time", "value": "Timeout (30s)", "inline": true },
{ "name": "Downtime", "value": "Started 2 minutes ago", "inline": true }
],
"footer": {
"text": "PulseGuard"
},
"timestamp": "2025-01-15T10:30:00Z"
}
]
}PagerDuty
Coming SoonPagerDuty integration is coming soon. PulseGuard will send events using the PagerDuty Events API v2 format to automatically create and resolve incidents.
Setup Instructions
- 1In PagerDuty, go to Services > Service Directory and either create a new service or select an existing one.
- 2Under Integrations, click Add Integration. Search for Events API v2 and add it.
- 3Copy the Integration Key (a 32-character hex string).
- 4In PulseGuard, go to Settings > Notifications > Add Channel and select PagerDuty. Paste the integration key.
How it works: When a monitor goes down, PulseGuard sends a trigger event to PagerDuty with the monitor details. When the monitor recovers, PulseGuard sends a resolve event to automatically resolve the PagerDuty incident. Severity is mapped as: critical monitors create P1 incidents, and standard monitors create P3 incidents.
Microsoft Teams
Coming SoonMicrosoft Teams integration is coming soon. You'll be able to receive PulseGuard alerts in Teams channels using incoming webhook connectors.
Setup Instructions
- 1In Microsoft Teams, navigate to the channel where you want alerts. Click the ... menu and select Connectors (or Workflows in newer Teams versions).
- 2Find Incoming Webhook and click Configure. Give it a name (e.g., "PulseGuard Alerts") and optionally upload a custom icon.
- 3Click Create and copy the webhook URL.
- 4In PulseGuard, go to Settings > Notifications > Add Channel and select Microsoft Teams. Paste the webhook URL and save.
Custom Webhooks
For full flexibility, configure a custom webhook URL. PulseGuard will send POST requests to your endpoint whenever an event occurs. This is ideal for building custom integrations, triggering CI/CD pipelines, or forwarding events to internal tools.
Webhook Payload
PulseGuard sends the following JSON payload for each event:
{
"event": "monitor.down",
"timestamp": "2025-01-15T10:30:00Z",
"monitor": {
"id": "mon_abc123",
"name": "Production API",
"type": "http",
"url": "https://api.example.com/health"
},
"details": {
"region": "us-east-1",
"statusCode": null,
"responseTime": null,
"error": "Connection timeout after 30s",
"consecutiveFailures": 3
}
}Event Types
| Event | Description |
|---|---|
| monitor.down | Monitor detected a failure (after threshold) |
| monitor.up | Monitor recovered after being down |
| incident.created | A new incident was created |
| incident.resolved | An incident was marked as resolved |
Verifying Webhook Signatures
PulseGuard signs every webhook request with an HMAC-SHA256 signature so you can verify the request is authentic. The signature is included in the X-PulseGuard-Signature header. Your webhook secret is available in Settings > Notifications > Webhook > Signing Secret.
// Node.js signature verification example
const crypto = require("crypto");
function verifyWebhook(payload, signature, secret) {
const expected = crypto
.createHmac("sha256", secret)
.update(payload)
.digest("hex");
return crypto.timingSafeEqual(
Buffer.from(signature),
Buffer.from(expected)
);
}
// In your webhook handler:
app.post("/webhooks/pulseguard", (req, res) => {
const signature = req.headers["x-pulseguard-signature"];
const isValid = verifyWebhook(
JSON.stringify(req.body),
signature,
process.env.PULSEGUARD_WEBHOOK_SECRET
);
if (!isValid) {
return res.status(401).json({ error: "Invalid signature" });
}
// Process the event
const { event, monitor, details } = req.body;
console.log(`Event: ${event} for monitor: ${monitor.name}`);
res.status(200).json({ received: true });
});