The 29 notification types, four channels, and preferences
Notifications
Everything Surflink can tell a person about is one of 29 notification types in 8 categories, delivered over up to four channels: the in-app bell (always), push (iPhone via APNs, browser via Web Push), email (Resend) and SMS (Twilio, opt-in, requires a verified phone number). Every type has a live emitter — a route, a cron or a database trigger — and a test fails the build if one stops being emitted.
The catalog
| Category | Type | Default channels |
|---|---|---|
| Messages | Message | in-app, push |
| Coaching & video | Session shared | in-app, push, email |
| Shared with you | in-app, push, email | |
| Feedback (annotation added) | in-app, push | |
| Clip ready | in-app, push, email | |
| Processing failed | in-app, push, email | |
| Batch upload started | in-app | |
| Batch upload complete | in-app, push, email | |
| Batch upload finished (partial) | in-app, push, email | |
| Guided review ready | in-app, push, email | |
| Review reply | in-app, push | |
| Review waiting (nudge) | in-app, push | |
| Drills & progress | Drill assigned | in-app, push, email |
| Drill completed | in-app, push | |
| Training session scheduled | in-app | |
| Scheduling | Training session cancelled | in-app, push |
| Session reminder | in-app, push, SMS | |
| Rescheduled | in-app, push | |
| Starting soon | in-app, push, SMS | |
| Session full | in-app | |
| Billing & payments | Payment failed | in-app, push, email, SMS |
| Subscription active | in-app, email | |
| Subscription ended | in-app, email | |
| Trial ending (workspaces already on a trial) | in-app, email | |
| Team & people | New athlete | in-app |
| Added to team | in-app, email | |
| Coach added | in-app | |
| Competition | Ranking update | in-app |
| Admin | Operator alert | in-app |
Invites and welcome emails are dedicated transactional emails, not notification types.
Preferences
Coaches: Settings → Notifications. Athletes: Notifications (/athlete/settings). Per type you can switch push, email and SMS off; the bell cannot be turned off. Turning on SMS asks for your phone number and a verification code. Every notification email carries a one-click unsubscribe link.
The bell and the notifications page
The bell shows unread counts live. /notifications lists everything with category filters and mark all read.
How delivery works
A new notification row is fanned out into a delivery queue per enabled channel. A cron drains the queue every minute with retry and backoff; deliveries that keep failing are dead-lettered and raise an operator alert. Retention sweeps run nightly.
iPhone push needs the APNs signing key in the server environment; without it, in-app, email, Web Push and SMS still deliver.