Reserve multiple spots in group booking

Overview

Allow clients to reserve multiple spots in a single group meeting booking transaction. This feature enables one email/client to book multiple spots without creating separate booking records.

Approach: Single Booking with Multiple Spots

Current implementation - One email books multiple spots in a single transaction.

How it Works

  • Client selects number of spots (1-N, where N = spots remaining) in one booking form

  • System generates automatic question: "How many spots would you like to book?"

  • Single payment transaction for all spots

  • One booking record with spot quantity field

  • One confirmation email mentioning multiple spots


Feature Settings

Enabling the Feature

Location: Meeting settings page

UI Component: Checkbox with description

  • Checkbox Label: "Allow one client to book multiple spots in the same meeting"

  • Helper Text: "When enabled, a new question will be added to your booking form where clients can select the number of spots to book. [View help article to learn more]"

Behavior:

  • When checked → Automatically adds "How many spots would you like to book?" question to the Questions tab as the first question

  • When unchecked → Removes the question from booking form


Questions Tab Changes

Auto-Generated Question

Question Text: "How many spots would you like to book?"

  • Position: First question (above Name and Email fields)

  • Type: Dropdown

  • Default value: 1

Question Properties

Editable:

  • Question text can be edited

Non-Editable/Hidden:

  • Clone option: Removed (not available)

  • Delete option: Available but shows tooltip

  • Required setting: Always required (like Name/Email fields)

  • Hide option: Not available

  • Advanced properties: Kept for consistency

Delete Tooltip: "You have enabled the feature to reserve multiple spots in one booking. To remove this question, disable the setting."

Edit Modal Behavior

When editing this question:

  • Question text is editable

  • Options section header is kept (for consistency with form nano)

  • Info banner text: "The dropdown choices will automatically update based on the number of spots remaining"

  • Advanced properties section: Displayed but with limited options

  • Settings like "Required", "Hide" are removed (behaves like Name/Email fields)


Client Booking Page Experience

Question Display

Location: Above Name and Email fields

UI Components:

  1. Question: "How many spots would you like to book?"

  2. Dropdown: Default value = 1

  3. Info banner: Displays "X spots remaining" (dynamically loaded when page loads)

  • Lists numbers from 1 to (spots remaining)

  • Updates dynamically based on real-time availability

  • Client selects desired number of spots

UI Design Decision

Component choice: Dropdown (vs text field or number picker)

  • Engineering simplicity

  • Design team recommendation

  • Action item: Praveen to share final thoughts on dropdown vs number picker component and width constraints


Booking Details Display

Bookings Table View

Changes:

  • Add tag next to client name/email showing number of spots booked

  • Example: "John Doe (3 spots)" or badge showing "3 spots"

Purpose: Host can see at a glance how many people to expect (e.g., 2 clients but 4 total spots = 4 attendees)

Individual Booking Detail Page

Client Section Changes:

  • Show "X spots" tag next to client information

  • Display in responses section as well

Example:

  • If 3 spots booked: Show "3 spots" prominently

  • If 1 spot booked: Show "1 spot" or no tag (TBD)

  • Multiple clients example: Client A (3 spots), Client B (1 spot)

Responses Section:

  • Include the "How many spots would you like to book?" question

  • Display the answer (e.g., "3")


Email Notifications

Template Approach

  • Keep existing "Meeting scheduled" template (same as current group booking)

  • No change to email header

  • Customers haven't reported issues with current approach

Host Email Changes

Subject: Meeting scheduled - [Meeting Type] for [Date/Time]

Body Changes:

  1. Under "Responses" section: Include "How many spots would you like to book?" with answer

  2. Next to client name: Add tag showing number of spots booked

Example:

Client: John Doe (3 spots)
Email: [email protected]

Responses:
- How many spots would you like to book? 3
- [Other custom questions and answers]

Client Email Changes

Subject: Meeting scheduled - [Meeting Type] for [Date/Time]

Body Changes:

  • Same as host email

  • Show number of spots booked next to their information

  • Include response to spots question


Payment Handling

Display Logic

When setting is enabled:

  • Show "per spot" label next to price

  • If taxes exist: Show "per spot (+ tax)" in brackets

Example:

Price: ₹120 per spot
Tax: 5% per spot

Price Calculation Display

Simple Case (No discounts/taxes)

When spots = 1:

  • Amount payable: ₹120

When spots = 3:

  • Add breakdown section showing: "3 spots × ₹120"

  • Amount payable: ₹360

