# Custom Webhook Integration — Pipe ZopNight Events Into Anything

> Receive every ZopNight event as structured JSON at any HTTPS endpoint — feed your incident tooling, data pipeline or home-grown automation.

Source: https://zop.dev/integrations/custom-webhook
Updated: 2026-08-20

---

## Common questions

### Can I point a custom webhook at an internal URL?

No. Endpoints are validated against SSRF and must be public HTTPS. Private, loopback and internal network addresses are rejected by design.

### Could the same event arrive twice?

Yes, so handle it idempotently. Delivery is at-least-once with automatic retries, throttled to one message per second per channel.

### How do I get ZopNight events into PagerDuty or ServiceNow?

Through a custom webhook. Neither has a first-class channel today, so the raw JSON event is the route, and you decide how it renders on your side.

If your team's tooling isn't on the standard channel list, the custom webhook gets you there. ZopNight will POST structured JSON to any HTTPS endpoint you control, for any event you subscribe to: scheduling, budgets, anomalies, remediation, platform alerts. Custom headers and bearer authentication are optional.

## A Slack-compatible JSON envelope, throttled and SSRF-checked

Payloads use a Slack-compatible envelope so many tools accept them unmodified: a top-level text plus an attachments array carrying color, title ('ZopNight Alert'), body text, priority fields and timestamp, alongside explicit priority (0 = info, 1 = warning, 2 = critical) and priority_label fields. Requests are sent with User-Agent ZopNight-Notification-Service/1.0, your custom headers, and Authorization: Bearer if you configure a token. Delivery is throttled to one message per second per channel with automatic retries. Endpoints are SSRF-validated: public HTTPS only.

## From HTTPS endpoint to a test notification

1. Stand up an HTTPS endpoint that accepts POST JSON.
2. In ZopNight: Settings > Notifications > Add Channel > Custom Webhook.
3. Paste the URL; optionally add custom headers and an auth token.
4. Pick the events and scopes to subscribe, then send a test notification.

## Every event family, plus action callbacks

Every ZopNight event family as structured JSON. Optional custom headers and bearer token. Functional action callbacks. Slack-compatible payload shape for drop-in reuse.

## When to reach for it

Use a custom webhook when the destination is not Slack, Teams, Google Chat or email. That covers
PagerDuty and ServiceNow, neither of which has a first-class channel today, as well as internal
tooling and anything that just needs the raw event.

## What you receive

The event payload as JSON, with the same fields the built-in cards render from: event type,
severity, the resource or budget involved, and a deep link. Because it is raw rather than
formatted, you decide how it renders on the far side.

## The endpoint is yours to secure

ZopNight posts to the URL you provide over HTTPS. Anything reachable at that URL can receive
events, so treat the URL as a secret and verify on your side rather than relying on obscurity.
