Notification Channels Setup
Configure notification channels in the Operyn Dashboard to receive incident alerts via Slack, Discord, Jira, PagerDuty, Datadog, Grafana, or custom webhooks.
Overview
Notification channels are workspace-scoped (Org Config) integrations configured directly in the Dashboard. This allows per-team alerting without modifying infrastructure, and all sensitive credentials are encrypted at rest in the platform vault.
Navigate to Console → Integrations to configure your notification channels.
Slack
Receive incident alerts in your Slack workspace via incoming webhooks.
Setup Steps
-
Create a Slack App (if you don't have one)
- Go to api.slack.com/apps
- Click Create New App → From scratch
- Name it "Operyn Alerts" and select your workspace
-
Enable Incoming Webhooks
- In your app's sidebar, go to Incoming Webhooks
- Toggle Activate Incoming Webhooks to On
- Click Add New Webhook to Workspace
-
Select Channel
- Choose the channel where alerts should be posted (e.g., #incidents, #alerts)
- Click Allow
- Copy the Webhook URL (starts with
https://hooks.slack.com/services/)
-
Configure in Operyn
- Go to Console → Integrations in the Dashboard
- Find the Slack card
- Paste the webhook URL
- Click Save
- Click Test to send a test notification
Permissions
The webhook only needs permission to post to the selected channel. No other scopes are required.
Discord
Receive incident alerts in your Discord server via webhook integration.
Setup Steps
-
Open Server Settings
- In your Discord server, click the server name
- Select Server Settings → Integrations
-
Create Webhook
- Click Webhooks → New Webhook
- Name it "Operyn Alerts"
- Select the channel where alerts should be posted
- Click Copy Webhook URL
-
Configure in Operyn
- Go to Console → Integrations in the Dashboard
- Find the Discord card
- Paste the webhook URL
- Click Save
- Click Test to send a test notification
Message Format
Discord notifications include rich embeds with:
- Incident severity (color-coded)
- Title and description
- Direct link to the incident in the Dashboard
- Affected services and timestamps
Jira
Automatically create tickets for HIGH and CRITICAL incidents in your Jira project.
Prerequisites
- Jira Cloud or Jira Server instance
- API token for authentication (see below)
- Project key (e.g., "PROJ", "OPS")
Setup Steps
-
Create Jira API Token
- Go to id.atlassian.com
- Click Create API token
- Name it "Operyn Integration"
- Click Create and copy the token immediately
-
Get Your Project Key
- In Jira, go to your project
- The project key is displayed in the project header (e.g., "PROJ-123")
- Note just the key part (e.g., "PROJ")
-
Get Your Base URL
- For Jira Cloud:
https://your-domain.atlassian.net - For Jira Server:
https://jira.your-company.com
- For Jira Cloud:
-
Configure in Operyn
- Go to Console → Integrations in the Dashboard
- Find the Jira card
- Enter:
- Base URL: Your Jira instance URL
- Email: Your Jira account email
- API Token: The token you created
- Project Key: Your project key
- Click Save
- Click Test to create a test ticket
Security
Jira credentials are encrypted at rest using INTEGRATION_ENCRYPTION_KEY. They are never exposed in the UI after saving.
Ticket Creation Behavior
- Only HIGH and CRITICAL severity incidents create Jira tickets
- Tickets include incident title, description, severity, and Dashboard link
- Subsequent updates to the same incident add comments to the existing ticket (no duplicates)
Generic Webhook
Forward incident events to any HTTP(S) endpoint for custom integrations.
Use Cases
- Custom internal dashboards
- Paging systems (PagerDuty, Opsgenie)
- Internal ticketing systems
- Custom automation workflows
PagerDuty
Route high-severity incidents directly into PagerDuty using the Events API v2.
Setup Steps
-
Create an Integration in PagerDuty
- Open your PagerDuty service
- Go to Integrations → Add Integration
- Select Events API v2
- Copy the Integration Key (routing key)
-
Configure in Operyn
- Go to Console → Integrations in the Dashboard
- Find the PagerDuty card
- Enter:
- Integration Name: e.g.
Primary On-call - Integration Key: PagerDuty routing key
- Events API URL: keep default unless self-hosted relay
- Integration Name: e.g.
- Click Save
- Click Test to send a synthetic incident event
Delivery Behavior
- Operyn sends Events API v2 payloads with dedup key = incident id
- HIGH and CRITICAL incidents are routed to PagerDuty
- Event links include deep-link back to incident detail in Operyn
Security
PagerDuty routing keys are encrypted at rest in Operyn vault storage and never re-exposed in plain text after save.
Datadog
Send high-severity incidents into Datadog Events API for centralized operations visibility.
Setup Steps
-
Create Datadog API Key
- Open Datadog → Organization Settings → API Keys
- Create key for Operyn incident events
- Copy key value
-
Collect Datadog Site
- Example:
datadoghq.com,us3.datadoghq.com,datadoghq.eu
- Example:
-
Configure in Operyn
- Go to Console → Integrations
- Find Datadog
- Enter integration name, API key, site, and optional default tags
- Save, then click Test
Delivery Behavior
- Operyn sends Datadog Events API payloads for HIGH and CRITICAL incidents
- Payload includes severity, tags, and deep-link back to Operyn incident page
- API key stored encrypted at rest
Grafana
Write incident annotations into Grafana for fast timeline correlation during incident review.
Setup Steps
-
Create Grafana API token
- Open Grafana → Administration → Service Accounts or API Keys
- Create token with permission to write annotations
- Copy token value
-
Collect Grafana base URL
- Example:
https://grafana.company.com
- Example:
-
Configure in Operyn
- Go to Console → Integrations
- Open Grafana channel
- Enter base URL, API token, optional default tags
- Save, then click Test
Delivery Behavior
- Operyn writes Grafana annotations for HIGH and CRITICAL incidents
- Annotation text includes title, summary, and deep-link to Operyn incident page
- API token stored encrypted at rest
Setup Steps
-
Prepare Your Endpoint
- Ensure your endpoint accepts
POSTrequests - Supports
Content-Type: application/json - (Optional) Add authentication via custom headers
- Ensure your endpoint accepts
-
Configure in Operyn
- Go to Console → Integrations in the Dashboard
- Find the Webhook card
- Enter:
- URL: Your webhook endpoint (e.g.,
https://api.your-company.com/operyn-webhook) - Headers (optional): Any custom headers needed for authentication
- URL: Your webhook endpoint (e.g.,
- Click Save
- Click Test to send a test payload
Payload Schema
Operyn sends a JSON payload with the following structure:
{
"event": "incident.created",
"timestamp": "2024-01-15T10:30:00Z",
"incident": {
"id": "inc_abc123",
"title": "Database connection timeout",
"description": "Multiple services reporting database connection failures",
"severity": "critical",
"status": "open",
"service": "database",
"environment": "production",
"affectedServices": ["api", "worker", "scheduler"],
"createdAt": "2024-01-15T10:25:00Z",
"updatedAt": "2024-01-15T10:30:00Z",
"url": "https://operyn.example.com/incidents/inc_abc123"
}
}
Event Types
| Event | Description |
|---|---|
incident.created | New incident detected |
incident.updated | Incident severity, status, or details changed |
incident.resolved | Incident marked as resolved |
Security Best Practices
- Always use
httpsendpoints - Validate the payload using a shared secret or signature
- Implement idempotency (same event may be delivered multiple times)
- Return
200 OKquickly; Operyn has a 10-second timeout
Testing
Use webhook.site or ngrok to inspect the payload during development.
⚠️ Coming Soon
Email notifications via SMTP are currently in development. This feature will support:
- SMTP with TLS/SSL encryption
- Multiple recipient addresses
- Custom "From" address
- HTML and plain text formats
For now, use Slack, Discord, or Webhook for incident alerts.
Testing Your Configuration
Each notification channel supports a Test button in the Dashboard:
- Configure the channel with your credentials/URL
- Click Save
- Click Test to send a synthetic "Test Incident"
- Verify the notification arrives at your destination
[!TIP] Always verify your configuration using the Test button before enabling a channel for production use to ensure reliable alert delivery.
Troubleshooting
| Issue | Cause | Fix |
|---|---|---|
| Test notification not received | Incorrect webhook URL | Verify URL and re-copy from source |
| Jira tickets not created | Wrong project key or permissions | Verify project key and that user has "Create Issues" permission |
| Webhook 401/403 errors | Authentication failure | Check custom headers and credentials |
| Duplicate Slack messages | Multiple webhooks configured | Remove duplicate webhook configurations |
Next Steps
- Ingestion Sources — Connect AWS CloudWatch or GCP Cloud Logging
- Incidents — Learn how incidents trigger notifications
- Dashboard Guide — Using the Integrations page in the Console