Messages 1
Customer view shown. Teachers see the same layout inside the teacher app.
Stay protected. Keep all messages and payments on Popdance. Never pay a teacher by bank transfer or cash in advance. We cannot refund or help with bookings paid outside the platform.
Learn more 2
Search messages
AllUnread (2)OffersArchived 3
Amelia Hart10:42
Disco Diva Kids Party · Confirmed
Perfect. I will arrive at 13:15 to set up...
2 new 4
Priya ShahYesterday
Hen Party Class · Offer sent
I have sent you a custom offer with the...
Marcus Bell12 Oct
First Dance Lessons · Completed
Thanks Sam, it was a pleasure!
Zoe Park2 Oct
Corporate Workshop · Cancelled
Understood, sorry we could not...
Showing 4 of 4 conversations
Ph
Amelia HartTypically replies within 3 hours
Disco Diva Kids Party · Sat 14 Nov, 14:00 · £216.50 (example) · Confirmed
Tuesday 10 November
Hi Sam, thanks for booking! Does the hall have a sound system or shall I bring mine?
Hi Amelia, there is a small speaker but please bring yours.
Offer acceptedSystem message. Payment received, funds held.
Today
Perfect. I will arrive at 13:15 to set up. Any songs Poppy wants?
Also, could you send the hall map?
Anything Taylor Swift! Map attached.
hall-map.pdf Seen 10:44
Amelia is typing...
6
Write a message...
Attach (JPG, PNG, PDF, 10 MB) · Quick repliesSend
Inline warning: "This looks like a phone number or email. Keep chat on Popdance to stay protected." 7
Notes
-
Heading and role. One inbox component serves both roles. The shell changes by role: customers get the customer sidebar (24-customer-bookings-list.html); teachers get the teacher sidebar where Messages links to this same screen. URL differs but the component is shared. noindex. Analytics:
inbox_viewed with role.
-
Safety banner. Always visible at the top and dismissible only for the session. Copy reviewed by legal. Link to Trust and safety. Never removed because it protects the payment model.
-
Thread list controls. Search across teacher or customer name, service title and message text. Filters: All, Unread, Offers (threads with an open offer or request), Archived. Sorted by latest message. Thread count and pagination or infinite scroll after 30 threads.
-
Thread row. Counterpart name, last message preview (80 characters), time (clock today, "Yesterday", date), booking title and status, and unread count. Selected row highlighted. Each thread belongs to a request or booking so context is always visible. Pre-booking enquiries from a profile also create a thread tagged "Enquiry".
-
Conversation header. Counterpart photo and name, typical reply time (calculated), and actions: View booking (25-booking-detail-messages.html), Archive, Report (opens modal with reasons: spam, off-platform payment request, inappropriate, safeguarding concern; routes to 65-admin-reports-moderation.html). A pinned summary card shows the booking snapshot.
-
Message area. Bubbles with date separators, attachments, read receipts ("Seen 10:44"), typing indicator and system messages (offer sent, offer accepted, payment received, booking changed). Real-time updates; email notification if unread after 15 minutes. Teacher view adds the customer's first name only until payment, and shows offer and quote buttons ("Create offer" links to 49-request-detail-offer.html).
-
Composer. Text up to 2000 characters, Enter to send, Shift+Enter for new line, attachments JPG, PNG, PDF up to 10 MB (virus scanned). Teachers also have saved quick replies. Contact-detail detection (phone, email, URL, "pay me directly") shows a warning and logs the event; repeated attempts alert admin. Blocked users cannot send.
Teacher view
Same structure with teacher app header and teacher sidebar (Messages active). Differences: list filters add "Needs reply" and "Requests"; response-time badge shows the 48 hour deadline for new requests; the booking snapshot card shows net payout after commission; the composer adds Quick replies and a Create offer shortcut; customer's surname, phone and exact address stay hidden until the booking is confirmed. Reply speed feeds the teacher's response rate on their profile.
Mobile
Two-pane becomes two screens: thread list first, then conversation with a back arrow. Composer fixed above the keyboard. Safety banner collapses to a one-line "Stay protected" chip that expands on tap.
States
Empty inbox: "No messages yet. When you request a booking or message a teacher, conversations appear here" with link to 02-search-results.html. No thread selected (desktop): placeholder "Select a conversation". Loading: skeleton rows and bubbles. Send failure: bubble marked "Not sent, tap to retry". Offline: banner and queued messages. Blocked or closed account: composer replaced by "You can no longer reply to this conversation". Logged-out: redirect to 29-login.html.