Messaging clients
One inbox for every conversation — clients and gym-owner threads in the same view, with realtime delivery.
The walkthrough
Layout
The Messages tab is a two-pane inbox. Conversations live on the left, the active thread on the right. Unread counts appear as badges; threads with new messages float to the top.
Starting a new conversation
- Click New message (or the pencil icon on mobile).
- Search for a client by name and pick them.
- Type and hit send — the message appears immediately for the client in their PWA, with a push notification if they've granted permission.
Gym-owner threads (gym accounts)
If you're on a gym account, messages from your gym owner appear in the same inbox alongside client threads — no separate tab. They're visually distinguished but use the exact same UI patterns as client threads.
Realtime
Messages use Supabase Realtime — new messages appear without a refresh. If a message doesn't show up within a second or two, check your internet (or refresh — there's a known edge case after long idle that we're tracking).
What you can send
- Text — plain text only for v1 (markdown coming).
- Auto-reactions to events (e.g. "PR posted!") will surface in messages soon.
Unread tracking
Stackd marks a thread as read the moment you open it. Unread counts are scoped per-trainer (so two trainers in the same gym can both have unread badges on the same client thread).