Skip to content

Email digest for unread messages #2236

Description

@barredterra

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.

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions