Notifications
claude-scheduler can ping you on Telegram every time a job finishes — success, failure, or both. Per-schedule policy, org-level defaults, zero spam if you don't want any.
Telegram setup (one time)
- Talk to @BotFather and create a bot. Copy the token —
123456:ABC-DEF…shape. - Find the chat id of the channel / group / DM you want to receive messages in. Easiest way: open @userinfobot for personal chats, or message your bot and load
https://api.telegram.org/bot<TOKEN>/getUpdatesin a browser to grab thechat.id. - Go to Settings → General, paste the bot token and chat id, click Send test message. You should see the test ping in Telegram immediately.
Both the token and chat id live on your org row in Postgres. The token is stored as plaintext on purpose (it's scoped to your bot; revoking it from BotFather kills any leak).
Per-schedule policy
Each schedule has a notifyOn setting:
never— silence. Job results visible only in the dashboard.on-failure— ping on failure / timeout. Recommended default.on-success— ping on success only. Useful for "the backup ran" confirmations.always— both. Use sparingly for high-signal schedules.
Schedules inherit from their project, which inherits from the org default. Override anywhere in the chain.
Multiple chats
The org-level chat id is the default. Override on a per-project or per-schedule basis to route different streams to different channels — critical alerts to an on-call channel, low-priority confirmations to a DM.
Transactional emails (password reset, email verification, team invite) go through Resend. There's no per-schedule email notification yet — Telegram is the route for job outcomes. If you want email-on-failure, tell us.
Webhooks
Generic outbound webhooks (Slack, Discord, your own ingest) are on the roadmap. For now, scripts can poll the REST API with an API key — filter by status + queuedAt to ship results into any downstream system.