Integrations
Send notifications to Alphorn from popular tools and services.
Alphorn accepts standard HTTP webhooks, so it works with any tool that can send an HTTP request. This page shows how to connect popular services to Alphorn as notification sources.
For channel destinations (where Alphorn delivers notifications), see Channels.
Monitoring
Grafana
Grafana supports webhook contact points natively. Send alerts directly to Alphorn.
- In Grafana, go to Alerting → Contact points
- Click Add contact point
- Select Webhook as the type
- Set the URL to your Alphorn webhook URL
- Set method to POST
Grafana sends a JSON payload with alert details. Alphorn receives it in the message field. For richer notifications, use a Grafana notification template to format the body as an Alphorn-compatible JSON payload:
{
"title": "{{ .CommonLabels.alertname }}",
"message": "{{ .CommonAnnotations.summary }}",
"priority": 4,
"tags": ["grafana", "alert"]
}Prometheus Alertmanager
Configure a webhook receiver in your Alertmanager config:
receivers:
- name: alphorn
webhook_configs:
- url: "https://app.alphorn.dev/api/webhooks/wh_abc123"
send_resolved: trueUptime Kuma
See the dedicated Uptime Monitoring use case for setup instructions, including custom body templates for priority-based routing.
Healthchecks.io
- In your Healthchecks.io project, go to Integrations
- Add a Webhook integration
- Set the URL to your Alphorn webhook URL
- Set the request body to:
{
"title": "$NAME is $STATUS",
"message": "Check $CODE: $STATUS. Tags: $TAGS",
"priority": 5,
"tags": ["healthchecks", "$TAG1"]
}Gatus
Gatus has native webhook alerting:
alerting:
webhook:
url: "https://app.alphorn.dev/api/webhooks/wh_abc123"
method: POST
body: |
{
"title": "[ENDPOINT_NAME] is [ALERT_TRIGGERED_OR_RESOLVED]",
"message": "[ENDPOINT_GROUP] — [ENDPOINT_URL]",
"priority": 5,
"tags": ["gatus", "uptime"]
}CI/CD
GitHub Actions
See the CI/CD Pipelines use case for full GitHub Actions and GitLab CI examples.
GitLab CI
See the CI/CD Pipelines use case.
Jenkins
Add a post-build step using curl:
pipeline {
stages {
stage('Build') {
steps { sh 'make build' }
}
}
post {
failure {
sh '''
curl -s -X POST "$ALPHORN_WEBHOOK" \
-H "Content-Type: application/json" \
-d '{
"title": "Jenkins build failed",
"message": "'"$JOB_NAME"' #'"$BUILD_NUMBER"' — '"$BUILD_URL"'",
"priority": 5,
"tags": ["ci", "jenkins", "failure"]
}'
'''
}
}
}Infrastructure
Docker / Watchtower
Watchtower can send webhook notifications when containers are updated:
services:
watchtower:
image: containrrr/watchtower
environment:
WATCHTOWER_NOTIFICATION_URL: "generic+https://app.alphorn.dev/api/webhooks/wh_abc123"Or use a shoutrrr generic webhook URL.
Ansible
Send notifications from Ansible playbooks using the uri module:
- name: Notify Alphorn
uri:
url: "{{ alphorn_webhook }}"
method: POST
body_format: json
body:
title: "Playbook completed: {{ ansible_play_name }}"
message: "Deployed to {{ inventory_hostname }}"
priority: 2
tags:
- ansible
- deployTerraform
Use a null_resource with a local-exec provisioner:
resource "null_resource" "notify" {
depends_on = [aws_instance.web]
provisioner "local-exec" {
command = <<EOT
curl -s -X POST "$ALPHORN_WEBHOOK" \
-H "Content-Type: application/json" \
-d '{"title":"Infrastructure updated","message":"Terraform apply completed","priority":2,"tags":["terraform","infra"]}'
EOT
}
}Home Automation
Home Assistant
Use the RESTful notification integration:
notify:
- name: alphorn
platform: rest
resource: "https://app.alphorn.dev/api/webhooks/wh_abc123"
method: POST
headers:
Content-Type: application/json
data:
title: "{{ title }}"
message: "{{ message }}"
priority: 3
tags:
- homeassistantThen use it in automations:
automation:
- trigger:
platform: state
entity_id: binary_sensor.front_door
to: "on"
action:
service: notify.alphorn
data:
title: "Front door opened"
message: "Front door opened at {{ now().strftime('%H:%M') }}"Node-RED
Use an HTTP Request node:
- Add an HTTP Request node
- Set method to POST
- Set URL to your Alphorn webhook URL
- Set
Content-Typetoapplication/jsonin headers - Connect a Function node before it to format the payload:
msg.payload = {
title: "Node-RED Alert",
message: msg.payload.toString(),
priority: 3,
tags: ["nodered"],
};
return msg;Media Servers
Sonarr / Radarr / Lidarr
These tools support webhook notifications:
- Go to Settings → Connect
- Add a Webhook connection
- Set the URL to your Alphorn webhook URL
- Select which events to trigger on (grab, download, rename, etc.)
The raw payload is forwarded as the message body. Alphorn receives it and routes to your configured channels.
Jellyfin / Jellyseerr
Configure a webhook notification in the Jellyseerr settings pointing to your Alphorn webhook URL.
Programming Languages
Any HTTP client can send to Alphorn. See the API Reference for examples in curl, JavaScript, Python, Go, PHP, and Ruby.
Not seeing your tool?
Alphorn accepts any HTTP POST request. If a service supports webhooks, outgoing notifications, or custom HTTP integrations, it can send to Alphorn. Use the Webhook integration and point it at your Alphorn webhook URL.
If you've set up an integration not listed here, open a PR to add it to this page.