Overview
The Settings page allows you to configure notification channels for sending alerts to external systems. You can set up webhooks to integrate with tools like Slack, Microsoft Teams, or any custom HTTP endpoint.Webhook Channels
Send notifications to Slack, Teams, or custom endpoints
Custom Payloads
Define custom JSON templates with dynamic variables
Authentication
Support for Bearer tokens, API keys, and Basic Auth
Test & Validate
Test channels before using them in production
Webhook Channels
Webhook channels allow you to send HTTP requests to external systems when incidents occur. Each channel can be configured with its own URL, authentication, and payload template.Channel List View
The Settings page displays all configured webhook channels as cards:| Element | Description |
|---|---|
| Name | Channel identifier |
| Description | Purpose of the channel |
| URL | Target webhook endpoint |
| Method | HTTP method (GET, POST, PUT, PATCH) |
| Status | Active or Inactive toggle |
| Default Badge | Indicates default channel for this type |
Creating a Webhook Channel
1
Open Create Dialog
Click the Add Webhook button in the page header
2
Enter Basic Info
- Name — Descriptive channel name (required)
- Description — Explain what this channel does
3
Configure Webhook URL
Enter the target URL for the webhook (e.g., Slack incoming webhook URL)
4
Select HTTP Method
Choose the HTTP method:
- POST — Most common for webhooks
- PUT — For update operations
- PATCH — For partial updates
- GET — For simple notifications
5
Configure Authentication
Select authentication type and provide credentials if needed
6
Set Timeout
Configure request timeout in seconds (default: 30)
7
Create Payload Template
Define the JSON payload with template variables
8
Save Channel
Click Create to save the channel
Authentication Types
Configure how EasyContact authenticates with your webhook endpoint.- None
- Bearer Token
- API Key
- Basic Auth
No authentication required. Use for public webhooks like Slack incoming webhooks.
Payload Templates
Payload templates define the JSON body sent to your webhook. Use template variables to include dynamic incident data.Template Editor Features
- Syntax highlighting for JSON
- Real-time validation shows errors immediately
- Format button to auto-format valid JSON
- Copy button to copy template to clipboard
- Variable reference panel with all available placeholders
Available Variables
- Incident Variables
- Target Variables
- Other Variables
- Filters
| Variable | Description |
|---|---|
{{incident.id}} | Unique incident identifier |
{{incident.incidentNumber}} | Human-readable incident number |
{{incident.title}} | Incident title |
{{incident.description}} | Incident description |
{{incident.status}} | Current status (open, acknowledged, resolved) |
{{incident.severity}} | Severity level |
{{incident.priority}} | Priority (P1-P5) |
{{incident.host}} | Affected hostname |
{{incident.hostIp}} | Host IP address |
{{incident.service}} | Service name |
{{incident.environment}} | Environment (production, staging, etc.) |
{{incident.region}} | Geographic region |
{{incident.sourceType}} | Integration source type |
{{incident.triggeredAt}} | When the incident was triggered |
{{incident.acknowledgedAt}} | When acknowledged (if applicable) |
{{incident.currentLevel}} | Current escalation level |
{{incident.alertCount}} | Number of alerts in incident |
{{incident.tags}} | All tags as object |
{{incident.tags.customer}} | Specific tag value |
{{incident.tags.environment}} | Environment tag |
{{incident.tags.team}} | Team tag |
Pre-built Templates
Use these templates as starting points for common integrations.Slack Template
Slack Template
For Slack, use the incoming webhook URL from your Slack app. No authentication is needed as the token is embedded in the URL.
Microsoft Teams Template
Microsoft Teams Template
For Teams, use the incoming webhook URL from your Teams channel connector.
Generic Webhook Template
Generic Webhook Template
PagerDuty Events API Template
PagerDuty Events API Template
Testing Channels
Before using a channel in production, test it to verify the configuration is correct.How to Test
- Click the three-dot menu (⋮) on a channel card
- Select Test
- In the test dialog, click Send Test
- Review the results
Test Results
| Field | Description |
|---|---|
| Status | Success (green) or Failed (red) |
| Message | Response message or error description |
| Response Code | HTTP status code (200, 201, etc.) |
| Duration | Request time in milliseconds |
Default Channel
You can mark one webhook channel as the default for each channel type. The default channel is used when:- No specific channel is configured in escalation policy levels
- Webhooks are selected but no specific channel is specified
Setting Default Channel
- Open the channel edit dialog
- Toggle Set as Default to on
- Save changes
Only one channel per type can be the default. Setting a new default automatically removes the default status from the previous channel.
Managing Channels
Editing Channels
- Click the three-dot menu (⋮) on a channel
- Select Edit
- Modify settings as needed
- Click Update to save
Toggling Active Status
Use the switch on each channel card to quickly enable or disable:- Active — Channel is used for notifications
- Inactive — Channel is skipped (useful for maintenance or testing)
Deleting Channels
- Click the three-dot menu
- Select Delete
- Confirm deletion
Common Integrations
Slack
Slack
Setup:
- Create an Incoming Webhook in Slack App settings
- Copy the webhook URL
- Create channel with URL and Slack template
- No authentication needed (token in URL)
Microsoft Teams
Microsoft Teams
Setup:
- Add Incoming Webhook connector to your Teams channel
- Copy the webhook URL
- Create channel with URL and Teams template
- No authentication needed (token in URL)
Discord
Discord
Setup:
- Create a Webhook in Discord channel settings
- Copy the webhook URL
- Create channel with URL
- Use Discord-compatible JSON payload
Custom API
Custom API
Setup:
- Determine your API endpoint URL
- Configure authentication (Bearer, API Key, or Basic)
- Create payload template matching your API schema
- Set appropriate timeout
| Setting | Value |
|---|---|
| URL | https://api.example.com/webhooks/alerts |
| Method | POST |
| Auth | Bearer Token |
| Token | <YOUR_API_TOKEN> |
Best Practices
Use Descriptive Names
Use Descriptive Names
Name channels clearly to indicate their purpose: “Slack - Engineering Alerts”, “Teams - On-Call Channel”, “CRM - Customer Incidents”
Test Before Production
Test Before Production
Always test new channels and template changes before relying on them for critical alerts.
Set Appropriate Timeouts
Set Appropriate Timeouts
Default timeout is 30 seconds. Reduce for time-sensitive notifications or increase for slow endpoints.
Use Default Wisely
Use Default Wisely
Set a reliable, always-available channel as default to ensure notifications are never lost.
Include Essential Fields
Include Essential Fields
Always include incident ID, title, severity, and a link back to EasyContact in your templates.
Handle Missing Data
Handle Missing Data
Use the
default filter for optional fields: {{incident.host|default("Unknown")}}Keep Credentials Secure
Keep Credentials Secure
Rotate API keys and tokens periodically. Use dedicated service accounts for webhook integrations.
Troubleshooting
Test returns error
Test returns error
- Verify the webhook URL is correct and accessible
- Check authentication credentials
- Ensure the payload template is valid JSON
- Try the request manually with curl to diagnose
- Check if the endpoint has IP restrictions
Notifications not being sent
Notifications not being sent
- Verify channel is Active
- Check that the channel is selected in escalation policy levels
- Ensure the escalation policy is active and assigned
- Review incident logs for delivery errors
Payload template errors
Payload template errors
- Validate JSON syntax in the editor
- Check variable names match exactly (case-sensitive)
- Ensure filters are applied correctly
- Test with a minimal template first
Authentication failures
Authentication failures
- Verify credentials are entered correctly
- Check token hasn’t expired
- Ensure auth type matches endpoint requirements
- Verify the endpoint expects the header format used
Timeout errors
Timeout errors
- Increase timeout value
- Check if endpoint is slow or overloaded
- Verify network connectivity
- Consider using async webhook if available
Messages not appearing in Slack/Teams
Messages not appearing in Slack/Teams
- Verify webhook URL is correct
- Check channel/team permissions
- Ensure webhook hasn’t been revoked
- Verify payload matches expected format
Quick Reference
Authentication Types
| Type | Header Format | Use Case |
|---|---|---|
| None | (no header) | Slack, Teams incoming webhooks |
| Bearer | Authorization: Bearer {token} | OAuth APIs, modern REST APIs |
| API Key | X-API-Key: {key} | Simple API authentication |
| Basic | Authorization: Basic {base64} | Legacy systems, basic auth APIs |
HTTP Methods
| Method | Use Case |
|---|---|
| POST | Creating new records, most webhooks |
| PUT | Replacing existing records |
| PATCH | Partial updates |
| GET | Simple notifications without body |
Common Template Variables
| Variable | Example Value |
|---|---|
{{incident.id}} | abc123-def456 |
{{incident.title}} | High CPU on web-01 |
{{incident.severity}} | critical |
{{incident.host}} | web-server-01 |
{{incident.service}} | api-gateway |
{{target.name}} | John Doe |
{{tenant.slug}} | acme-corp |