Prodemy

Messaging and Notifications

Direct messages, team chats, broadcasts, notification bell, notification preferences, email delivery, deep links, SMS/push status

Last updated April 20, 2026

Messaging and Notifications#

Prodemy has three ways adults communicate with each other on the platform — direct messages (1-on-1), team chats (group, tournament-scoped), and broadcasts (one-to-many announcements). Plus the notification system that drives reminders, alerts, and digests across email and in-app. Students are intentionally restricted from direct messaging for safety reasons. 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.

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.

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#

  • Polls every 10 seconds for new messages.
  • 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 have a canSend: true flag; minors themselves have canSend: false. The UI reflects this — if you're a minor, the send button is disabled and your parent's name appears as the actual sender.

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. Expo push on mobile. (Status note: push is wired in the mobile app but actual FCM/APN delivery is logged-only for now. This is planned to go live in a future release.)
  • SMS — optional. Sends via Twilio to phone numbers on file. Messages truncated to 160 chars with a link to the full message in app. SMS costs are charged to the club owner. The UI shows an estimated cost before sending (e.g. "42 SMS messages, est. $2.10"). (Status note: SMS is currently logged-only — not going out yet. When it goes live, the cost estimates and billing will be enabled.)

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.

  • Polls every 30 seconds for updates.
  • Click to see the dropdown with the last 10 notifications.
  • "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.
  • Parent-child linking — link request received, link request approved, link request rejected.

Over 30 notification types total, and the set grows as we add features.

Notification preferences#

Settings → Notifications. Per-category toggles:

  • In-app — always on, cannot be turned off.
  • Email — default on for transactional items, configurable per category.
  • Push — default on, configurable per category. (Push delivery is currently logged-only — when it goes live, this toggle controls delivery.)
  • SMS — default off, you opt in. (SMS delivery is currently logged-only — when it goes live, this toggle controls delivery.)

Change preferences anytime. Changes take effect immediately for new notifications.

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.

Mobile push#

Mobile apps use Expo push SDK. The infrastructure is wired but actual delivery via FCM (Android) and APN (iOS) is logged-only today — nothing actually pushes to the device yet. This is planned to go live in a future release.

When it goes live, push notifications will arrive on your phone lock screen and open the right dashboard context when tapped.

SMS#

Same status as push — wired but logged-only today. Planned to go live in a future release. When live, the SMS toggles in notification preferences (user side) and broadcast delivery (club owner side) will start actually delivering.

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.

The team chat isn't updating#

Team chats poll every 10 seconds. If you see no new messages after several minutes and others say they sent some, try refreshing the page or quitting/reopening the mobile app.

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?