Problem
Unread state lives on Raven Channel Member last_visit. A message is unread when creation > last_visit.
Raven already sends push when a message is posted (Frappe Cloud or Raven Cloud). There is no email (or other fallback) for people who:
- never installed the PWA / mobile app
- disabled push
- never open Raven
Those users miss DMs, mentions, and channel traffic until they happen to open the app.
Proposal
Add an optional email digest of unread messages.
A scheduled job would find users with unread messages and send one email (not one mail per message). The digest can use the same unread rule as badges: non-System messages after last_visit, excluding the user's own messages.
Suggested shape:
- Site-wide toggle in Raven Settings
- Per-user opt-in (default off, or default on for users without push)
- One digest per interval (for example daily, or a few hours after the last unread)
- Links that open the channel / message in Raven
- Skip bots
Skip users on leave
If Frappe HR is installed, do not send the digest when the user is on leave today.
Raven already has this check (raven.api.raven_users.is_user_on_leave): submitted Attendance with status "On Leave" for today, via the linked Employee. Reuse that. Do not invent a second leave source.
Out of scope (unless you want it)
- Per-message emails (too noisy for channels)
- Changing push behavior
- Email as a replacement for in-app unread badges
Why this helps
Push only reaches people who already use Raven on a device. Email reaches people who live in the inbox and rarely open chat, without marking messages read until they actually view them.
Problem
Unread state lives on Raven Channel Member
last_visit. A message is unread whencreation > last_visit.Raven already sends push when a message is posted (Frappe Cloud or Raven Cloud). There is no email (or other fallback) for people who:
Those users miss DMs, mentions, and channel traffic until they happen to open the app.
Proposal
Add an optional email digest of unread messages.
A scheduled job would find users with unread messages and send one email (not one mail per message). The digest can use the same unread rule as badges: non-System messages after
last_visit, excluding the user's own messages.Suggested shape:
Skip users on leave
If Frappe HR is installed, do not send the digest when the user is on leave today.
Raven already has this check (
raven.api.raven_users.is_user_on_leave): submitted Attendance with status"On Leave"for today, via the linked Employee. Reuse that. Do not invent a second leave source.Out of scope (unless you want it)
Why this helps
Push only reaches people who already use Raven on a device. Email reaches people who live in the inbox and rarely open chat, without marking messages read until they actually view them.