π Session Booking Journey
This journey documents how learners book 1:1 coaching sessions with their assigned coach using the Calendly integration.
Interactive Flow Diagramβ
Click any step to see detailed information, connected features, and API endpoints.
π
Learner Journey
Session Booking Journey
How learners book 1:1 coaching sessions with their assigned coach via Calendly integration.
π―Initiate
Check Available SessionsSystem
View Book Session CardLearner
β‘
Click Book SessionLearner
πSelect
Calendly Popup OpensSystem (Calendly)
β‘
Select DateLearner
Select Time SlotLearner
Confirm DetailsLearner
β
Confirm
Submit BookingLearner
Calendly Event CreatedSystem (Calendly)
Extract Event IDSystem (Frontend)
Verify Session in BackendSystem (Backend)
ππ
Show Success MessageSystem β Learner
Session Appears on DashboardLearner
Legend:
User Action
Decision Point
System Action
Notification
Milestone
Journey Summaryβ
| Attribute | Value |
|---|---|
| Actors | Learner, System, Calendly |
| Entry Point | Dashboard with assigned coach |
| Exit Point | Session booked and visible on dashboard |
| Typical Duration | 2-5 minutes |
| Steps | 14 |
Phase Breakdownβ
Phase 1: Initiateβ
Preparation and validation:
- System checks session quota -
noBookableCoachingSessions - BookSessionCard displays if quota available
- Learner clicks "Book Session" button
Phase 2: Selectβ
Calendly scheduling process:
- Calendly popup opens with coach's calendar
- Learner selects date from available options
- Learner selects time slot
- Details pre-filled from DeepSkill profile
Phase 3: Confirmβ
Booking confirmation and tracking:
- Learner submits booking
- Calendly creates event and sends invites
- Webhook fires to DeepSkill
- Backend verifies and stores session
- Dashboard updates with new session
Key Integration Pointsβ
External Servicesβ
- Calendly: Scheduling and calendar management
- Uses PopupModal for embedded booking
- Webhook integration for event creation
Internal APIsβ
POST /verify-calendly-session- Create IC session from Calendly eventGET /individual-coaching-sessions- Fetch user's sessionsGET /canceled-unscheduled-ic-sessions- Check canceled sessions
Frontend Componentsβ
BookSessionCard- Booking card with coach infoBookASession- Main booking interfaceCalendlyEmbed- Calendly popup wrapperPopupModal- Modal from react-calendly
Data Flowβ
ββββββββββββββ ββββββββββββ ββββββββββββββ βββββββββββββ
β Learner ββββββΊβ DashboardββββββΊβ Calendly ββββββΊβ Backend β
β β β β β Popup β β (Strapi) β
ββββββββββββββ ββββββββββββ ββββββββββββββ βββββββββββββ
β β β
β onClick β onEvent β
β "Book" β Scheduled β
βΌ βΌ βΌ
ββββββββββββ ββββββββββββ βββββββββββββ
βCalendlyIdββββββΊβ Extract ββββββΊβ Create β
β in Popup β β Event ID β β IC Sessionβ
ββββββββββββ ββββββββββββ βββββββββββββ
Calendly URL Constructionβ
The Calendly URL is constructed dynamically:
const calendlyUrl = `${coach.calendlyUrl}?email=${user.email}&name=${user.firstName}%20${user.lastName}`;
This pre-fills:
- Learner's email address
- Learner's full name
Session Quota Logicβ
const bookedSessions =
sessions.data?.filter(() => program).length! +
(canceledUnscheduledICSessions?.length ?? 0) <
(user?.noBookableCoachingSessions ?? 0);
A learner can book if:
- They have a coach assigned
- Their total sessions (booked + canceled) < quota
Related Documentationβ
- Attending Sessions Journey - What happens during the session
- Coach Session Request Process - Backend processing
- API Reference - Backend endpoints