Notifications across channels — complete guide
Last updated: May 19, 2026
Notifications across channels — complete guide
TL;DR: Wevion delivers alerts across 5 channels (in-app, email, push web/VAPID, Telegram, Slack). 22 notification types verified, grouped in 8 categories (campaigns, budget, account, kpi, sync, operations, creative, team, system). 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 (22 types + 8 categories)
22 notification types verified in notification-defaults.ts:
ACCOUNT_STATUS_CHANGE, 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.
Grouped in 8 categories: campaigns, budget, account, kpi, sync, operations, creative, team, system.
Channels (5 verified)
Channel | Notes |
|---|---|
in_app | Always on; team-scoped notification inbox v2 |
Per-event delivery; per-type unsubscribe link; NO email digest worker | |
push | VAPID web push (PWA); NO native mobile push |
telegram | Opt-in link + 13 alert toggles + digest (daily/weekly) |
slack | OAuth install + 7 default events fissi (conservative) |
Connect Telegram
/settings → Notifications → Connect Telegram. One-time link token via POST /api/v1/telegram/link → deep_link to bot → /start → telegram_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
Per-event delivery (NOT batched digest — no email digest worker). 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 auto-deactivate), 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?
NOT implemented. Per-event emails only. Use Telegram digest for batched summary.
Mute / snooze?
NOT implemented in notification core (DEFERRED).
Slack default events?
7 conservative events: 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
First-time setup: ntf-103 notification categories → team-116 customize notifications
Connect Telegram: ntf-104 Telegram connect
Setup digest: ntf-106 Telegram digest
Email setup: ntf-107 email notifications