Page header and view toggle. Lists confirmed bookings only (paid, funds held). Pre-payment items live in Requests. Calendar toggle links to Availability with bookings overlaid. Analytics: teacher_bookings_viewed.
Filters, search and bulk actions. Search by customer name, ref (PD-nnnnn) or postcode. Filters: service, date range, status, location type (in person, online). Sort: event date, created, value. Bulk: export CSV, download iCal for selection, message selected (group bookings only). Filters persist in the URL query string.
Detail panel. Opens on row click; deep link /dashboard/bookings/[ref]. Contact phone and exact address only revealed 7 days before the event (privacy). Shows timeline, price breakdown, commission by current plan (example rates), net earnings.
Held funds explainer. Money is held by Popdance from payment. Release rule: 48 hours after teacher marks complete (or auto-complete 48 hours after event end), unless the customer raises an issue. Links to Earnings and payouts.
Actions. Mark complete (confirm dialog, cannot undo, sends review invite to customer), message thread, add to calendar, raise issue (reason list, free text, optional photo; opens dispute for admin), cancel. Mark complete is only enabled once the event end time has passed.
Cancel modal. Reason required, message optional but recommended. Shows consequence copy per cancellation policy set on the service. Error: "We could not cancel this booking. Please try again or contact support." Event: teacher_booking_cancelled.
Mobile
Table collapses to cards (customer, date, status, earnings, one primary action). Detail panel becomes a full-screen page. Status tabs scroll horizontally. Sidebar replaced by a hamburger.
States
Empty: "No bookings yet. Complete your profile and reply to requests quickly to get your first booking" with links to Profile and Requests. Loading: skeleton rows. Error: "We could not load your bookings" with Retry. Per-row states: Confirmed, Part paid (recurring), Reschedule asked, Awaiting completion, Issue raised, Completed, Cancelled by teacher/customer, Refunded.