Alerts are not arriving
First: is it detection or delivery?
Section titled “First: is it detection or delivery?”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:
- The formatted alert is stored durably with the watch’s state.
- The next run of that watch replays it before collecting anything — no source is fetched and no model call is spent.
- On success the event is finally marked as notified, so you will not get it twice.
- On failure the attempt count rises. After five attempts the alert is given up on.
Telegram checklist
Section titled “Telegram checklist”| 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 |
Push (Android) checklist
Section titled “Push (Android) checklist”| 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 |
The email channel
Section titled “The email channel”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.
Verifying delivery end to end
Section titled “Verifying delivery end to end”pnpm run-due:forceon 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.