Skip to content

Alerts are not arriving

Look at the most recent run outcome.

Outcome Meaning
notified Watcher delivered on at least one channel. If you did not see it, look at the channel itself.
notify-failed Every channel failed. Watcher knows, and has queued the alert for retry.
anything else Nothing was ever sent — this is a detection question. See Why didn’t my watch fire?

notify-failed — what happens automatically

Section titled “notify-failed — what happens automatically”

You do not need to do anything for the alert to be retried:

  1. The formatted alert is stored durably with the watch’s state.
  2. The next run of that watch replays it before collecting anything — no source is fetched and no model call is spent.
  3. On success the event is finally marked as notified, so you will not get it twice.
  4. On failure the attempt count rises. After five attempts the alert is given up on.
Symptom Cause Fix
Alerts print to the console instead of sending No bot token or chat id configured Set telegram_bot_token and telegram_chat_id; GET /config/status shows both as booleans
Telegram sendMessage failed (400 …) Wrong chat id, or the bot was never messaged Message the bot once from the target chat, then re-read the chat id from getUpdates
403 Forbidden The bot was blocked or removed from the group Unblock, or re-add the bot
Alerts arrive in the wrong chat A per-channel chatId override on the watch Check the watch’s channels entry
Health alerts go somewhere unexpected TELEGRAM_ADMIN_CHAT_ID is set That is what it is for; unset it to send them to the normal chat
Symptom Cause Fix
FCM: no registered devices for this owner The app has not registered a token for this account Sign in to the app; it registers on sign-in and refresh
FCM auth failed The service-account JSON is wrong or malformed Re-paste FIREBASE_SERVICE_ACCOUNT_JSON verbatim
Some devices get it, others do not Stale tokens Watcher prunes tokens the provider reports as gone; sign in again on the affected device
Nothing arrives while the app is closed Device notification permissions or quiet hours Check the app’s notification settings

It does not send email. It logs to the console. This is a known gap — see Known limitations. Transactional account email (verification, password reset) is a separate feature that does work.

Terminal window
pnpm run-due:force

on a watch you expect to fire, then compare:

  • the printed outcome,
  • the watch’s run history,
  • and what actually arrived on the channel.

If the outcome is notified and nothing arrived, the problem is between Watcher and the channel provider, not inside Watcher.