With Taxes/Discounts (Table view)

Format:

Item                                      Price
Yoga Class  5 spots (5 × $120.00)          ₹600
Tax (5%)                                    ₹30
─────────────────────────────────────────────
Total Amount Payable                        ₹630

Implementation Note:

  • Show "X spots × ₹Y" with reduced text size

  • Maintain consistency with recurring meeting display format

Payment Method

UPI Case (no table displayed):

  • Show price breakdown: "3 spots × ₹120 = ₹360"

  • Display final amount payable


Package Integration

Duration Calculation

Formula: Meeting duration × Number of spots = Package duration consumed

Example:

  • Meeting duration: 30 minutes

  • Spots booked: 3

  • Package duration consumed: 90 minutes

Validation

Scenario: Package has insufficient duration remaining

Error Message:

"You have exceeded the duration remaining in your package. 
Please remove additional spots to continue."

Note: Same logic as recurring meetings, but "slots" changed to "spots"

Recurring Meetings with Packages

Formula: Meeting duration × Number of spots × Number of sessions

Example:

  • Meeting duration: 30 minutes

  • Spots per session: 3

  • Number of sessions: 4

  • Total package duration consumed: 30 × 3 × 4 = 360 minutes


Data Export (Google Sheets/CSV)

Current Behavior

  • Each client gets one row in export

  • Shows client name, email, meeting details, etc.

New Behavior

Add new column: "Number of spots booked"

Example:

Name        Email              Meeting Date    Spots Booked
John Doe    [email protected]   Jan 15, 2025    3
Jane Smith  [email protected]   Jan 15, 2025    1

Technical Implementation

Settings Dependencies

Accept Payment Online

  • Payment amount = Base price × Spots selected

  • Display: "₹X per spot"

Split Payment

  • Split calculation across total amount (price × spots)

  • Each payee pays proportional amount of total

Taxes

  • Applied to total amount: (Base price × Spots) + Tax

  • Display: "per spot (+ tax %)"

Tip

  • Applied to total amount after spots calculation

Discount Codes

  • Same behavior as recurring bookings

  • Applied per spot (similar to per slot logic)

  • Validation considers total after spot multiplication


Cancellation & Rescheduling

Cancellation Rules

  • Full cancellation only - All spots must be cancelled together

  • No partial cancellation - Cannot cancel individual spots

  • Client cancels → All spots freed up

  • Host cancels → All reserved spots restored to availability

Rescheduling Rules

  • All spots rescheduled together

  • Cannot reschedule partial spots

  • Same number of spots must be available in new time slot

No-Show Handling

  • No partial no-shows

  • Mark entire booking (all spots) as no-show

  • Cannot mark individual spots as no-show


Edge Cases & Validations

Spot Availability Validation

Scenario: Number of spots selected > Number of spots remaining

Prevention:

  • Primary: Dropdown limits selections to available spots

  • Validation: Backend check before confirming booking

Error Message (if race condition occurs):

"Number of spots selected exceeds the spots remaining. 
Reload this page for latest availability."

Host Reduces Group Capacity

Scenario: Host changes max capacity from 10 to 5, but 9 spots already booked

Behavior:

  • Existing bookings (9 spots) remain valid

  • No new bookings allowed until spots < 5

  • System respects existing commitments

Field Code: Add support for pre-filling number of spots

Validation:

  • If pre-filled value > spots remaining → Default to 1

  • If pre-filled value ≤ spots remaining → Use pre-filled value

Example: ?spots=3

Package Expiry

  • Expiry determined by actual booking time, not meeting date

  • No change from current behavior

  • Not a real edge case


Reports & Analytics

Bookings by Client

  • Each spot counts as one booking by client

  • Total bookings = Sum of all spots across all bookings

  • Example: 2 bookings (3 spots + 2 spots) = 5 total bookings by client


UI Changes Summary

Settings Page

  • ✅ Checkbox to enable/disable feature

  • ✅ Helper text with link to help article

Questions Tab

  • ✅ Auto-generated "How many spots" question (first position)

  • ✅ Remove clone option

  • ✅ Delete tooltip explaining how to remove

  • ✅ Info banner in edit modal about auto-updating dropdown

  • ✅ Keep "Options/Choices" header for consistency

  • ✅ Remove "Required" and "Hide" settings (behaves like Name/Email)

Client Booking Page

  • ✅ Dropdown with default value = 1

  • ✅ Info banner showing "X spots remaining"

  • ✅ Positioned above Name and Email fields

