Please add support for notifications via Ntfy.sh, including its self-hostable variant.
janw
Created on March 22, 2026 · Last update on July 29, 2026
2 Comments
Mihai
Basic functionality can be obtained with a webhook:
1/ updown.io > Settings > Webhooks > Add "https://ntfy.sh/TOPIC-NAME?priority=urgent" > Save
2/ updown.io > Settings > Send test notification > Select the webhook > Send
Note: the urgent/max/5 priority basically transforms the ntfy.sh mobile app into an oncall pager, overriding do-not-disturb settings. This works best when using push notifications (Google's FCM or Apple's APN). For that, install the Play Store version.
Building on Mihai's suggestions, here's an example webhook URL using an inline template: https://ntfy.sh/mytopic?auth=ACCESS_TOKEN_FROM_NTFY_SETTINGS&tpl=yes&t=%7B%7Bwith%20index%20.%200%7D%7D%7B%7Bif%20eq%20.event%20%22check.down%22%7D%7DDOWN%3A%20%7B%7B.check.alias%20%7C%20default%20.check.url%7D%7D%7B%7Belse%20if%20eq%20.event%20%22check.up%22%7D%7DUP%3A%20%7B%7B.check.alias%20%7C%20default%20.check.url%7D%7D%7B%7Belse%20if%20eq%20.event%20%22check.ssl_expiration%22%7D%7DTLS%20expires%20in%20%7B%7B.ssl.days_before_expiration%7D%7Dd%3A%20%7B%7B.check.alias%20%7C%20default%20.check.url%7D%7D%7B%7Belse%20if%20eq%20.event%20%22check.ssl_invalid%22%7D%7DTLS%20invalid%3A%20%7B%7B.check.alias%20%7C%20default%20.check.url%7D%7D%7B%7Belse%20if%20eq%20.event%20%22check.ssl_valid%22%7D%7DTLS%20valid%20again%3A%20%7B%7B.check.alias%20%7C%20default%20.check.url%7D%7D%7B%7Belse%20if%20eq%20.event%20%22check.ssl_renewed%22%7D%7DTLS%20renewed%3A%20%7B%7B.check.alias%20%7C%20default%20.check.url%7D%7D%7B%7Belse%20if%20eq%20.event%20%22check.performance_drop%22%7D%7DApdex%20-%7B%7B.apdex_dropped%7D%7D%3A%20%7B%7B.check.alias%20%7C%20default%20.check.url%7D%7D%7B%7Belse%7D%7D%7B%7B.event%7D%7D%3A%20%7B%7B.check.alias%20%7C%20default%20.check.url%7D%7D%7B%7Bend%7D%7D%7B%7Bend%7D%7D&m=%7B%7Bwith%20index%20.%200%7D%7D%7B%7B.description%7D%7D%5Cn%5Cn%7B%7B.check.url%7D%7D%20%28%7B%7B.check.token%7D%7D%29%20%C2%B7%20uptime%20%7B%7B.check.uptime%7D%7D%25%7B%7Bwith%20.downtime%7D%7D%7B%7Bif%20.duration%7D%7D%5CnDown%20for%20%7B%7Bprintf%20%22%25.0f%22%20.duration%20%7C%20duration%7D%7D%7B%7Bend%7D%7D%5Cn%7B%7B.details_url%7D%7D%7B%7Bend%7D%7D%7B%7Bend%7D%7D&p=%7B%7Bwith%20index%20.%200%7D%7D%7B%7Bif%20or%20%28eq%20.event%20%22check.ssl_expiration%22%29%20%28eq%20.event%20%22check.ssl_renewed%22%29%7D%7Dlow%7B%7Belse%20if%20or%20%28eq%20.event%20%22check.up%22%29%20%28eq%20.event%20%22check.ssl_valid%22%29%20%28eq%20.event%20%22check.performance_drop%22%29%7D%7Ddefault%7B%7Belse%7D%7Dhigh%7B%7Bend%7D%7D%7B%7Bend%7D%7D
2 Comments
Basic functionality can be obtained with a webhook:
1/ updown.io > Settings > Webhooks > Add "https://ntfy.sh/TOPIC-NAME?priority=urgent" > Save
2/ updown.io > Settings > Send test notification > Select the webhook > Send
I initially missed it in the ntfy.sh documentation, but the headers can be replaced by URL arguments
- https://docs.ntfy.sh/publish/#webhooks-publish-via-get
- https://docs.ntfy.sh/publish/#list-of-all-parameters
Full support (title, etc.) would be nicer. Maybe it can be easily implemented with a pre-defined template:
- https://docs.ntfy.sh/publish/#pre-defined-templates
Note: the urgent/max/5 priority basically transforms the ntfy.sh mobile app into an oncall pager, overriding do-not-disturb settings. This works best when using push notifications (Google's FCM or Apple's APN). For that, install the Play Store version.
Building on Mihai's suggestions, here's an example webhook URL using an inline template:
https://ntfy.sh/mytopic?auth=ACCESS_TOKEN_FROM_NTFY_SETTINGS&tpl=yes&t=%7B%7Bwith%20index%20.%200%7D%7D%7B%7Bif%20eq%20.event%20%22check.down%22%7D%7DDOWN%3A%20%7B%7B.check.alias%20%7C%20default%20.check.url%7D%7D%7B%7Belse%20if%20eq%20.event%20%22check.up%22%7D%7DUP%3A%20%7B%7B.check.alias%20%7C%20default%20.check.url%7D%7D%7B%7Belse%20if%20eq%20.event%20%22check.ssl_expiration%22%7D%7DTLS%20expires%20in%20%7B%7B.ssl.days_before_expiration%7D%7Dd%3A%20%7B%7B.check.alias%20%7C%20default%20.check.url%7D%7D%7B%7Belse%20if%20eq%20.event%20%22check.ssl_invalid%22%7D%7DTLS%20invalid%3A%20%7B%7B.check.alias%20%7C%20default%20.check.url%7D%7D%7B%7Belse%20if%20eq%20.event%20%22check.ssl_valid%22%7D%7DTLS%20valid%20again%3A%20%7B%7B.check.alias%20%7C%20default%20.check.url%7D%7D%7B%7Belse%20if%20eq%20.event%20%22check.ssl_renewed%22%7D%7DTLS%20renewed%3A%20%7B%7B.check.alias%20%7C%20default%20.check.url%7D%7D%7B%7Belse%20if%20eq%20.event%20%22check.performance_drop%22%7D%7DApdex%20-%7B%7B.apdex_dropped%7D%7D%3A%20%7B%7B.check.alias%20%7C%20default%20.check.url%7D%7D%7B%7Belse%7D%7D%7B%7B.event%7D%7D%3A%20%7B%7B.check.alias%20%7C%20default%20.check.url%7D%7D%7B%7Bend%7D%7D%7B%7Bend%7D%7D&m=%7B%7Bwith%20index%20.%200%7D%7D%7B%7B.description%7D%7D%5Cn%5Cn%7B%7B.check.url%7D%7D%20%28%7B%7B.check.token%7D%7D%29%20%C2%B7%20uptime%20%7B%7B.check.uptime%7D%7D%25%7B%7Bwith%20.downtime%7D%7D%7B%7Bif%20.duration%7D%7D%5CnDown%20for%20%7B%7Bprintf%20%22%25.0f%22%20.duration%20%7C%20duration%7D%7D%7B%7Bend%7D%7D%5Cn%7B%7B.details_url%7D%7D%7B%7Bend%7D%7D%7B%7Bend%7D%7D&p=%7B%7Bwith%20index%20.%200%7D%7D%7B%7Bif%20or%20%28eq%20.event%20%22check.ssl_expiration%22%29%20%28eq%20.event%20%22check.ssl_renewed%22%29%7D%7Dlow%7B%7Belse%20if%20or%20%28eq%20.event%20%22check.up%22%29%20%28eq%20.event%20%22check.ssl_valid%22%29%20%28eq%20.event%20%22check.performance_drop%22%29%7D%7Ddefault%7B%7Belse%7D%7Dhigh%7B%7Bend%7D%7D%7B%7Bend%7D%7DSign in to comment