Get a push when your
cron, CI or server fails
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 alerts for GitHub Actions, GitLab CI, Jenkins or any pipeline. Build failures, deploys and releases land in one inbox.
Learn moreCron job monitoring
Get a push the second a cron job fails. One curl line per job, a timeline of every run, failures forwarded to Discord or Slack.
Learn moreWebhook 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 moreDiscord & Slack notification bridge
Route any webhook to Discord or Slack with templated payloads, level thresholds and per-token rules. Forwarders on every plan.
Learn moreServer & service alert inbox
Pipe alerts from Nagios, Monit, shell checks or your own services to one mobile-friendly inbox, with a push when something breaks.
Learn moreApplication error tracking
A no-friction error inbox. Pipe exceptions, 500s and job failures from any language into one timeline. Sentry-lite for small teams.
Learn moreReady to tame your webhooks?
Sign in with GitHub or Codeberg and route your first event in minutes.