Back to blog

Product · September 10, 2026

Introducing Slack, Discord and Telegram alerts for schedules, uptime and heartbeats

Connect a chat destination once, then use it for schedule, uptime, and heartbeat alerts without pasting webhook secrets.
crontap.com / blog
Connect Slack, Discord and Telegram to Crontap for formatted schedule, uptime and heartbeat alerts, with defaults, overrides and test messages in one place.

The alert worked. It arrived at the one email address attached to the account, sat politely in an inbox, and waited for somebody to notice. Meanwhile the people who could fix the problem were already talking in Slack, Discord, or Telegram.

That gap is small on a diagram and surprisingly large at 02:00.

Today Crontap adds native Slack, Discord, and Telegram alert channels for scheduled API calls, uptime monitors, and heartbeats. Connect a destination once, choose which product areas use it by default, then override that choice on any individual entity.

Email remains available on every plan. Chat channels are included on Pro and Ultra.

One place for human alerts

Crontap has always supported webhooks. They are still here, but they solve a different problem.

Notifications tell people that a schedule, monitor, or heartbeat needs attention. They are formatted for the destination and include a useful entity link. Integrations send machine-readable callbacks to another system. Use an Integration when Zapier, Make, n8n, or your own endpoint should continue a workflow. Use Notifications when a human should look up from chat.

The first release includes:

  • Slack channels connected through Slack OAuth.
  • Discord channels connected through Discord OAuth with the webhook.incoming permission.
  • Telegram direct messages and groups connected through a one-time bot link.
  • Defaults for Schedules, Monitors, and Heartbeats.
  • Use my defaults, Choose channels, and Off on every entity.
  • A test message and delivery history for each destination.
  • Failure and missed-run alerts, plus recovery messages when the source has a recovery lifecycle.
  • Detection of removed or revoked destinations, shown as Reconnect needed.

This is alert routing, not a full incident-management product. There are no acknowledge buttons, on-call rotations, escalation policies, SMS, or voice calls.

Connect Slack in two clicks

Open Settings, then Notifications. The page lists your email channel, connected chat destinations, and the defaults matrix.

Crontap notification settings with connected email, Slack and Discord destinations and defaults for schedules, monitors and heartbeats

Choose Add to Slack. Slack asks you to select the workspace and channel, then returns you to Crontap. No incoming webhook URL is copied into a form, and no workspace-wide bot token is stored.

Discord follows the same platform-hosted consent pattern. Telegram opens a choice between a direct message and a group, then waits for you to tap Start in Telegram. The destination becomes reusable after the platform confirms it.

Need the complete setup path? Use the Slack alerts guide, Discord alerts guide, or Telegram alerts guide.

Set sane defaults once

The defaults matrix has one row for each source:

Product areaA useful starting point
SchedulesEmail plus the team channel that owns scheduled jobs
MonitorsThe operations channel that watches uptime
HeartbeatsThe channel owned by the job or data team

A destination can be enabled for more than one row. One alert can also go to several destinations. For example, keep email enabled as a fallback while sending uptime and heartbeat alerts to #alerts.

Defaults apply to new and existing entities that use Use my defaults. Changing the matrix updates that shared routing choice without editing every monitor one by one.

Route alerts in 60 seconds with Crontap. Email is available on every plan. Chat channels are on Pro and Ultra. Open notification settings.

Override one heartbeat

Sometimes the global route is almost right. The general alerts channel should hear about most jobs, but the invoice import belongs with the finance engineering team.

Open the entity and find Notifications:

Crontap entity settings showing notification modes for defaults, chosen channels, or off

Pick one of three modes:

  1. Use my defaults follows the defaults row for that product area.
  2. Choose channels stores a custom set for this entity.
  3. Off silences human notifications for this entity. Machine Integrations still run.

Routing is per destination, not per event type. If a heartbeat uses Slack and Telegram, its missed, explicit failure, and recovery events use that selected set. Recovery is only sent when the source produces one. Uptime monitors and heartbeats do; schedule failures do not have the same recovery lifecycle.

This same control appears on schedules and uptime monitors, so the mental model does not change as you move around Crontap.

Test before the incident

Every channel menu has Send test. The test goes through the same sender used by real alerts and appears in delivery history. It is the quick way to catch an archived Slack channel, a deleted Discord webhook, or a Telegram bot that was blocked or removed.

A formatted Crontap test notification in Slack

If the platform says the destination no longer exists or can no longer accept messages, Crontap stops delivery and marks it Reconnect needed. The row stays in settings so you can reconnect or remove it without guessing what disappeared.

Delivery health is useful for a quieter failure too. A destination can be active while a temporary platform error is retried. Open its history to see whether the latest delivery was sent, skipped, or failed after retries.

What changes for existing webhook users

Nothing is being taken away. Existing webhook Integrations keep their event levers and JSON payloads. Heartbeats also accept integrations[] through the public API, so a machine callback can run beside human Notifications.

What changes is the recommended path. Do not paste a Slack or Discord webhook into Integrations just to alert a person. Connect the native destination once and route alerts from Notifications. Keep generic webhooks for systems that are supposed to process the event.

If your goal is to post content on a schedule rather than receive an operational alert, the existing Slack digest, Discord webhook, and Telegram bot guides still cover that workflow.

Plans and limits

Email continues on Starter, Pro, and Ultra. Connected Slack, Discord, and Telegram delivery requires a paid plan. If an account returns to Starter, chat channel configuration stays saved but delivery pauses. Upgrade again and the routes are still there.

Credentials are encrypted at rest. Slack and Discord credentials are bound to the selected channel. Telegram connections are bound to the confirmed direct message or group. Crontap does not read Telegram group chat.

See current item limits and cadence floors on pricing. Then use the platform guide that matches where your team already works:

Fix this in 60 seconds with Crontap. Free forever tier. No credit card. Schedule your first job.

From the blog

Read the blog

Guides, patterns and product updates.

Tutorials on scheduling API calls, webhooks and automations, plus deep dives into cron syntax, timezones and reliability.

Product Updates

Introducing AI Integrations

Transform a schedule's HTTP response with a plain-English prompt, return text or JSON, and forward it to Slack, Make, n8n, or your own endpoint. Test on any tier; saving is a Pro feature.

Alternatives

Vercel cron jobs: the Hobby once-per-day limit and how to beat it

Vercel Cron caps Hobby at one run per day, only guarantees timing within the hour, is UTC only, and ties every schedule change to a redeploy. Here is the external cron pattern teams use to ship per-minute, timezone-aware schedules and one dashboard across projects without paying $20/mo per user for Pro.

Alternatives

Cloud Run cron without Cloud Scheduler

Cloud Scheduler costs $0.10 per job per month after the first 3 and asks for OIDC plus IAM bindings on every target. Here is the IAM-free pattern Cloud Run teams use to fire their .run.app URLs on a clock with one bearer token and one dashboard across every GCP project.