Notifications
Enable Unread Message Notification
- Config group:
platformConfigs.notification - Config name:
Enable Unread Message Notification - Value format: Boolean string (
"true"or"false") - Default: Feature is disabled if the config is missing or set to
"false"
When a coach has unread messages and the snoozer timer fires (see Snoozer Timers
below), the system checks this config. If true, it sends an email to the coach
with a summary of their unread messages. If false or missing, the email is
skipped. The unread message event is still published regardless, so other
listeners (e.g. SSE, push) are unaffected.
Unread Message Notification HTML Template
- Config group:
platformConfigs.notification - Config name:
Unread Message Notification HTML Template - Value format: Go
html/templatestring - Default: Falls back to a simple inline HTML string: "You have N new messages. Please click the link to view messages."
Used by the unread message notification handler to render the coach notification
email body. The template is parsed with Go's html/template engine and executed
with the following variables:
{{.Total}}- total unread message count{{.MessageIcon}}- URL to the new message icon hosted on the server{{.ViewAllMessageURL}}- link to the portal tasks page ({PORTAL_URL}/#/tasks){{.AppName}}- formatted as"{year} {APP_NAME}"(e.g. "2026 Intervengine"){{.Messages}}- array of message objects, each containing:{{.CreatorName}}- full name of the message sender{{.CreatorInitials}}- initials derived from the name{{.CreatorPhotoURL}}- profile photo URL (can be nil){{.Content}}- message content{{.SentAt}}- human-readable time ago string (e.g. "2 minutes ago")
Snoozer Timers
Unread Message
- Config group:
platformConfigs.snoozerTimer - Config name:
Unread Message - Value format: Duration string (e.g.
"1m","5m","1h","30s"). Set to"off"to disable. - Default:
1m(1 minute)
When a message is sent and the recipient coach is not currently connected via SSE (i.e. not online), a snoozer task is enqueued with this delay. The task is deduplicated per coach - if multiple messages arrive while the coach is offline, only one snoozer task exists at a time.
When the snoozer fires after the configured delay, the system queries for all unread messages from approximately the last minute and (if the Enable Unread Message Notification config is enabled) sends a notification email to the coach.
Setting the value to "off" disables the snoozer entirely - no unread message
check will be scheduled.
Not Consented
- Config group:
platformConfigs.snoozerTimer - Config name:
Not Consented - Value format: Duration string (e.g.
"1m","24h","7d") - Default:
7d(7 days)
When a new participant is created and they have not yet consented, a snoozer task is enqueued with this delay. When the timer fires, it publishes a "participant not consented" event to the Task domain, which can trigger follow-up actions such as creating a coach task to check in with the participant.
If the config is not set, defaults to 7 days.