Schedule ntfy push notifications

Publish push notifications to an ntfy topic on a schedule. Every phone and desktop subscribed to the topic gets it, on ntfy.sh or your own server, with a title, priority, tags, and a link to open.

Example: a daily reminder on your phone

json
{
  "name": "Water the plants",
  "cron": { "expression": "0 19 * * SUN,WED", "time_zone": "Europe/Amsterdam" },
  "nodes": [
    { "id": "push", "ntfy_publish": {
        "topic": "home-k7f2q9",
        "title": "Plants",
        "message": "Time to water the plants 🌱",
        "tags": ["seedling"],
        "priority": 3 } }
  ]
}

Example: NAS disk usage, every 6 hours, on your own server

Read a value from any API and push it to a protected topic on a self-hosted ntfy server:

json
{
  "name": "Disk usage to phone",
  "cron": { "expression": "0 */6 * * *" },
  "nodes": [
    { "id": "disk", "request": { "method": "GET", "endpoint": "https://nas.example.com/api/disk", "credential_id": "YOUR_NAS_TOKEN_ID" } },
    { "id": "push", "ntfy_publish": {
        "server": "https://ntfy.example.com",
        "topic": "nas",
        "title": "NAS disk",
        "message": "{{ $.used_percent }}% used, {{ $.free_gb }} GB free",
        "click": "https://nas.example.com",
        "credential_id": "YOUR_NTFY_TOKEN_ID" } }
  ]
}

Set up

Install the ntfy app and subscribe to a topic. Topics on ntfy.sh are public to anyone who knows the name, so use a hard-to-guess one, or protect it with an access token and save that as a bearer_token credential.

Reference

Publish an ntfy notification: ntfy_publish

Sends POST to the ntfy server (default https://ntfy.sh) with the topic and message as JSON. Output for the next step: The published message.

Field Type Notes
server string Your ntfy server. Omit for https://ntfy.sh.
topic string, required Letters, digits, _ and -, up to 64 characters. Anyone who knows a public topic can read it, so pick a hard-to-guess name.
message string, required Up to 4,096 characters. Placeholders allowed.
title string Up to 256 characters. Placeholders allowed.
priority integer 1 (min) to 5 (urgent). Omit for the default, 3.
tags string[] Up to 10 tags. Tags that match an emoji short code, like warning, show as that emoji.
click string A URL opened when the notification is tapped. Placeholders allowed.
credential_id string The id of a bearer_token credential holding an ntfy access token, for protected topics.

More ideas

  • A bin-day reminder every Tuesday evening: 0 20 * * TUE.
  • A one-time reminder to renew a domain, with run_at.
  • Your Stripe balance every morning.