Notifications

RedStick AI provides real-time notifications for task events, team activity, and action items.

Notification Delivery#

Notifications are delivered through two channels:

  1. Real-time WebSocket — Instant push to the browser
  2. Email — Immediate transactional emails or periodic digest summaries, depending on your per-event preference

Notification Types#

This list reflects events that actually fire. Some historical event types in the API are reserved but unused.

Task Lifecycle Events#

  • Task started (task_started) — A task has begun
  • Task completed (task_completed) — The worker finished its task successfully
  • Task failed (task_failed) — The worker encountered a non-infrastructure error
  • Task timed out (task_timed_out) — A task exceeded its time limit
  • Task crashed (task_crashed) — An infrastructure failure forced a task to abort
  • Task resumed (task_resumed) — A task was retried after a previous failure or cancel

Note: task_needs_approval is a reserved event type in the API but does not currently fire. Approval-related UI (toast, badge) is present for future use.

Billing Events#

  • Quota warning (quota_warning_80) — Your tenant's overage budget is 80% consumed
  • Quota exceeded (quota_exceeded) — Your tenant's overage budget is exhausted; new runs are blocked

Billing quota emails are sent immediately regardless of your email preference setting, because budget exhaustion is operationally urgent.

Notification Center#

Access the notification center from the bell icon in the top bar:

  • Action-required badge — A red badge on the bell shows the count of unread action-required notifications (such as failed tasks, timed-out tasks, approval requests, crashed tasks, and quota-exceeded events)
  • Recent notifications popover — Click the bell to see recent notifications; click an item to navigate to the related execution or billing page
  • Mark all read — Available in the popover header whenever the popover contains any notifications
  • Dismiss — Remove an individual notification using the × button that appears on hover; a dismiss button is also present on every item on the full /notifications page

For the full list, click View all notifications at the bottom of the popover. The dedicated notifications page (/notifications) has two tabs:

  • Needs attention — Unread action-required notifications grouped by project
  • All — Every notification with optional unread filter and load-more pagination; related notifications from the same execution are collapsed into threads

Approval Toasts#

When a task_needs_approval notification arrives via WebSocket, a floating toast appears in the corner of the page. You can Approve, Reject, or View the execution directly from the toast without navigating away.

Desktop Notifications#

When you are watching an active execution, the platform fires a native OS-level browser notification when the execution transitions from running to completed or failed. This lets you move to another tab or window and still be alerted when a long-running task finishes.

Desktop notifications require both browser-level permission and an in-app opt-in. The enabled flag in the desktop-notifications hook defaults to false and is only set to true when the in-app permission request flow is triggered — granting permission through your browser's site settings alone is not sufficient. No production UI currently exposes the opt-in control, so desktop notifications are non-operational unless localStorage['desktop-notifications-enabled'] is manually set to 'true' in browser DevTools.

Preferences#

Customize notification behavior from Profile → Notifications tab:

  • Toggle in-app notifications on or off per event type
  • Choose the email delivery option per event type:
    • None — no email
    • Immediate — send an email as soon as the event fires
    • Daily digest — batch into a morning summary (sent at 09:00 UTC the following day)
    • Weekly digest — batch into a weekly summary (sent at 09:00 UTC the following Sunday)

Changes take effect immediately and also apply to digests that have already been scheduled but not yet sent.

Email Digests#

The platform runs a background digest sender (checks every 5 minutes) that collects pending notifications and sends batched emails at their scheduled time. If a preference is changed to None before the scheduled send time, the digest for that event type is skipped — no stale emails are delivered.

Each digest email includes a one-click List-Unsubscribe link (RFC 8058) so you can opt out without logging in. Clicking the unsubscribe link sets the relevant email preference to None for that event type. Digest-wide unsubscribe links (included in digest emails) disable all daily and weekly digest frequencies in a single click.

Rate Limiting#

To prevent notification floods, in-app notifications are capped at 20 per event type per 5-minute window per user. Notifications that exceed this limit are silently dropped — no error is surfaced. Under normal usage this limit is never approached; it guards against runaway automation that fires many events in quick succession.

Retention#

Notifications expire automatically based on your plan's retention window:

PlanRetention
Free30 days
Pro90 days
Team180 days
Business365 days

A background pruner runs hourly and deletes notifications past their expires_at timestamp, keeping the feed manageable and the database clean.

Troubleshooting#

Bell badge shows a count but the popover is empty The popover loads the 10 most recent notifications on open. If all action-required items were already dismissed, the badge count may briefly lag — it is fetched once on page load and then updated by WebSocket events rather than polled on a timer. Refresh the page to reset the count.

Not receiving email notifications

  1. Check Profile → Notifications and confirm the relevant event type has a non-None email option.
  2. Check your spam/junk folder — emails come from the platform's configured sender address with subject lines like Redstick: Task Failed.
  3. If you previously clicked an unsubscribe link, the preference for that event type is set to None. Re-enable it in Profile → Notifications.

Approval toast did not appear The approval toast is driven by a live WebSocket push. If the WebSocket connection dropped, reload the page — the task_needs_approval notification will appear in Needs attention on the notifications page even if the live toast was missed.