NOTIFICATION PLATFORM · PRIVATE BETA

When anything happens →
your whole team knows.

Relaye turns every webhook into native notifications on Slack, Telegram, Discord and email: routed, templated and watched from one mission control.

Free during beta · No credit card
Mission control last 7 days live
Events · 7d
8,412
+12% vs prev
Success
98.4%
delivered
Breakers
1
PagerDuty
Live flows
37
2 paused
Grafanaalerts · ×2
#ops-alertsslack
ops telegramtelegram
Stripepayments
213 subsplatform
Uptime Kumawebhook
PagerDutybreaker
monitor.down → PagerDuty / On-call ✗ 502 × 17 → paused
alert.firing → #ops-alerts · telegram ✓ ×2 delivered · 2m
alert.firing ✓ slack + telegram · 2m  ·  monitor.up recovered ✓ 6m  ·  deploy.finished delivered ✓ 24m  ·  listening…
Triggers & destinations

Plugs into what you already run

Anything that can call a webhook can be a trigger. Every major messaging channel is a destination.

◀ Triggers · what Relaye watches
📊
Grafana
💳
Stripe
🐙
GitHub
⟶
Webhook
And more…
Destinations · where it tells ▶
💬
Slack
✈️
Telegram
🎮
Discord
✉️
Email
And more…
Features

Built for teams that live in alerts

⚡

Fast & reliable delivery

Webhooks to Telegram, Discord and Slack in seconds. Retries, circuit breakers and full attempt history built in.

🎛

Multi-channel routing

Fan one trigger out to many destinations, with a moving pulse on every live wire, visible from mission control.

🪄

Custom templates

Each destination gets its own template with variables and conditionals. The same webhook becomes a different message per medium.

🛰

Mission control

One screen answers "is everything okay?": KPIs, deliveries per day, patch bay and a live ticker.

👥

Team collaboration

Share flows across your team; subscribers can fan your events out to their own channels.

🔒

Secure & available

Per-source tokens, verification handshakes and high availability for the alerts that matter most.

How it works

Three steps to your first notification

1Create a trigger
2Pick destinations
3Template & go live
When 📊 a Grafana alert fires → tell 💬 #ops-alerts on Slack + ✈️ ops on Telegram
Templating

Every destination gets its own template

One webhook, many voices. Page the whole channel on Slack while Telegram gets a terse one-liner: each destination renders its own content from the same payload.

incoming webhookone payload
{ "event": "alert.firing", "severity": "critical",
  "cpu": 94.2, "instance": "api-03", "runbook": "rb/cpu-throttle" }
↓renders per destination
💬#ops-alertsslack flow
templateloud · detailed
{{#if severity == "critical"}}@channel{{/if}}
*{{ title }}*
CPU {{ cpu }}% on {{ instance }}
→ {{ runbook }} · /ack {{ alert_id }}
↓renders
✈️ops · telegramtelegram flow
templateterse · one-liner
{{ sev_emoji }} {{ instance }} · {{ cpu }}%
{{ event }} · /mute 24h
↓renders
✓
Per-destination templatesEvery flow renders its own content and structure.
✓
Dynamic variablesAny field from the incoming payload.
✓
Conditional logic{{#if}} blocks for severity, state, anything.
✓
Real-time previewWatch each destination's render as you type.
Developers

One POST, everywhere

A single stable endpoint per trigger. Fire events from curl, CI or workers, and Relaye handles the fan-out, retries and formatting.

  • ✓
    Stable per-trigger URLs/:team/:token: permanent, rotatable
  • ✓
    Retries with circuit breakersExponential backoff, auto-pause on persistent failure
  • ✓
    Full trace per eventEvery delivery attempt, inspectable end-to-end
# fire an event from anywhere
$ curl -X POST https://relaye.io/acme/9f2c… \
   -d '{ "event": "alert.firing", "cpu": 94.2 }'

→ fan-out ×3
✓ delivered  slack  · #ops-alerts    41ms
✓ delivered  telegram · ops      63ms
✓ delivered  email   · ops@acme.io 112ms

Wire up your first flow in minutes

Be among the first to run mission control for your notifications.

Get early access    Read the docs →
Free during beta · No credit card