Back to Docs
Integrations

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

  1. 1Go to api.slack.com/apps and create a new Slack app (or use an existing one).
  2. 2Navigate to Incoming Webhooks and activate the feature. Click Add New Webhook to Workspace and select the channel where you want alerts.
  3. 3Copy the webhook URL (it looks like https://hooks.slack.com/services/T.../B.../xxx).
  4. 4In PulseGuard, go to Settings > Notifications > Add Channel and select Slack. Paste the webhook URL and give the channel a name.
  5. 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

  1. 1In Discord, right-click the channel and select Edit Channel. Go to Integrations > Webhooks.
  2. 2Click New Webhook, give it a name (e.g., "PulseGuard"), and click Copy Webhook URL.
  3. 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 Soon

PagerDuty integration is coming soon. PulseGuard will send events using the PagerDuty Events API v2 format to automatically create and resolve incidents.

Setup Instructions

  1. 1In PagerDuty, go to Services > Service Directory and either create a new service or select an existing one.
  2. 2Under Integrations, click Add Integration. Search for Events API v2 and add it.
  3. 3Copy the Integration Key (a 32-character hex string).
  4. 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 Soon

Microsoft Teams integration is coming soon. You'll be able to receive PulseGuard alerts in Teams channels using incoming webhook connectors.

Setup Instructions

  1. 1In Microsoft Teams, navigate to the channel where you want alerts. Click the ... menu and select Connectors (or Workflows in newer Teams versions).
  2. 2Find Incoming Webhook and click Configure. Give it a name (e.g., "PulseGuard Alerts") and optionally upload a custom icon.
  3. 3Click Create and copy the webhook URL.
  4. 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

EventDescription
monitor.downMonitor detected a failure (after threshold)
monitor.upMonitor recovered after being down
incident.createdA new incident was created
incident.resolvedAn 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 });
});