Email notifications — what you'll receive

Last updated: May 19, 2026

Email notifications — what you'll receive

Wevion sends emails per event (not batched / no digest worker implemented for email). Backed by send-email-notification.worker.ts via emailService.sendNotificationAlert(). Direct user + owner fan-out (if user.owner_id exists). Per-type unsubscribe link in every email points to ${frontendUrl}/settings/personal/notifications?unsubscribe=${notificationType}. Failures non-blocking.

Who is this for

Anyone wondering what email notifications Wevion sends, when, from whom, and how to manage them.

Per-event delivery (no digest)

Each qualifying notification triggers one email. There is no email digest worker — meaning:

  • No batched daily / weekly email summary

  • No "10 events combined into one email"

  • Every alert that passes your preferences → one email

For batched summaries: use Telegram digest (ntf-106).

How delivery works

  1. Notification event triggers in backend (e.g. campaign disapproved)

  2. Policy engine evaluates preferences → if email enabled for this type × user → enqueue

  3. SQS message routed to send-email-notification.worker.ts

  4. Worker calls emailService.sendNotificationAlert()

  5. Email sent via plugin 12.email.ts (typically AWS SES / Mailgun / similar)

  6. If user.owner_id exists: owner also gets email (with implicit "Team: [memberName]" context)

Failure (provider error, invalid address): event recorded; worker doesn't retry indefinitely (typical SQS retry pattern with DLQ).

Email content

Each email includes:

  • Subject: [Wevion] {Notification Type} or similar

  • Body: notification message + severity + context

  • Entity link: entityUrl = ${frontendUrl}/backoffice/${entity_type}s/${entity_id} — click to open the relevant entity in Wevion

  • Unsubscribe link: ${frontendUrl}/settings/personal/notifications?unsubscribe=${notificationType} — clicking unsubscribes from this specific type (not all emails)

Branded HTML template + plain-text fallback.

Owner fan-out

If you're a team member (e.g. mediabuyer) with user.owner_id set to your team owner:

  • Direct notifications go to you (your email)

  • AND to your owner (their email)

This lets owners stay informed of team activity. Owner can disable in their own preferences.

If you're an owner: you receive your team members' notifications by default (per ROLE_DEFAULTS for owner role).

Unsubscribe per type

Each email's unsubscribe link is per-notification-type, not all-emails:

${frontendUrl}/settings/personal/notifications?unsubscribe=${notificationType}

Click → opens Wevion settings → toggles email channel off for that specific notification type.

To unsubscribe from ALL emails: visit /settings/personal/notifications directly → toggle email channel off across all types.

Who sends

  • From address: typically noreply@wevion.ai (varies per deployment)

  • Reply-to: typically not monitored (use support channels for replies)

  • Email domain: workspace's configured domain (apps/backend/src/plugins/external/12.email.ts)

Allowlist noreply@wevion.ai in your email provider's spam filter to ensure delivery.

What notification types email by default

Per ROLE_DEFAULTS matrix in apps/backend/src/lib/notification-defaults.ts:

Role

Email default for

super_admin

Most critical types (account, payment, sync errors)

owner

Critical types + team member actions

admin

Critical types relevant to admin scope

manager

Limited subset; most types email-off by default

mediabuyer

Limited subset; most types in-app only by default

finance

Billing-related only

viewer

Minimal

Override via /settings → Notifications.

When email is the right channel

Use email for

Use other channel

Important events worth archiving

Real-time alerts (use push / telegram)

Cross-team async coordination

Team chat

Compliance / audit trail

In-app inbox

Notifications for users without Telegram

Telegram users → use Telegram

Email's strengths: durable, searchable, shareable. Weakness: slower than push / Telegram.

Email vs in-app

Channel

Latency

Persistence

in-app

~30s polling

Persisted in notification_inbox_item until acknowledged / archived

email

Near-instant

Persisted in your inbox forever (until you delete)

For critical alerts you may want both. For high-frequency types: maybe in-app only to avoid email overload.

Bounces + invalid addresses

If user.email is missing or invalid:

  • Worker skips email send for that user

  • Other channels still attempted (in_app, telegram, push)

  • No bounce-retry mechanism (admin / user fixes email in profile)

Privacy

Email recipients see:

  • Your user.email (the address)

  • The notification content (subject + body)

  • Entity link (opens Wevion — requires login)

Email does NOT include:

  • Other users' notifications

  • Cross-team data

  • Sensitive tokens / secrets (output is sanitized server-side via similar mechanism to Wavo's sanitizeToolOutput)

Common questions

Why am I getting so many emails?

Your role + per-type defaults trigger emails for many notification types. Disable specific types via /settings → Notifications or click unsubscribe in any email.

Why am I getting emails for someone else's actions?

Owner fan-out: you're an owner; team member actions notify you. Disable in your preferences.

Why didn't I get an email I expected?

Check: preferences (email channel enabled for this type?), spam folder, user.email correct, role default doesn't enable email for this type.

Can I get daily / weekly email digest?

No (not implemented). Use Telegram digest (ntf-106) for batched summaries.

Can I forward Wevion emails to my team?

Yes (standard email forward). But beware: forwarded emails leave Wevion's auth scope; the entityUrl link requires Wevion login.

Can I reply to a notification email?

Typically no (noreply@ address). For support: open ticket via Wevion Help Center or via Wavo (create_support_ticket tool).

Common issues

  • No emails received: check user.email, spam folder, allowlist noreply@wevion.ai, verify preferences

  • Too many emails: disable specific types via /settings → Notifications or unsubscribe link in any email

  • Unsubscribe link broken: very rare; report to support; meanwhile manage via /settings → Notifications directly

  • Email with sensitive token / secret visible: should not happen (sanitization). If observed: report immediately as security concern

  • Owner / member separate emails for same event: by design (owner fan-out); owner can disable

Related