One inbox for every event
your stack fires
Send every CI run, cron, deploy and error to a single endpoint. The moment something breaks, it's a push on your phone, not a line buried in a channel you muted weeks ago.
Send your first event from anywhere. No SDK, no dependency:
curl -X POST 'https://alarum.me/h' \
-H 'Authorization: Bearer alrm_aFalseTokenForExample' \
-H 'Content-Type: application/json' \
-d '{"level":"success","title":"Deploy succeeded","message":"v1.2.3 shipped to production","source":"github-actions"}'# In .github/workflows/<name>.yml
- name: Notify Alarum
run: |
curl -X POST 'https://alarum.me/h' \
-H 'Authorization: Bearer alrm_aFalseTokenForExample' \
-H 'Content-Type: application/json' \
-d '{"level":"success","title":"Deploy succeeded","message":"v1.2.3 shipped to production","source":"github-actions"}'# In .woodpecker.yml (Codeberg CI / Woodpecker)
steps:
notify-alarum:
image: curlimages/curl
commands:
- |
curl -X POST 'https://alarum.me/h' \
-H 'Authorization: Bearer alrm_aFalseTokenForExample' \
-H 'Content-Type: application/json' \
-d '{"level":"success","title":"Deploy succeeded","message":"v1.2.3 shipped to production","source":"github-actions"}'await fetch('https://alarum.me/h', {
method: 'POST',
headers: {
'Authorization': 'Bearer alrm_aFalseTokenForExample',
'Content-Type': 'application/json',
},
body: JSON.stringify({
"level": "success",
"title": "Deploy succeeded",
"message": "v1.2.3 shipped to production",
"source": "github-actions"
})
})const axios = require('axios')
await axios.post('https://alarum.me/h', {
"level": "success",
"title": "Deploy succeeded",
"message": "v1.2.3 shipped to production",
"source": "github-actions"
}, {
headers: {
'Authorization': 'Bearer alrm_aFalseTokenForExample',
'Content-Type': 'application/json',
}
})import requests
requests.post(
'https://alarum.me/h',
json={
'level': 'success',
'title': 'Deploy succeeded',
'message': 'v1.2.3 shipped to production',
'source': 'github-actions',
},
headers={'Authorization': 'Bearer alrm_aFalseTokenForExample'},
)<?php
$ch = curl_init('https://alarum.me/h');
curl_setopt_array($ch, [
CURLOPT_POST => true,
CURLOPT_HTTPHEADER => ['Authorization: Bearer alrm_aFalseTokenForExample', 'Content-Type: application/json'],
CURLOPT_POSTFIELDS => json_encode([
'level' => 'success',
'title' => 'Deploy succeeded',
'message' => 'v1.2.3 shipped to production',
'source' => 'github-actions',
]),
CURLOPT_RETURNTRANSFER => true,
]);
curl_exec($ch);
curl_close($ch);package main
import (
"bytes"
"net/http"
)
func main() {
body := []byte(`{"level":"success","title":"Deploy succeeded","message":"v1.2.3 shipped to production","source":"github-actions"}`)
req, _ := http.NewRequest("POST", "https://alarum.me/h", bytes.NewBuffer(body))
req.Header.Set("Authorization", "Bearer alrm_aFalseTokenForExample")
req.Header.Set("Content-Type", "application/json")
http.DefaultClient.Do(req)
}require 'net/http'
require 'json'
uri = URI('https://alarum.me/h')
req = Net::HTTP::Post.new(uri, 'Content-Type' => 'application/json', 'Authorization' => 'Bearer alrm_aFalseTokenForExample')
req.body = {
level: 'success',
title: 'Deploy succeeded',
message: 'v1.2.3 shipped to production',
source: 'github-actions',
}.to_json
Net::HTTP.start(uri.hostname, uri.port, use_ssl: uri.scheme == 'https') do |http|
http.request(req)
end$body = @{
level = 'success'
title = 'Deploy succeeded'
message = 'v1.2.3 shipped to production'
source = 'github-actions'
} | ConvertTo-Json -Compress
Invoke-RestMethod -Uri 'https://alarum.me/h' `
-Method Post `
-Headers @{ Authorization = 'Bearer alrm_aFalseTokenForExample' } `
-ContentType 'application/json' `
-Body $body#!/usr/bin/env bash
set -euo pipefail
ENDPOINT='https://alarum.me/h'
curl -fsS -X POST "$ENDPOINT" \
-H "Authorization: Bearer alrm_aFalseTokenForExample" \
-H 'Content-Type: application/json' \
-d '{"level":"success","title":"Deploy succeeded","message":"v1.2.3 shipped to production","source":"github-actions"}'11 Ready-made examples. Works from any language or tool.
Native, Discord-style, or raw JSON payloads all accepted.
Everything to tame your notifications
Built for developers and small teams who are tired of missing the events that matter.
One webhook hub
A single endpoint for every source: CI/CD, cron, monitoring, custom scripts. Send native, Discord-style, or raw JSON payloads.
Unified inbox
Every event in one place. Filter by level, tags, source and date, search full-text, mark as read, and watch it update live.
Web push notifications
Get pushed only what matters, with on/off rules per level and per token. Bursts fold into a single rolling notification.
Quiet hours & recap
Mute notifications on your schedule, let critical events through, and get a per-project recap of what you missed.
Workspaces & projects
Organize sources into projects, group them into workspaces, and invite teammates to collaborate.
Forwarders
Re-broadcast events to Discord, Slack, or any HTTP endpoint, filtered by a minimum severity level.
Severity, at a glance
Every event carries a level, so you decide what deserves a push at 3 a.m. and what can wait.
Where Alarum fits in your stack
Pick the angle closest to your current pain. Most teams end up using several.
CI/CD pipeline notifications
Push notifications for GitHub Actions, GitLab CI, Jenkins, CircleCI and any pipeline. Route build failures, deploy alerts and release events to a single inbox.
Learn more arrow_forwardCron job monitoring
Push notifications and a centralized timeline for every cron job. Get alerted the second a scheduled task fails, search past runs, forward failures to Discord or Slack.
Learn more arrow_forwardWebhook aggregator hub
One endpoint for every webhook your stack fires. Filter, search, tag and forward to Discord, Slack or push. Stop juggling ten inboxes.
Learn more arrow_forwardDiscord & Slack notification bridge
Route any webhook to Discord or Slack with templated payloads, level thresholds and per-token rules. Free at every plan.
Learn more arrow_forwardServer & service alert inbox
Pipe alerts from Nagios, Monit, custom shell checks or your own services to a single mobile-friendly inbox. Push notifications when something breaks, forwarders to Discord and Slack.
Learn more arrow_forwardApplication error tracking
A no-friction error inbox. Pipe exceptions, 500s and background-job failures from any language to a single timeline. Sentry-lite for small teams.
Learn more arrow_forwardReady to tame your webhooks?
Sign in with GitHub or Codeberg and route your first event in minutes.