Skip to main content

Documentation Index

Fetch the complete documentation index at: https://infisical.com/docs/llms.txt

Use this file to discover all available pages before exploring further.

Send certificate alert notifications to any HTTP endpoint. Webhook alerts let you integrate Infisical with your own systems, automation tools, or services that aren’t directly supported.
Alerts are configured per Application and apply to all certificates within that Application.

Create a Webhook Alert

1

Navigate to your Application

Go to Certificate Manager → Applications and select your Application.
2

Create an alert

Go to the Settings tab and find the Alerting section. Click Create Alert.
3

Configure alert settings

SettingDescription
Alert TypeCertificate Expiration, Issuance, Renewal, or Revocation
Alert NameA slug-friendly name like tls-expiry-alert
DescriptionOptional context about this alert
Alert Before(Expiration only) Time before expiry to trigger, e.g., 30d
4

Add a webhook channel

Add a Webhook notification channel:
SettingDescription
URLThe HTTPS endpoint to receive notifications
Signing Secret(Optional) Secret to verify webhook authenticity
The webhook URL must use HTTPS.

Webhook Event Types

Each alert type maps to a corresponding CloudEvents event type:
Alert TypeEvent TypeSubject
Certificate Expirationcom.infisical.pki.certificate.expirationcertificate-expiration-alert
Certificate Issuancecom.infisical.pki.certificate.issuancecertificate-issuance-alert
Certificate Renewalcom.infisical.pki.certificate.renewalcertificate-renewal-alert
Certificate Revocationcom.infisical.pki.certificate.revocationcertificate-revocation-alert

Webhook Payload Format

Webhook notifications are sent as HTTP POST requests with a CloudEvents compliant JSON payload.
{
  "specversion": "1.0",
  "type": "com.infisical.pki.certificate.expiration",
  "source": "/applications/<application-id>/alerts/<alert-id>",
  "id": "<unique-event-id>",
  "time": "2024-01-15T10:30:00.000Z",
  "datacontenttype": "application/json",
  "subject": "certificate-expiration-alert",
  "data": {
    "alert": {
      "id": "<alert-id>",
      "name": "tls-expiry-alert",
      "alertBefore": "30d",
      "applicationId": "<application-id>"
    },
    "certificates": [
      {
        "id": "<certificate-id>",
        "serialNumber": "1234567890",
        "commonName": "api.example.com",
        "san": ["api.example.com", "www.api.example.com"],
        "profileName": "TLS Server",
        "notBefore": "2024-01-01T00:00:00.000Z",
        "notAfter": "2024-12-31T23:59:59.000Z",
        "status": "active",
        "daysUntilExpiry": 30
      }
    ],
    "metadata": {
      "totalCertificates": 1,
      "viewUrl": "https://app.infisical.com/cert-manager/applications/<application-id>/certificates"
    }
  }
}

Webhook Signature Verification

If you configure a signing secret, Infisical includes an x-infisical-signature header with each request:
x-infisical-signature: t=<timestamp>,v1=<signature>
ComponentDescription
t=<timestamp>Unix timestamp (milliseconds) when signed
v1=<signature>HMAC SHA256 signature

Verify the Signature

  1. Extract timestamp and signature from the header
  2. Concatenate: {timestamp}.{raw-body}
  3. Compute HMAC SHA256 with your signing secret
  4. Compare with the header signature
const crypto = require('crypto');

function verifyWebhookSignature(header, body, secret) {
  const parts = header.split(',');
  const timestamp = parts[0].replace('t=', '');
  const signature = parts[1].replace('v1=', '');

  const signaturePayload = `${timestamp}.${body}`;
  const expectedSignature = crypto
    .createHmac('sha256', secret)
    .update(signaturePayload)
    .digest('hex');

  return crypto.timingSafeEqual(
    Buffer.from(signature),
    Buffer.from(expectedSignature)
  );
}

What’s Next?

Slack Alerts

Send alerts to a Slack channel.

PagerDuty Alerts

Create incidents in PagerDuty.

Certificate Syncs

Push certificates to cloud destinations.

Managing Certificates

View and manage certificates.