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

email

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 → /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

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

Related