Notification Map
Loading matrix and queue coverage…
Whited Brain
Loading matrix and queue coverage…
Visual contract for AthleteOS event fanout. Every row comes from the brain’s canonical event matrix and shows what should happen, to whom, where it should land, and whether the path is fully wired.
AOS/Reference/Event_Matrix.md| If this happens | Queue | Recipient | Badge | Clears when | State |
|---|---|---|---|---|---|
A User signs up `auth.users`, `profiles` | Parent/Coach/Owner self queue | User sees onboarding state | none or onboarding stepper | onboarding completed | partial |
A User accepts org invite `organization_users`, `invitations` | Owner/Admin Queue if approval-backed | Recipient sees membership + inviter may see completion | owner/admin queue decrements | invite accepted or expired | partial |
A Parent requests athlete claim `athlete_claim_requests`, `athlete_guardians` | Owner/Admin Queue | Owner/admin of athlete org | owner/admin queue + bell | approved or denied | partial |
A Parent requests org/team connection from public org page `parent_org_connect_requests` | Owner/Admin Queue | Owner/admin of target org | owner/admin queue + bell | approved or denied | partial; dedicated page exists, dashboard fanout weak |
A Owner/admin approves org/team connection `parent_org_connect_requests.status`, possible `athlete_guardians`, `athlete_teams` | Parent Queue | Parent requester | parent bell + parent queue | parent acknowledges or item marked read | partial |
A Owner/admin denies org/team connection `parent_org_connect_requests.status` | Parent Queue | Parent requester | parent bell + parent queue | parent reads / dismisses | partial |
A Parent follows org without full connection likely parent-org relation table / future state | Parent Queue / Parent Orgs | Parent only | none or org count | follow removed | unknown |
A User changes active org client auth state only | none | UI context changes | none | immediate | implemented |
B Direct message sent `messages`, `conversations`, `notifications` via `send-dm-notification` | Recipient queue + bell | All unread recipients | global bell + messages unread | thread opened / mark read | implemented |
B Coach starts parent conversation same as above | Parent Queue | Parent recipient | bell + messages unread | thread opened | implemented |
B Parent messages coach same as above | Coach Queue | Coach recipient | bell + messages unread | thread opened | implemented |
B SMS inbound reply maps to conversation inbound handler + `messages` | recipient queue + bell | Conversation participants | bell/messages | message read | partial |
B Org broadcast sent `scheduled_notifications` and/or delivery tables | recipient queues + bell / email / push | targeted members | bell if in-app enabled | read or archived | partial |
C Coach creates session invite `session_invites` | Parent Queue / Athlete Queue | Parent/athlete invitee | invite badge + bell | RSVP or invite expires | partial |
C Parent accepts session invite / RSVP `session_invites.status` | Coach Queue | Coach/owner of session org | coach queue + maybe session module badge | coach reviews / session starts | implemented (2026-04-23 — `notify_staff_on_session_rsvp` trigger + backfill) |
C Parent declines session invite `session_invites.status` | Coach Queue | Coach/owner | coach queue + maybe session module badge | coach reads | implemented (2026-04-23 — `notify_staff_on_session_rsvp` trigger + backfill) |
C Parent books open session `bookings` | Coach Queue | Coach/owner running session | bookings pending/new badge | coach views session roster or booking confirmed | partial; booking exists, queue unclear |
C Parent joins waitlist `waitlist_entries` | Coach Queue | Coach/owner running session | waitlist count badge | parent promoted/removed or coach reads | partial |
C Waitlist promotion happens `waitlist_entries`, `bookings`, `process-waitlist` | Parent Queue | Parent recipient | bell + schedule badge | accepted/expired/read | partial |
C Coach reschedules session `training_session_instances` + notification function | Parent Queue / Athlete Queue | Booked parents/athletes | bell + schedule badge | read | partial |
C Coach updates session details session rows + update function | Parent Queue / Athlete Queue | Booked parents/athletes | bell + schedule badge | read | partial |
C Upcoming session reminder window reached `scheduled_notifications` | Parent Queue / Athlete Queue | Booked parents/athletes | optional bell | session begins / notification sent | implemented for reminders, not queue-centric |
C Parent availability proposal sent (`In/Probable/Questionable/Out`) `roster_status_suggestions` | Coach Queue | Team coach and org staff | coach queue + team hub badge | coach accepts/dismisses/overrides | partial; Team Hub surface exists, dashboard fanout weak |
C Parent clicks `Resend to coach` on availability proposal new or updated `roster_status_suggestions` row | Coach Queue | Team coach and org staff again | queue/badge refresh | coach acts | partial or missing |
D Athlete assigned to team `athlete_teams` | Parent Queue / Athlete Queue | Parent/athlete should see updated team context | optional roster badge | viewed | partial |
D Athlete removed from team `athlete_teams` delete | Parent Queue / Athlete Queue | Parent/athlete | optional roster badge | viewed | unknown |
D Coach updates roster status roster status tables | Parent Queue | Parent if materially changed | bell optional | viewed | unknown |
D Coach requests parent attention on athlete likely message / notification event | Parent Queue | Parent | bell | action taken | unknown |
E Parent uploads athlete media `athlete_media` | none | Parent sees media item immediately | none | immediate | implemented |
E Parent deletes athlete media `athlete_media.deleted_at` | none | Parent vault updates immediately | none | immediate | implemented after guardian delete fix |
E Parent publishes recruiting profile `recruiting_profiles.is_public` | none | Parent sees public URL; coaches can view | none | immediate | implemented |
E Recruiter/anonymous viewer opens public profile `recruiting_profile_views`, `track-recruiting-profile-view` | Parent Queue optional, analytics card required | Parent should see view analytics | maybe profile-views badge | parent views analytics | partial |
E Parent sends college outreach email `college_outreach_sends` and edge function | Parent Queue optional | Parent sees send log; future coach-open tracking | none | sent logged | partial |
E College coach opens outreach/profile profile view + outreach open tracking | Parent Queue | Parent | recruiting badge | parent reads analytics | partial / likely weak fanout |
E Parent queues reel render `reel_compilation_jobs` | Parent Queue optional, reel page required | Parent sees pipeline stages | reel page badge | job complete/failed | implemented after queue work |
E Reel render completes `reel_compilation_jobs.status=complete` | Parent Queue optional | Parent | reel completion badge | viewed | partial |
E Reel render fails `reel_compilation_jobs.status=failed` | Parent Queue optional | Parent | error badge | retried/dismissed | partial |
F Coach completes evaluation `evaluations`, `evaluation_scores` | Parent Queue / Athlete Queue | Parent/athlete should be notified | bell + evaluations badge | viewed | partial |
F Report card published `reports` / report-card artifacts | Parent Queue / Athlete Queue | Parent/athlete | bell + reports badge | viewed | partial |
F Document acknowledgment requested document request flow / `document_acknowledgments` target | Parent Queue / Athlete Queue | Parent/athlete recipient | docs badge + bell | acknowledged | partial |
F Parent/athlete submits acknowledgment `document_acknowledgments` | Owner/Admin Queue or Coach Queue | Owner/admin/coach depending on document | docs review badge | staff reads or doc marked complete | partial |
G Invoice created `invoices`, recipients tables | Parent Queue | Parent/guardian recipient | invoice badge + bell | paid / waived / read | partial |
G Invoice reminder sent reminder function + notification/email rows | Parent Queue | Parent recipient | optional bell | paid / read | implemented for email, queue partial |
G Invoice overdue overdue processor | Parent Queue + Owner/Admin Queue | Parent recipient and owner/admin recipient | financial risk badge | paid / written off | partial |
G Payment succeeds Stripe webhook / invoice update / tournament registration update | Parent Queue + Owner/Admin Queue | Parent and owner/admin | payment badge | reconciled / read | partial |
G Payment fails Stripe webhook / invoice state | Parent Queue + Owner/Admin Queue | Parent and owner/admin | payment risk badge | resolved / retry succeeds | partial |
G Plan changes (org or parent) Stripe + `notify-plan-change` | purchaser queue | affected purchaser | plan/billing badge | read | partial |
H Public registration submitted `registration_submissions` / registration tables | Owner/Admin Queue | Owner/admin | registrations badge | reviewed / accepted / archived | implemented (2026-04-23 — `notify_staff_on_registration_submission` trigger + backfill) |
H Registration confirmed confirmation send function | Parent Queue | Parent registrant | registration badge | viewed | partial |
H Session public booking submitted `bookings` or related rows | Coach Queue / Owner Queue | Coach/owner | bookings badge | reviewed | partial |
H Tournament registration submitted tournament registration tables | Owner/Admin Queue | Owner/admin | tournament registration badge | reviewed | partial |
H Tournament registration confirmed confirmation function | Parent Queue / Team contact queue | Parent/team contact | confirmation badge | viewed | partial |
I Tryout registration/check-in occurs tryout rows/check-in rows | Coach Queue / Owner Queue | Owner/admin/coach | tryout badge | reviewed | partial |
I Evaluation submitted for tryout tryout eval rows | Coach Queue / Owner Queue | Staff only until decision | eval count badge | reviewed | partial |
I Tryout offer sent `tryout_offers` + send function | Parent Queue / Athlete Queue | Parent/athlete recipient | offers badge + bell | accepted / declined / expired | partial |
I Tryout offer accepted `tryout_offers.status` | Coach Queue / Owner Queue | Owner/admin/coach | offer response badge | rostered / read | implemented (2026-04-23 — `notify_staff_on_tryout_offer_response` trigger + backfill; legacy `notify-tryout-accepted` edge-fn invoke removed to prevent double-fire) |
I Tryout offer declined same | Coach Queue / Owner Queue | Owner/admin/coach | offer response badge | read | implemented (2026-04-23 — `notify_staff_on_tryout_offer_response` trigger + backfill) |
J Live game share created `game_shares` | none | Public/audience only | none | n/a | implemented |
J Game ends game status + `notify-game-ended` | Parent Queue optional | Parents/fans opted in | bell | read | partial |
J Match rescheduled game/match rows + notify function | Parent Queue / Coach Queue | affected members | schedule badge | read | partial |
J Rankings update materially rankings rows | role queue optional | athletes/parents/coaches if exposed | rankings badge | viewed | unknown |
K Event created/updated for teams event rows + notification function | Parent Queue / Coach Queue | affected org/team members | events badge | read | partial |
K Bracket advances bracket rows + notify function | Parent Queue / Coach Queue | affected team members | tournament badge | read | partial |
K Volunteer assignment posted assignment rows | Parent Queue | target parents/members | assignments badge | claimed / read | partial |
K Parent signs up for assignment assignment signup rows | Owner/Admin Queue / Coach Queue | owner/admin/coach | assignment response badge | reviewed | implemented (2026-04-23 — `notify_staff_on_assignment_signup` trigger + backfill) |
L In-app notification created `notifications` | user's queue + bell | target user | global bell | marked read/deleted | implemented |
L Scheduled reminder created `scheduled_notifications` | user's queue at send time | target user later | bell if converted to notif | sent/read | partial |
L Digest job runs `notification_digest_jobs`, `notifications` | email digest; queue unchanged | target user | none | digest sent | implemented |
L Notification preferences changed `notification_preferences` | none | delivery policy only | none | immediate | implemented |
L Push subscription exists `push_subscriptions` | none | delivery channel only | none | unsubscribed | implemented |
M Support ticket created support ticket tables + notify function | Platform Admin Queue | platform admins / support staff | inbox badge | replied/closed | partial |
M Admin replies to support ticket ticket reply rows | user queue | requesting user | bell | read | partial |
M Org deletion requested / executed `platform_admin_actions`, delete-org function | Platform Admin Queue | platform admins and initiating user | admin inbox badge | completed/read | partial |
M Manual grant / entitlement change grant tables / admin actions | target queue | affected org/user | entitlement badge optional | read | partial |