Notification channels
Alerts fan out to multiple destinations — Slack, outbound webhooks, and email. Each channel filters independently by alert type and severity.
Configure channels at Settings → Notifications. Every channel has a Test button that sends a live payload and shows the result inline before you save.
Channel types
Available on all plans including free. The address does not need to match your account email.
| Field | Description |
|---|---|
addressrequired | Recipient email address. |
Slack
Requires Solo plan or higher. Create an incoming webhook in your Slack workspace and paste the URL here. Alerts arrive as formatted messages with vendor name, metric vs baseline, environment, and a link to the dashboard.
| Field | Description |
|---|---|
webhook_urlrequired | Must start with https://hooks.slack.com/. |
Outbound webhook
Requires Solo plan or higher. Apidepth POSTs alert events as JSON to your endpoint. Use the optional secret to verify request authenticity.
| Field | Description |
|---|---|
urlrequired | Your HTTPS endpoint URL. |
secret | When set, each request includes an X-Apidepth-Signature header: an HMAC-SHA256 hex digest of the raw body signed with this secret. Max 256 characters. |
Verifying signatures
Compute HMAC-SHA256(secret, raw_body) and compare it to the value in X-Apidepth-Signature. Use a constant-time comparison to prevent timing attacks. The convention matches GitHub webhooks.
# Ruby example
expected = OpenSSL::HMAC.hexdigest("SHA256", secret, request.raw_post)
ActiveSupport::SecurityUtils.secure_compare(expected, request.headers["X-Apidepth-Signature"])PagerDuty
Planned for Team plan. Not yet available — use an outbound webhook pointed at your PagerDuty Events API endpoint in the meantime.
Alert types
Each channel can be filtered to receive only specific alert types:
| Alert type | Fires when |
|---|---|
| p95 threshold | Your p95 latency to a vendor crosses 3× your 7-day baseline. |
| Error rate | Error rate for a vendor exceeds your configured threshold. |
| Rate limit | A 429 response is detected from a vendor. |
| Quota burn-down | Projected time to quota exhaustion drops below 20 minutes at the current burn rate. |
Severity filtering
Each channel has a minimum severity setting. A channel set to Critical only will not receive Warning-level alerts. Leave it at All to receive both.
Maintenance windows
A maintenance window tells Apidepth to suppress all alert fan-out for a specific vendor during a planned deployment or downtime period. No alerts fire — email, Slack, and webhooks — while a window is active.
Create windows at Settings → Notifications. Requires Solo plan or higher. Windows must start in the future, and the maximum duration is 7 days. A window is automatically inactive once ends_at passes — no manual cleanup needed.
| Field | Description |
|---|---|
vendorrequired | Vendor slug to suppress (e.g. stripe). Must be a vendor already tracked by your account. |
labelrequired | Short description for your own reference, e.g. "Stripe migration". Max 100 characters. |
starts_atrequired | ISO 8601 timestamp with timezone. Must be in the future. |
ends_atrequired | ISO 8601 timestamp with timezone. Must be after starts_at. |
Plan limits
| Channel | Free | Solo | Team |
|---|---|---|---|
| ✓ | ✓ | ✓ | |
| Slack | — | ✓ | ✓ |
| Outbound webhook | — | ✓ | ✓ |
| Maintenance windows | — | ✓ | ✓ |
| PagerDuty | — | — | Coming soon |