Booking Details Page

  • ✅ Tag showing number of spots in bookings table

  • ✅ Tag showing number of spots next to client name

  • ✅ Display question/answer in responses section

  • ✅ Total number of clients will be = total number of spots.

Payment Page

  • ✅ "per spot" label next to price

  • ✅ Breakdown showing "X spots × ₹Y"

  • ✅ Table view for complex cases with taxes/discounts

Email Templates

  • ✅ Keep "Meeting scheduled" header

  • ✅ Add spots count next to client name

  • ✅ Include question/answer in responses section

Proposed changes by Kirti.

  1. Kept "Options" header for the sake of consistency. In our form nano for dropdowns the heading is already there. And could eliminate potential questions of "Where is the options". Suggested text is better I have updated it. "Choices" is better than "Options" imo.

  2. 100% agree, let's keep advanced properties.

  3. Same as 2.

  4. Yes, this will be the expected behaviour. Will mention in final video.

  5. Agreed, will mention in video. Also we can add tag in the table.

  6. We can go as per decision from engineering team.

Edge cases.

  1. I remember discussing this in PL call, and the decision was to do full cancellation. No support for partial cancellation. Because we can always add that in the future. Reason was -> We don't know how many people will use this, let's take it up on a request basis. No other notable competitor has this feature, hence the demand is uncertain. Let's keep it simple.

  2. Too much complexity for now, we can decide to take up in phase two. Implementation has already been scoped.

  3. Yes, this is the expected behaviour of existing group bookings.

  4. Similar to point 1, decision to not support partial no show. Can take up as per request.

  5. Yes, the same validation we have for package limit reached will be applicable. But currently we are do not have any error message shown. If remaining minutes < duration of meeting, we just show that the client has to pay, no error message.

  6. Here as well we do not support partial package. For example if 15 minutes remain, and meeting is 30 minutes, client still has to pay full price. Similarly if n x meeting duration > remaining in package, client can pay full. Consistent with existing logic, and we can take this up in phase 2 on requests.

  7. Yes, expected behaviour. Will mention in video.

  8. I don't think we should not reduce, if some slots are overbooked after the change, we can just show that there are no slots remaining. This is a customer decision, no need to block it if no harm imo. If overbooked after the change the host can reschedule. That's how group booking was designed.

  9. If number of spots pre-filled > remaining sports, and it is above it will default to 1. Will mention in video.

  10. Expected behaviour.

  11. As mentioned, if packages covers, booking is free, if not booking is fully paid. Just like existing logic for any other meeting type.

  12. Expected behaviour.

  13. Expected behaviour.

NOTED IMPROVEMENT: Only for recurring cases if package limit is exceeded do we show the error, in normal cases it shows the payment.

Recurring meeting edge cases.

  1. Expected behaviour. Will mention in video.

  2. We don't have such expiry. Expiry is based on usage date, not meeting date.

  3. Expected behaviour.

  4. Host is blocked from changing time if package is involved or bookings exist in group meeting. Edge case already handled.

  5. Expected behaviour.

  6. Not clear, no dependency on reserving spots feature.

  7. No dependency on this feature.

  8. Will not support in phase 1. Will have to cancel and rebook. Can include in phase 2. Will be complicate since we don't support editing the fields in the form when rescheduling. Will be dependent on that.

  9. No dependency.

  10. No dependency.

  11. No dependency.

  12. No dependency.

  13. Will be expected behaviour.

  14. Not an edge case because recurring meeting will be mapped to single client.

  15. Not an edge case.

Discount code.

As discussed in PL call, same can be applied here. Discount code only applicable for 1st meeting, or 1 spot. For simplicity. Can take up based on request.

Future enhancements.

  • Option to just collect the emails for notification purposes.

  • Allow host to limit number of spots per person.

Feature Limitations (Phase 1)

Not Supported

  1. Individual attendee details per spot

    • Cannot capture separate names/emails for each spot

    • Only booking client's information collected

    • May be added in future if explicitly requested

  2. Partial cancellation/rescheduling

    • Must cancel/reschedule all spots together

    • Too complex for initial release

  3. Partial no-shows

    • All-or-nothing no-show marking

    • Cannot mark subset of spots as no-show

  4. Different spots for recurring sessions

    • Same number of spots booked for all recurring sessions

    • Example: Book 3 spots → All sessions have 3 spots

    • Cannot vary spots per session

  5. Package partial coverage

    • Not handling cases where package only partially covers booking

    • Same limitation as current system