Notifications
RedStick AI provides real-time notifications for task events, team activity, and action items.
Notification Delivery#
Notifications are delivered through two channels:
- Real-time WebSocket — Instant push to the browser
- 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_approvalis 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
/notificationspage
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:
| Plan | Retention |
|---|---|
| Free | 30 days |
| Pro | 90 days |
| Team | 180 days |
| Business | 365 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
- Check Profile → Notifications and confirm the relevant event type has a non-
Noneemail option. - Check your spam/junk folder — emails come from the platform's configured sender address with subject lines like
Redstick: Task Failed. - 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.