Skip to content

Slack, Discord & Telegram notifications

Get pinged in Slack, Discord, or Telegram the moment inbound mail arrives, an email bounces, deliverability dips, or a webhook auto-disables. Human-readable alerts with the same retry and auto-disable guarantees as webhooks — no JSON blobs, no polling.

  • Slack
  • Discord
  • Telegram

Three platforms, zero glue code

Paste a Slack incoming-webhook URL, a Discord channel webhook, or a Telegram bot token and chat id. PostStack formats every event into a clean, readable message — no middleware, no Zapier zap, no cron job.

Subscribe to exactly the events you want

Pick from inbound mail, bounces, spam complaints, suppressions, webhook auto-disable, domain re-verification failures, and deliverability drops. Scope each channel team-wide, per-domain, or per-mailbox.

Retries and auto-disable built in

Failed deliveries retry with exponential backoff up to 8 attempts, honour platform 429 Retry-After hints, and auto-disable after 20 straight failures with an email + in-app alert. Sibling to webhooks, same guarantees.

Create a Telegram channel for bounces

bash
curl -X POST https://api.poststack.dev/notification-channels \
  -H "Authorization: Bearer sk_live_..." \
  -H "Content-Type: application/json" \
  -d '{
    "type": "telegram",
    "name": "Ops alerts",
    "events": ["email.bounced", "webhook.disabled"],
    "config": {
      "botToken": "123456789:ABCdef-GhIJklm_NopQRsTuvWXyz",
      "chatId": "-1001234567890"
    }
  }'

Use cases

Inbound mail straight to your team chat

Route your support@ mailbox to a customer-facing Slack channel so the whole team sees new tickets land in real time. Scope the channel to a single mailbox and only that inbox triggers a ping — no noise from the rest of the domain.

Deliverability early-warning system

Subscribe an engineering Telegram chat to email.bounced, email.complained, and deliverability.degraded. The moment your bounce or complaint rate creeps toward a reputation problem, you hear about it on your phone — before an ISP starts throttling.

Catch a broken integration instantly

webhook.disabled fires when one of your endpoints auto-disables after 20 consecutive failures. Pipe it to a Discord ops channel and you find out the second your downstream automation stops receiving events, instead of discovering it days later in a missing-data report.

Stack channels for fan-out routing

Multiple channels can match the same event — they all fire. Send the support@ stream to Slack for the success team while the team-wide bounce stream goes to an engineering Telegram chat, all from one event, with no most-specific-wins surprises.

How it works

Notification channels are a sibling to webhooks: the same delivery engine, the same retry schedule, the same auto-disable safety net — but PostStack does the formatting so the message reads like a sentence, not a payload. Each channel has a type (slack, discord, or telegram), a name, a list of subscribed event types, and a platform-specific config. Slack uses an incoming-webhook URL (add the "Incoming Webhooks" app, pick a channel, copy the URL). Discord uses a channel webhook (Edit Channel → Integrations → Webhooks → New Webhook → Copy URL). Telegram uses the Bot API — message @BotFather, run /newbot, copy the token, add the bot to your chat, and grab the chat id from getUpdates. Seven event types are available: inbound_email.received, email.bounced, email.complained, email.suppressed, webhook.disabled, domain.verification_failed, and deliverability.degraded. Each channel targets one of three scopes — team-wide (the default), per-domain, or per-mailbox — and because matching is a stacking model rather than most-specific-wins, several channels can react to the same event at once. Delivery retries with exponential backoff across 8 attempts (30 s, 2 m, 10 m, 30 m, 2 h, 8 h, 16 h); platform rate-limit 429s honour the Retry-After hint instead of the default schedule. After 20 consecutive permanent failures the channel auto-disables, the team owner gets an email, and an in-app notification appears in the dashboard bell — re-enable from the dashboard or via the API once the integration is healthy. Two OAuth scopes guard the surface: notifications:read for list and get, notifications:manage for create, update, delete, and the one-click test send. Secrets in config are always masked on read, so a bot token or webhook URL never leaks back out of the API.

Frequently asked questions

How is this different from webhooks?

Webhooks POST raw signed JSON to an endpoint you build and host. Notification channels deliver the same events as human-readable messages directly into Slack, Discord, or Telegram — no endpoint to build, no payload to parse. They share the webhook delivery engine, so you get identical exponential-backoff retries and auto-disable behaviour.

Which events can I subscribe to?

Seven event types: inbound_email.received (new mail at a mailbox), email.bounced, email.complained (marked as spam), email.suppressed, webhook.disabled (an endpoint auto-disabled after 20 failures), domain.verification_failed, and deliverability.degraded. Each channel subscribes to any subset — only the events you list trigger a message.

How do I set up a Slack, Discord, or Telegram channel?

Slack: add the "Incoming Webhooks" app, choose a channel, and copy the webhook URL. Discord: open the target channel → Edit Channel → Integrations → Webhooks → New Webhook → Copy URL. Telegram: message @BotFather, run /newbot, copy the token, add the bot to your chat, and read the chat id from the getUpdates API. Then create the channel in the dashboard or via the API and hit "Send test" to confirm it works.

Can I send different events to different channels?

Yes. Each channel has its own event subscription and scope (team-wide, per-domain, or per-mailbox). Channels stack — multiple matching channels all fire for the same event — so you can route your support mailbox to a Slack channel and your bounce stream to a Telegram chat at the same time.

What happens if a channel keeps failing?

Failed deliveries retry with exponential backoff across 8 attempts (up to ~16 hours), and platform rate-limit 429 responses honour the Retry-After hint. After 20 consecutive permanent failures the channel auto-disables, the team owner is emailed, and an in-app alert appears in the dashboard bell. Re-enable it from the dashboard or with a single API call once the integration is healthy.

Are my bot tokens and webhook URLs kept secret?

Yes. Channel secrets are masked on every read — the API and dashboard show a redacted summary (e.g. a masked bot token) rather than the raw value, so credentials never leak back out once stored. You can rotate just the secret without re-supplying the rest of the config.

Related features

Ready to start sending?

Free plan includes 3,000 emails/month. No credit card required.