Messaging and Notifications
Direct messages, team chats, class chats, realtime chat, muting conversations, broadcasts, notification bell, notification preferences, SMS level and policy, email delivery, message digest, web push and home-screen badge, deep links
Last updated July 27, 2026
Messaging and Notifications#
Prodemy has several ways people communicate on the platform — direct messages (1-on-1, adults only), group chats (team chats scoped to a tournament, and class chats scoped to a class), and broadcasts (one-to-many announcements). Plus the notification system that drives reminders, alerts, and digests across in-app, email, push, and SMS. Students are intentionally restricted from direct messaging for safety reasons, but they can take part in supervised group chats. This file explains all of it.
Who can message whom#
This is the most important rule set on Prodemy, so it's first.
Direct messages (1-on-1)#
Allowed:
- Parent ↔ Coach
- Parent ↔ Club Owner
- Coach ↔ Club Owner
Not allowed:
- Student ↔ anyone (students cannot send or receive DMs)
- Parent ↔ Parent (not a supported pair)
- Coach ↔ Coach (not a supported pair by default; can be opened in team chat context during a tournament)
Team chats (group)#
Auto-created when a tournament team roster is published. Members:
- Club Owner.
- Team coach (if assigned).
- Team manager (a parent or coach).
- Every player on the team.
- Every player's parent.
Minors' send permission is off by default — their parent sends on their behalf. Adults on the team (18+ players, parents, coaches, owner, manager) can send freely.
Class chats (group)#
If a club enables it, each class gets its own group chat. Members:
- Club owner.
- The class's coaches (the owner can add another active club coach to the chat).
- Enrolled adult students.
- Parents of enrolled minors.
Same supervised-group rules as team chats: minor students can read their class chat but not post (their parent posts for them); adults post freely.
Why students can't DM#
Direct adult-to-minor messaging is a common vector for harassment or grooming. Prodemy eliminates this entire category of risk by:
- Routing student questions through video feedback (coach → student via structured review form).
- Channeling parent-child communication through the verification queue and the team chat (group, supervised context).
- Using the parent as the communication pipeline for anything a student wants to tell a coach.
If a parent has a concern about their child's coach, they message the coach directly. The chatbot doesn't play intermediary — it just explains the rules.
Direct messages#
Parents, coaches, and club owners have a unified Messages page.
Getting to messages#
Click "Messages" in your sidebar, or tap the Messages card on your dashboard. The page shows all your message activity in one place:
- Team chats at the top (grouped by tournament).
- Direct message threads below.
Starting a new thread#
Click "New message." A searchable list of contacts appears — filtered to people you're allowed to message (per the permission matrix above) based on shared club membership.
For parents: you see coaches and club owners from clubs your children belong to.
For coaches: you see parents of your students and the club owners of your clubs.
For club owners: you see every parent and coach in your club.
Pick a contact, type your message, send.
Reading a thread#
Click a thread to open it. Shows the other person's name, role badge, and your message history with timestamps. The unread count clears when you open the thread. You can scroll back indefinitely — messages don't auto-delete.
What you can send#
- Text only, for now.
- No file attachments within DMs. If you want to send a video, use the video upload feature (students upload videos to coaches via that dedicated pipeline).
- Links in text are rendered clickable.
Moderation#
All DMs are stored on Prodemy's servers and accessible to platform admin for moderation if a dispute is raised. Be kind.
Realtime delivery and muting#
Chat is now realtime — messages appear the moment they're sent, no refreshing, and you get a notification for new ones. This applies to direct messages and to both kinds of group chat.
Every conversation (a DM, a team chat, or a class chat) has a mute toggle — tap the bell icon in the conversation header. Muting keeps you in the conversation and you can still read it, but it stops sending you notifications for it and it stops counting toward your unread badge. A muted conversation shows a small "muted" indicator. Per-message chat emails are also turned off in favor of a daily message digest (see "Notifications" below) — so chat won't flood your inbox.
Team chats#
Tournament team chat is a group channel that auto-creates when the club owner publishes the roster.
Who's in the channel#
Every team chat includes:
- Club owner (of the club hosting the tournament).
- Team coach (if assigned to this team).
- Team manager (a parent or coach designated as manager).
- Each player on the team.
- Each player's parent.
Roles show as color-coded badges next to sender names so you know who's who at a glance.
How it works#
- Messages arrive in realtime (no need to refresh).
- Shows sender name, role badge, and timestamp on each message.
- Auto-scrolls to your first unread with a red "New messages" divider.
- Parents of minors can send; minors themselves cannot. The UI reflects this — if you're a minor, the send button is disabled and your parent's name appears as the actual sender.
- Mute the channel from the bell icon in the header if it gets noisy.
Parent manager access#
Parents who are assigned as team managers get chat access for managed teams even if their own child isn't on the team. Shows up under "Teams I Manage" on the parent's Tournaments page.
What happens when the tournament ends#
Team chats stay accessible indefinitely — they don't auto-delete. You can scroll back weeks later to see team communications. Once the tournament is past its date, no one new joins the chat (no one new is registering).
Broadcasts#
Broadcasts are one-to-many announcements sent by club owners or coaches.
Audience targeting#
Club owners can send to:
- All club members (everyone, every location).
- A specific location (e.g. Gaithersburg branch only).
- A specific class (e.g. U-13 Intermediate).
- A specific age group (e.g. all U-15 players).
- All coaches.
- All parents.
- A custom group (manually picked recipients).
Coaches can send to:
- Their assigned classes only.
- Their students only.
Coaches cannot broadcast club-wide unless the club owner explicitly grants permission.
Writing a broadcast#
Sidebar → Broadcasts (or Announcements) → "New broadcast."
- Sender — your name and role (club owner or coach).
- Audience — pick from the dropdown.
- Message — required text. Supports basic formatting.
- Priority — Normal, Important, or Urgent. Affects visual styling on the recipient side (amber border for Important, red for Urgent, blue for Normal).
- Expiration — Never, 24 hours, 1 week, or a custom date. After expiration, the broadcast auto-hides from recipient dashboards.
- Schedule — Send now, or schedule for a specific date and time.
- Media attachment (optional) — upload a video or image. Cloudinary-backed. Renders inline in the broadcast UI and in email.
Delivery channels#
Pick any combination:
- In-app — always on (cannot be disabled). Appears as a pinned card on the recipient's dashboard.
- Email — optional. Sends to email addresses on file via Prodemy's email sender (Resend).
- Push notification — optional. Push is live for the installed web app (PWA) — if a recipient has installed Prodemy and enabled push on their device, the alert reaches their lock screen and updates the app-icon badge. Native iOS/Android (FCM/APN) push is still being provisioned. See "Web push and badge" below.
- SMS — optional, and now live via Twilio. A recipient actually receives a text only if their own SMS level allows it and the event type is permitted by platform policy (admins control which event types may use SMS). The message is prefixed
[PRODEMY]. (Security/payment-critical alerts text regardless of preference.)
On the recipient side#
Broadcasts appear as pinned cards at the top of the recipient's dashboard with:
- Sender name and role.
- Priority color (blue / amber / red left border).
- Message text.
- Media (embedded video player or image).
- Audience label ("Sent to: U-13 Parents").
- Timestamp.
- Dismiss button (removes from view; broadcast still shows in history).
Notifications#
Separate from messaging, notifications are the system-wide alerts that tell you about verifications, payments, enrollments, coach feedback, and more.
The notification bell#
Top-right of the nav bar on every page. Shows a red badge with the unread count.
- Updates in realtime, and the count stays in sync everywhere it appears (the bell, the home-screen badge on the installed app, dashboard tiles) — no more waiting for a stale count to catch up after you read something.
- Click to see the dropdown with the most recent notifications. Read items fade rather than disappear.
- "Mark all as read" clears the badge.
- "View all" opens the full history at
/dashboard/notifications.
What comes through#
The event catalog is intentionally broad. Grouped roughly:
- Drills and training — pending verification, drill verified, drill rejected, nutrition verified/rejected, perfect week, streak milestone, badge earned, leaderboard rank change.
- Coaches and video — new video uploaded for review, feedback posted, session booked, session reminder 24h/1h, session cancelled, review posted on your profile.
- Club and tournament — membership approved/rejected, tournament registration confirmed, team published, broadcast received, schedule changed, membership terminated.
- Payments — payment due in 3 days / 1 day / today, auto-pay pre-charge notice, payment processed, payment failed, refund processed, subscription renewed, auto-lock warning 3 days out.
- Community — your post was flagged/hidden, your post was restored, your post was removed, new comment on your post.
- Account — deletion initiated, deletion cancelled, club or drill approved/rejected, account suspended, welcome email, two-factor changes, terms re-acceptance, monthly report ready.
- Messaging — new direct message, new group-chat message (delivered in-app + push; collected into a daily email digest rather than one email per message).
- Equipment — loan due soon, loan overdue, deposit released (if your club uses equipment tracking).
- Parent-child linking — link request received, link request approved, link request rejected.
Well over 100 notification types now, and the set grows as we add features.
Notification preferences#
Settings → Notifications.
- In-app — always on, cannot be turned off.
- Email — default on for transactional items, configurable per category. (Per-message chat emails are off by design — chat goes to a daily digest instead.)
- Push — default on, configurable per category. Push delivery is live for the installed web app (PWA) once you enable it on the device; native FCM/APN push is still being provisioned.
- SMS — set by a single global SMS level (see below) rather than per-category toggles.
Change preferences anytime. Changes take effect immediately for new notifications.
Your SMS level#
SMS texting is live, and you control how much of it you get with one global SMS level in settings — roughly:
- Off — no texts (except mandatory ones, see below).
- Critical only — just security/payment-critical alerts.
- Critical + important — the above plus a curated set of important events.
- All — everything that's eligible for SMS.
Two things sit on top of your choice: Prodemy's platform policy decides which event types are even eligible for SMS (admins manage this), and a small set of security- and payment-critical alerts text you regardless of your level because they're mandatory. Texts are prefixed [PRODEMY]. (We also keep a defense that never texts a child's number.)
Club-scoped notifications#
Notifications related to a specific club (e.g. "new verification request" from a club your child belongs to) automatically include the club name in the title and include a ?club=xxx deep link. Click the notification and you land on the right club tab — the dashboard auto-switches context for you.
Example:
- Before deep linking: "Arjun completed today's batting drill — verify now"
- After: "Arjun completed today's batting drill at Mike Cricket Academy — verify now" (link takes you straight to the Mike Cricket Academy tab of the verification queue)
Rate limiting#
To prevent notification fatigue, non-urgent notifications are batched — e.g. 3 drill completions in quick succession become 1 combined notification. Urgent items (payment failed, session in 1 hour) are never batched — they come through immediately.
The in-app notification rate limit is a maximum of 5 notifications per user per 60 seconds. Exempt types bypass this limit (admin escalations, revert confirmations, etc.).
Email#
Prodemy sends emails from two senders depending on the type of message:
- hello@prodemy.app — human-facing emails (contact form replies, support tickets). Replies go to Zoho Mail inbox.
- noreply@prodemy.app — automated notifications (verifications, receipts, enrollment confirmations). Do not reply to these — they won't reach a human.
Types of email you might get from Prodemy#
- Welcome email when you sign up, role-specific (parent / student / coach / club owner).
- Email verification link after signup.
- Transactional confirmations — enrollment, payment, refund.
- Drill pending for verification (parent).
- Coach feedback posted (student + parent).
- Membership approved or rejected.
- Broadcast with embedded content.
- Fee change notice with old vs new fee and effective date.
- Schedule change notice.
- Class ending notice with refund or credit amount.
- Tournament or workshop cancellation notice with refund.
- Member removal notice (scheduled, immediate, or banned — different copy per type).
- Auto-pay preview 3 days before charge.
- Receipt for each successful payment.
If you don't get an email#
- Check spam.
- Verify your email address on the platform is correct.
- For verification emails, click "Resend" on the verification screen.
- Raise a ticket if multiple emails are missing — we can check delivery logs.
Web push and home-screen badge#
If you install Prodemy as an app (the PWA — see 01-getting-started.md), web push notifications are live. After installing, enable push on the device (a one-time "Enable on this device" tap), and you'll get alerts on your lock screen plus an unread-count badge on the app icon that stays in sync with your in-app bell. On iPhone, push only works once Prodemy is installed and launched from the home-screen icon.
Native mobile push#
The native iOS/Android apps have push wired through Expo, but delivery via FCM (Android) and APN (iOS) is still being provisioned — so on the native apps, push isn't fully live yet. (The installed web app above is the way to get push today.)
SMS — live#
SMS texting is live via Twilio. Whether you receive a given text depends on your SMS level (see "Your SMS level" above) and Prodemy's per-event policy, with mandatory security/payment alerts always sent. Texts are prefixed [PRODEMY]. For club owners, broadcast SMS delivery is also live and follows the same recipient-level and policy rules.
Deep links#
Every notification and broadcast has a destination URL that takes you straight to the right place in the app.
- Payment reminder notification → opens the specific pending payment.
- Verification request notification → opens the verification queue for the right child.
- Broadcast notification → opens the broadcast card (with the right club context pre-selected).
- Team chat notification → opens the team chat.
Deep links work across web and mobile (the mobile app intercepts the URL scheme).
Common situations#
I'm not getting drill verification reminders#
Check Settings → Notifications. Email and in-app are probably on, but if you turned email off for this category, reminders go in-app only.
Also check your spam folder for any email-based notifications.
Broadcasts aren't reaching everyone I targeted#
The recipient list is filtered by:
- Your target audience (location / class / age group / etc.).
- Active membership status (terminated members don't receive).
- Notification preferences (if a recipient turned off email for broadcasts, they only see in-app).
Click on the sent broadcast in your Broadcasts list → "Delivery stats" to see who got it via which channel.
I got a duplicate notification#
This is rare but can happen if an event fires twice (e.g. a retry loop). If it's consistent, raise a ticket with the notification title and timestamps — we'll investigate.
A chat isn't updating#
Chats are realtime. If you see no new messages and others say they sent some, check that the conversation isn't muted (the bell icon in the header), then refresh the page or quit/reopen the app to reconnect.
If this doesn't help#
Raise a ticket at https://prodemy.app/contact. Include what you were trying to send or receive, and timestamps if applicable. Tickets are read and replied to by email.
Was this article helpful?