The inbox is the main view of the Messages section. The left pane lists conversations; the right pane shows the selected thread or compose form. On mobile the right pane slides up as a sheet over the list.Documentation Index
Fetch the complete documentation index at: https://docs.1club.ai/llms.txt
Use this file to discover all available pages before exploring further.
How the list is built
The list queries/v1/messages filtered to top-level rows (no replyToMessageId). Each row is a conversation, not an individual message: outbound sends with their replies, inbound submissions with your responses, drafts not yet sent.
Rows are sorted by createdAt descending and paginated 25 at a time. Load more at the bottom extends the page size.
What a row shows
Each row is built around the recipients of the conversation:- A single contact shows that contact’s avatar and full name.
- A pair of contacts shows two stacked avatars and “Firstname, Firstname”.
- A group of 3+ shows the first contact’s avatar with a
+Nbadge and “Firstname + N others”.
- A Draft status chip when the message has not been sent yet.
- The relative time of the latest message (
sentAtif sent,createdAtif draft). - A thread counter badge (the small number bubble) showing how many messages are in the conversation, including the original.
Selecting a row
Clicking a row updates the URL to/messages/<id> and renders the right pane:
- If the message is a draft, the compose pane opens so you can finish writing.
- Otherwise, the thread view renders: the original message at the top, replies underneath in order, and an inline reply box at the bottom.
/messages/<id>/reply and the compose pane takes over the right side with the original sender pre-selected as the recipient and the subject pre-filled with Re: <subject>.
Real-time updates
The inbox subscribes to the notification WebSocket. Every time a message event for the current organization arrives, the list and the open thread refetch. New inbound replies appear without a manual refresh.Status and engagement signals
The inbox does not surface per-recipient delivery state directly in the list, but the underlying records track it. Eachmessage_recipient has a deliveryStatus that can be queued, sent, processed, delivered, deferred, bounced, dropped, failed, spam, unsubscribed, or skipped, plus an engagementStatus of open, click, unsubscribe, or spamreport, and timestamps for each transition. Webhook handlers from SendGrid and Twilio update these fields as events come in.
The message-level status is simpler: just draft or sent. The inbox uses that to decide whether selecting a row opens compose or the thread view.
Audience filters and admin vs instructor view
Admins and managers see the organization-wide inbox: every message attached to the org. The right-pane Compose button is enabled and the audience filters and template picker are available. Instructors see a club-scoped slice: conversations involving members at the clubs they teach at. The compose button hides the audience filter and template picker; replies to existing inbound messages still work.Permissions
Reading the inbox requiresmessages.read.own. Composing or replying requires messages.create.own. Audience filters and access to organization-wide custom templates require admin or manager scope.
Related
- Compose - The send and reply flow that the right pane drives.
- Templates - Templates the compose pane reads from.
- Messaging overview - How the inbox fits with automations and AI replies.