Notification categories explained
Current UI categories, notification types, channels, severity levels, and ROLE_DEFAULTS per role.
Written By Salvatore Sinigaglia
Last updated About 5 hours ago
Current UI categories, notification types, channels, severity levels, and ROLE_DEFAULTS per role.
Notification categories explained
Wevion notification types, UI categories, and channel defaults are defined in
apps/backend/src/lib/notification-defaults.ts. Each notification can flow through in_app, email, push, telegram, and policy-driven Slack delivery. Per-role defaults (ROLE_DEFAULTS) map each type Γ channel Γ role to enabled/disabled. Users can override per-type via/settings β Notifications.
Who is this for
Anyone setting notification preferences or wondering why a specific alert arrived (or didn't). Reference page for the full notification taxonomy.
The categories
UI groups types into categories for easier preference management. Mapping from TYPE_CATEGORIES in notification-defaults.ts (visual grouping only β no backend logic depends on it):
Setting preferences at category-level toggles all types within. Per-type granularity also available.
Notification types
Verified set from notification-defaults.ts:
Account + auth
ACCOUNT_STATUS_CHANGEβ ad account status changed (disabled, restricted, recovered)ACCOUNT_VERIFICATION_BLOCKβ account blocked pending verificationTOKEN_EXPIRINGβ OAuth token about to expire; re-authorize neededPAYMENT_ISSUEβ Stripe payment failed or attention requiredSUBSCRIPTION_CHANGEβ plan changed (upgrade, downgrade, trial expiring)
Budget + spend
SPEND_CAP_WARNINGβ daily spend cap approaching thresholdBUDGET_DEPLETEDβ campaign / adset budget exhaustedKPI_THRESHOLD_ALERTβ custom metric crossed configured threshold
Campaigns + delivery
CAMPAIGN_DISAPPROVEDβ campaign rejected by platformADSET_DISAPPROVEDβ ad set rejectedDELIVERY_ERRORβ ad serving error reported by platform
Sync + operations
SYNC_COMPLETEDβ periodic sync finished successfullySYNC_FAILEDβ sync erroredREPORT_READYβ scheduled report generatedEXPORT_READYβ bulk export ready for downloadBULK_LAUNCH_COMPLETEDβ bulk campaign launch finished
Creative + automation
CREATIVE_JOBβ Creative Hub AI generation completedCREATIVE_FATIGUEβ creative fatigue detected (frequency / CTR decay)RULE_EXECUTEDβ automation rule firedRULE_ACTION_FAILEDβ rule tried to act but failed
Team + system
USER_ADDEDβ new user added to teamTEAM_MEMBER_REMOVEDβ user removed from teamSYSTEMβ generic system notification
Strategy
STRATEGIC_PLAN_STEPβ a step in a strategic plan is ready / due
Channels
The NOTIFICATION_CHANNELS enum in notification-defaults.ts has 4 channels: in_app, email, push, telegram. Slack delivery is not part of this enum or of ROLE_DEFAULTS β it is handled separately by a policy-gated allowlist (see Slack subset below).
No mobile push β web push only (VAPID, in-browser / PWA).
The 5 severity levels
Role-Based Defaults
ROLE_DEFAULTS matrix in notification-defaults.ts: for each role Γ notification type Γ channel = default enabled/disabled.
Example for super_admin + ACCOUNT_STATUS_CHANGE:
Example for manager (more conservative):
User can override defaults via preferences (see team-116 customize notifications).
Preferences precedence
For each notification β channel decision:
- Notification policy engine evaluates event
- Apply team-scoped override (admin can disable team-wide)
- Apply user-scoped override (per-user toggle)
- Otherwise: ROLE_DEFAULTS for user's role
- Otherwise: notification-type's catalog default
First match wins.
If decision is IGNORE (user opted out): notification dropped, not enqueued.
Slack subset
Slack only fires for a conservative default event set (no success noise):
account.disconnectedaccount.token_expiringcampaign.publish_failedrule.action_failedsync.failedbilling.payment_failedbilling.subscription_expired
Other notification types do NOT route to Slack by default. Workspace can customize via notification_policy overrides.
Common questions
Why didn't I get a notification?
- Check preference for that type Γ channel at
/settings β Notifications - Check role default (admin defaults narrower than owner)
- Check team-wide override (admin may have disabled)
- For Telegram: verify bot link active (see ntf-104)
- For email: check spam, verify user.email set
Why am I getting notifications for someone else's actions?
Owner fan-out: if you're the team owner, you receive notifications for team members' triggering actions (e.g. their published campaigns). Owner can disable via preferences.
Can I add custom notification types?
No. Notification types are platform-defined. Custom thresholds (e.g. KPI alerts) are configured via the Rules Engine β see rul-102.
Can I get notifications in real-time?
In-app: live polling (~30s).Push: instant via VAPID.Telegram: instant (SQS worker).Email: near-instant.Slack: instant.Digest (Telegram only): batched at user's preferred hour.
Common mistakes
- Disabling all email expecting only in_app: some types only deliver via email by default
- Expecting mobile push: not implemented; only web push (VAPID)
- Expecting a general daily email digest: general alerts are per-event email; the only batched email is the Ad Fatigue digest (daily/weekly). Use Telegram digest for broader summaries
FAQ
What notification channels does Wevion support?
Wevion delivers notifications through five channels: in-app (the notification center, always on), email via noreply@wevion.ai, web push over VAPID (needs a browser permission grant), Telegram bot DM (needs a bot link), and Slack (needs an admin OAuth install). Each notification type can flow through any of these, governed by role defaults and your per-type preferences.
Does Wevion send mobile push notifications?
No. Wevion supports web push only, delivered over VAPID in the browser or PWA β there is no native mobile push app. For instant mobile-friendly alerts, connect the Telegram channel instead, which delivers notifications straight to your phone. Expecting mobile push is a common mistake noted in the notification settings.
How are notification defaults decided per role?
Wevion uses a ROLE_DEFAULTS matrix in notification-defaults.ts that maps each role Γ notification type Γ channel to enabled or disabled β manager defaults are more conservative than owner, for example. When deciding a channel, Wevion applies team overrides, then user overrides, then these role defaults, then the type's catalog default; first match wins.
Which events trigger Slack notifications?
By default Wevion routes only a conservative, failure-focused set to Slack: account disconnected, token expiring, campaign publish failed, rule action failed, sync failed, payment failed, and subscription expired. Success notifications don't create Slack noise. A workspace can customize this behavior through notification_policy overrides if it needs additional event types in Slack.