Notification categories explained

Current UI categories, notification types, channels, severity levels, and ROLE_DEFAULTS per role.

Written By Salvatore Sinigaglia

Last updated 19 days ago

Current UI categories, notification types, channels, severity levels, and ROLE_DEFAULTS per role.

Notification categories explained

Wevion has predefined notification types, UI categories, and channel defaults. Each notification can flow through in-app, email, push, Telegram, and (by policy) Slack. Per-role defaults map each type × channel × role to enabled or disabled. You can override per-type in 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):

CategoryTypes it covers
campaignsCAMPAIGN_DISAPPROVED, ADSET_DISAPPROVED, DELIVERY_ERROR
budgetSPEND_CAP_WARNING, BUDGET_DEPLETED, PAYMENT_ISSUE, SUBSCRIPTION_CHANGE
accountACCOUNT_STATUS_CHANGE, ACCOUNT_VERIFICATION_BLOCK, TOKEN_EXPIRING
kpiKPI_THRESHOLD_ALERT
syncSYNC_COMPLETED, SYNC_FAILED, REPORT_READY, EXPORT_READY
operationsBULK_LAUNCH_COMPLETED, RULE_EXECUTED, RULE_ACTION_FAILED, CREATIVE_JOB
creativeCREATIVE_FATIGUE
teamUSER_ADDED, TEAM_MEMBER_REMOVED
systemSYSTEM
strategySTRATEGIC_PLAN_STEP

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 verification
  • TOKEN_EXPIRING — OAuth token about to expire; re-authorize needed
  • PAYMENT_ISSUE — Stripe payment failed or attention required
  • SUBSCRIPTION_CHANGE — plan changed (upgrade, downgrade, trial expiring)

Budget + spend

  • SPEND_CAP_WARNING — daily spend cap approaching threshold
  • BUDGET_DEPLETED — campaign / adset budget exhausted
  • KPI_THRESHOLD_ALERT — custom metric crossed configured threshold

Campaigns + delivery

  • CAMPAIGN_DISAPPROVED — campaign rejected by platform
  • ADSET_DISAPPROVED — ad set rejected
  • DELIVERY_ERROR — ad serving error reported by platform

Sync + operations

  • SYNC_COMPLETED — periodic sync finished successfully
  • SYNC_FAILED — sync errored
  • REPORT_READY — scheduled report generated
  • EXPORT_READY — bulk export ready for download
  • BULK_LAUNCH_COMPLETED — bulk campaign launch finished

Creative + automation

  • CREATIVE_JOB — Creative Hub AI generation completed
  • CREATIVE_FATIGUE — creative fatigue detected (frequency / CTR decay)
  • RULE_EXECUTED — automation rule fired
  • RULE_ACTION_FAILED — rule tried to act but failed

Team + system

  • USER_ADDED — new user added to team
  • TEAM_MEMBER_REMOVED — user removed from team
  • SYSTEM — 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).

ChannelWhere it showsSetup
in_appNotification center in Wevion UIAlways on
emailInbox via noreply@wevion.aiAlways on if user.email set
pushWeb push (PWA) via VAPIDBrowser permission grant required
telegramTelegram bot DMBot link required (see Connect Telegram for real-time alerts)
Slack (policy-gated)Slack channelOAuth install required (admin); fires only for the allowlisted failure event set below

No mobile push — web push only (VAPID, in-browser / PWA).

The 5 severity levels

SeverityVisualUse
critical🔴Account disabled, payment failed, action urgent
high🔴Errors that affect delivery
medium🟡Warnings, threshold approaches
low🟢Routine successes, info
infoℹ️Notices, completions

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:

ChannelDefault
in_app✅ on
email✅ on
push❌ off
telegram✅ on

Example for manager (more conservative):

ChannelDefault
in_app✅ on
email❌ off (for most types)
push❌ off
telegram❌ off

User can override defaults via preferences (see team-116 customize notifications).

Preferences precedence

For each notification → channel decision:

  1. Notification policy engine evaluates event
  2. Apply team-scoped override (admin can disable team-wide)
  3. Apply user-scoped override (per-user toggle)
  4. Otherwise: ROLE_DEFAULTS for user's role
  5. 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.disconnected
  • account.token_expiring
  • campaign.publish_failed
  • rule.action_failed
  • sync.failed
  • billing.payment_failed
  • billing.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 Connect Telegram for real-time alerts)
  • 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 Create your first rule — step-by-step.

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.