Solution · Multi channel routing

One workspace. Many channels. Zero overlap.

The legacy engager had four hardcoded Telegram chats. The SaaS engager has unlimited. Subscribe each one to a tailored slice of events. The customer success channel sees revenue. The on call channel does not.

Three bots, three audiences

The on call bot. The leadership bot. The GitHub bot.

Add three Telegram bots in Channels. Subscribe the on call bot to outage and recovery and SSL expiry. Subscribe the leadership bot to weekly status and revenue digests. Subscribe the GitHub bot to repo events.

Engager fans out exactly the right slice to each. The on call bot never sees a revenue email. The GitHub bot never sees an outage page.

engager.rookhq.com / @realm / channels

Channels

4

Enabled

3

Failed test

1

Ops bot

All

Bot ending …Df1Q · chat -1001234567

Test passed

On call only

Alerts only

Bot ending …Hf2X · chat -1009876543

Test passed

ops@team.rookhq.com

Reports only

Resend → ops@…, legal@…

Test passed

GitHub admin chat

GitHub only

Bot ending …Kp9R · chat -1005556677

Test failed

Email goes to lists

Add a recipient list, not a single address.

Email channels accept a comma separated list. ops, legal, finance, customer success · pick the recipient mix per channel.

Reports fan out through the same Resend integration. No SMTP, no per inbox config, no missing DKIM.

Routing pipeline

Event fires

alert.outage.down

Mute window

in future? drop

Subscribed kinds

in channel list?

Active days

in channel TZ

Quiet hours

critical only

Send

Telegram · Email · Slack

Channel kinds

Three transports, one routing model.

Telegram

Bot token plus chat ID. Add as many bots as your workspace needs. Each bot gets its own routing config.

Email

Resend backed. From address plus recipient list per channel. restrained template across every report kind.

Slack

Incoming webhook URL. Pick the channel in Slack. Engager never asks for a bot token.

How a notification gets routed

Five filters, evaluated in order.

CapabilityOrderCheck
Mute window1If mutedUntil is in the future, drop
Subscribed kinds2If kind is not in the channel list, drop
Active days3In channel timezone, evaluate day of week
Quiet hours4Inside window, suppress non critical or all
Critical bypass5In CRITICAL_ONLY mode, critical kinds still fire
  • Test before save

    Every channel ships with a Send test button. The engager hits Telegram or Resend with the stored secret, decrypted just in time.

  • Disable, do not delete

    Pause a channel during a vendor migration. Re enable when ready. The history travels with it.

  • Audit row per fanout

    Every send is recorded with a timestamp and the result. Replay a failed branch without resending the rest.

Wire each audience to exactly the events they need.