Notifications across channels — complete guide

Notification categories, channels, preferences, Telegram, email, push, and Slack setup. Connect, customize, troubleshoot.

Written By Salvatore Sinigaglia

Last updated About 1 hour ago

Notification categories, channels, preferences, Telegram, email, push, and Slack setup. Connect, customize, troubleshoot.

Notifications across channels — complete guide

TL;DR: Wevion delivers alerts across in-app, email, push web/VAPID, Telegram, and Slack. Notification types and UI categories are defined in apps/backend/src/lib/notification-defaults.ts. ROLE_DEFAULTS matrix per role × type × channel. Telegram + Slack are opt-in setup; in-app + email are role-based defaults.

Table of contents

Notification categories

Current notification types are verified in notification-defaults.ts:

ACCOUNT_STATUS_CHANGE, ACCOUNT_VERIFICATION_BLOCK, SPEND_CAP_WARNING, CAMPAIGN_DISAPPROVED, ADSET_DISAPPROVED, DELIVERY_ERROR, TOKEN_EXPIRING, PAYMENT_ISSUE, SYNC_COMPLETED, SYNC_FAILED, REPORT_READY, BULK_LAUNCH_COMPLETED, USER_ADDED, RULE_EXECUTED, CREATIVE_JOB, SYSTEM, RULE_ACTION_FAILED, BUDGET_DEPLETED, EXPORT_READY, SUBSCRIPTION_CHANGE, TEAM_MEMBER_REMOVED, KPI_THRESHOLD_ALERT, CREATIVE_FATIGUE, STRATEGIC_PLAN_STEP.

Grouped categories are defined in the same file: campaigns, budget, account, kpi, sync, operations, creative, team, system, strategy.

Channels

The NOTIFICATION_CHANNELS enum has 4 channels (in_app, email, push, telegram); Slack is delivered separately by a policy-gated allowlist, not part of the enum or ROLE_DEFAULTS.

ChannelNotes
in_appAlways on; team-scoped notification inbox v2
emailMostly per-event delivery; per-type unsubscribe link; the one batched email is the Ad Fatigue digest (daily/weekly)
pushVAPID web push (PWA); NO native mobile push
telegramOpt-in link + mapped alert toggles + digest (daily/weekly)
Slack (policy-gated)OAuth install + conservative default failure event set; not in the channel enum

Connect Telegram

/settings → Notifications → Connect Telegram. One-time link token via POST /api/v1/telegram/link → deep_link to bot → /starttelegram_link row created (user_id+chat_id unique).

Bot blocking auto-detection: 403 from Telegram → is_active = false.

Telegram bot commands + digest

5 verified bot commands: /start /status /stats /help /unlink.

Digest configs: daily_digest_enabled + hour, weekly_digest_enabled + day + hour, digest_timezone (IANA). Cron every 15 min (lock 100011) → dedup via telegram_digest_log past 14 days.

Email notifications

Mostly per-event delivery. The one batched exception is the Ad Fatigue email digest (daily/weekly, via creative-fatigue.service.ts cron). Owner fan-out included. Unsubscribe URL per-type.

Customize preferences

Per-user + team-scoped overrides + role defaults (ROLE_DEFAULTS matrix).

Troubleshoot

Common: Telegram silent (bot blocked / preference disabled), email in spam, push expired (410/404 → subscription hard-deleted), Slack token revoked, owner fan-out unwanted, digest skipped, in-app inbox empty.

FAQ

Why don't I get notifications I expect?

Check preferences precedence: team override → user override → role default → catalog default. Notification may be IGNORE'd by policy engine.

What's owner fan-out?

Owners receive notifications for team members' triggering actions (with "Team: [memberName]" prefix). Can disable in preferences.

Mobile push?

NO native mobile app. Web push via VAPID (browser / PWA only).

Email digest?

No general email digest of all notification types — general alerts are per-event. The one batched email is the Ad Fatigue digest (daily/weekly). Use Telegram digest for a broader batched summary.

Mute / snooze?

NOT implemented in notification core (DEFERRED).

Slack default events?

Conservative event set: account.disconnected, account.token_expiring, campaign.publish_failed, rule.action_failed, sync.failed, billing.payment_failed, billing.subscription_expired.

Multiple users, one Telegram bot?

Yes — same bot serves all users via per-user telegram_link rows + per-user preferences.

Bot also for tracker callbacks?

Yes — same bot infrastructure handles both notifications + tracker postback callbacks. Separate workflows.

Next steps

FAQ

Why don't I get notifications I expect?

Check preferences precedence: team override → user override → role default → catalog default. Notification may be IGNORE'd by policy engine.

What's owner fan-out?

Owners receive notifications for team members' triggering actions (with "Team: [memberName]" prefix). Can disable in preferences.

Mobile push?

NO native mobile app. Web push via VAPID (browser / PWA only).

Email digest?

No general email digest of all notification types — general alerts are per-event. The one batched email is the Ad Fatigue digest (daily/weekly). Use Telegram digest for a broader batched summary.

Mute / snooze?

NOT implemented in notification core (DEFERRED).

Slack default events?

Conservative event set: account.disconnected, account.tokenexpiring, campaign.publishfailed, rule.actionfailed, sync.failed, billing.paymentfailed, billing.subscription_expired.

Multiple users, one Telegram bot?

Yes — same bot serves all users via per-user telegram_link rows + per-user preferences.

Bot also for tracker callbacks?

Yes — same bot infrastructure handles both notifications + tracker postback callbacks. Separate workflows.

Last updated: 2026-05-17